![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 2.84 [Delphi, KOL/MCK, Windows]
Vladimir Kladov © (2007-10-28 17:54:00)
Новости от 28 октября 2007 (KOL & MCK v2.84)
[+] Важно: благодаря D[u]fa, MCK теперь работает и на BDS2005-BDS2007,
а так же на Turbo Delphi. Генерируемый код несколько отличается,
поэтому предусмотрена автоматическая конверсия при переходе от прежних
версий Delphi к новым и наоборот, при загрузке проекта в IDE.
Изменения начинают работать начиная с Delphi6 и Delphi7 (хотя в этих
версиях MCK работает и без нового кода). Для восстановления генерации
прежнего кода MCK следует пересобрать с опцией NO_NEWIF.
[*] TLIST_FAST:
- добавлено свойство UseBlocks в секцию public, чтобы легче было
изменять его при создании списков, для которых эта возможность
индивидуально не используется, даже при наличии TLIST_FAST в опциях;
- для ряда функций (методов), асм-версия которых не работает корректно
с TLIST_FAST, асм-код отключён;
- для многих функций и методов в Паскаль-версии обращение к fItems
заменено либо на Items безусловно, либо по условию TLIST_FAST.
[+] Добавлена возможность работать с потоками и файлами размером более
4Гбайт. Для этого следует в опции проекта включить символ условной
компиляции STREAM_LARGE64. В любом случае объявления многих функций
потоков несколько изменились и это может вызвать несовместимость с
какими-либо старыми компонентами, поэтому предусмотрена возможность
устранения такой несовместимости, включив символ STREAM_COMPAT. На
данный момент совместимость обеспечена для пакета KOLZlib, при
необходимости будут выполнены изменения и в других зависимых от
потоков пакетах.
Так же, изменена функция FileSeek и удалена функция FileFarSeek.
[+] Добавлена возможность конкатенации двух потоков (функция
NewConcatStream) произвольной природы и размера в один объект, делее
рассматриваемый программой как обычный поток данных.
[+] Добавлен метод TIcon.SetHandleEx, позволяющий присвоить объекту
пиктограммы дескриптор иконки без извлечения из неё битмапов и их
анализа для установки размера (размер должен быть предварительно
установлен вашим программным кодом тем не менее). Данный вариант
быстрее, и всегда работает в Windows9x (где извлечение битмапов по
дескриптору иконки может не работать).
[-] Для UNICODE_CTRLS:
- Str2DateTimeShort:Тип параметра изменён (String->KOLString);
- и исправлен порядок вычисления формата (строки).
[*] Внутреннее изменение: во избежание путаницы список подчинённых
элементов меню теперь называется FMenuItems вместо прежнего FItems.
[-] В обработчик сообщений комбо-бокса добавлена проверка видимости
контрола перед обработкой WM_COMMAND (иначе система обеспечивала
выпадание списка для невидимого в настоящий момент комбо-бокса по
кнопке F4, если до сокрытия родительской панели комбо-бокс был (и
остался) в фокусе ввода.
[-] В обработчике WndProcTransparent выполнены изменения (by homm),
которые исправляют прозрачность для соседних контролов (учитывая не
только прозрачных родителей, но и DoubleBuffered).
[-] MCK: Для TKOLScrollox свойство OverrideScrollbars добавлено, для
TKOLScrollbar удалено.
Будете собирать общий пакет, обратите внимание: mckToolbarEditor.inc больше не нужен.
Эх, под Delphi2/3 не адаптировал. Но ничего, до следующего раза доживёт а там поправлю.
Vladimir Kladov (2007-10-28 20:36:00) [21]11931 (б вместо ',' набил)
Vladimir Kladov (2007-10-28 20:32:00) [22]
Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.
Всё проще. Строка в mirror.pas 11931б раскомментарить в фигурных скобках чтобы стало:
if (Trim( Source[ i ] ) = '{$IFDEF KOL_MCK}') and
((Source[ I ][1] = ' ')) then
Если руками испралять везде долго, то:
1. Открываем пакадж, ставим опцию NO_NEWIF, Build.
2. Закрывае пакадж, открываем проект, пробегаем по формам (всё вертается на IFDEF/ENDIF
3. Закрываем проект, открываем пакадж, убираем опцию NO_NEWIF, Build.
4. Закрывает пакадж, открываем проект, пробегаем по юнитам с формами, (теперь IF где надо, где не надо - IFDEF), Build. Теперь всё как надо. Сейчас в D6 проверил - всё тоже работает. Это я какой-то глюк словил и с испугу закомментарил :)
Vladimir Kladov (2007-10-28 20:19:00) [23]А в Delphi6-7 наоборот глюк получается. С IF Defined событие назначал на кнопку для теста, работало.
Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.
D[u]fa (2007-10-28 18:46:00) [24]Владимир, небольшая поправочка:
здесь нужно оставить по старому:
{$IFDef KOL_MCK}///<-
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes,
mckObjs, Controls, mckCtrls, SysUtils {$IFEND (place your units here->)};
{$ELSE}
{$I uses.inc}
Windows, Messages, Classes, Controls, Forms, mirror;
{$ENDif}//<---
а на данный момент МСК конвертит в:
{$IF Defined(KOL_MCK)}<<<
uses Windows, Messages, KOL {$IF Defined(KOL_MCK)}{$ELSE}, mirror, Classes,
mckObjs, Controls, mckCtrls, SysUtils {$IFEND (place your units here->)};
{$ELSE}
{$I uses.inc}
Windows, Messages, Classes, Controls, Forms, mirror;
{$ifend}<<<
иначе в 2007 наблюдается глюк, код генерится форму вроде видно, но назначить события нельзя...