-
Новости от 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 не адаптировал. Но ничего, до следующего раза доживёт а там поправлю.
-
Владимир, небольшая поправочка:
здесь нужно оставить по старому: {$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 наблюдается глюк, код генерится форму вроде видно, но назначить события нельзя...
-
А в Delphi6-7 наоборот глюк получается. С IF Defined событие назначал на кнопку для теста, работало.
Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.
-
Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.Всё проще. Строка в mirror.pas 11931б раскомментарить в фигурных скобках чтобы стало: if (Trim( Source[ i ] ) = '') and
((Source[ I ][1] = ' ')) then
Если руками испралять везде долго, то: 1. Открываем пакадж, ставим опцию NO_NEWIF, Build. 2. Закрывае пакадж, открываем проект, пробегаем по формам (всё вертается на IFDEF/ENDIF 3. Закрываем проект, открываем пакадж, убираем опцию NO_NEWIF, Build. 4. Закрывает пакадж, открываем проект, пробегаем по юнитам с формами, (теперь IF где надо, где не надо - IFDEF), Build. Теперь всё как надо. Сейчас в D6 проверил - всё тоже работает. Это я какой-то глюк словил и с испугу закомментарил :)
-
11931 (б вместо ',' набил)
-
-
Я сегодня смотрел на bds2006, вроде работает. Но как там всё криво, однако. И на закрытии оболочки падает.
-
Огромный респек > Генерируемый код несколько отличается, > поэтому предусмотрена автоматическая конверсия при переходе > от прежних > версий Delphi к новым и наоборот, при загрузке проекта > в IDE.
т D[u]fa и Владимиру. Поставил на BDS2006. Работает > Генерируемый код несколько отличается, > поэтому предусмотрена автоматическая конверсия при переходе > от прежних версий Delphi к новым и наоборот, при загрузке проекта > в IDE.
А вот тут чего то не работает у меня, всё остается по старому.
-
Vladimir Kladov, криво в каком смысле?
кстати насчет автоконверта) не много не продумали, если запустить проект сделанный в 7ке на 2007 то автоконверт не сработает =) потому к форме доступа нету и мск не может генерить код =) зато запустив в 7ой срабатывает конверт и после этого мона на 2007 запускать.
падений у меня лично не наблюдалось. мб не из-за мск падает 2006 ?
-
>А вот тут чего то не работает у меня, всё остается по старому.
старая иде это ниже 6ой =)
-
Да, старая, это ниде 6-й. Если надо обратный конверт, я уже писал: пока что символом NO_NEWIF в пакете. В принципе, наверное, стоит добавить в TKOLProject типа дезайнтайм свойство NewIf, чтобы попроще конвертить.
Мне не понравилось что в BDS сразу изменения не отображаются, а если переключиться куда-нибудь в чужое окно и обратно, только тогда он спохватывается, и спрашивает, что раз файл загруженный в IDE изменился извне, то не перезагрузить ли его.
Вообще в нем code insight глючит не по детски. Хочет тултип всплыть, но только дрожит пустое белое окно. При ребилде пакета, он его сносит, и приходится еще раз Install делать.
Мне вообще не по нутру пришлась идея нового дизайнера содранная из MS VC + .NET. Почему на гигантском экране в 22" я не могу одновременно писать код и видеть форму. Я так привык и мне так удобней - как было раньше. Не, не буду переходить. К тому же под bds тянуть fast type не получится (кажется). А я уже привык по-своему текст набирать :)
-
насчет свойства NewIf поддерживаю. 2007 по лучше 2006 буит, хоть и не сильно. А вот к фаст тип я тоже привык, надо какой то порт под 2007, хотя эту версию еще не пробовал туда вставить
-
> A capability added to work easy with streams and files larger > then 4Gbytes. To do so, a symbol STREAM_LARGE64 must be > included to the project options.
Bu report: The size cannot be set greater than MaxInt.
begin
with NewWriteFileStream('test')^ do
try
Size := Int64(MaxInt) + 1;
finally
Free;
end;
end.
A file of 0 bytes is created :-( The following VCL code works correctly:
begin
with TFileStream.Create('test', fmCreate) do
try
Size := Int64(MaxInt) +1;
finally
Free;
end;
end;
Conditional STREAM_LARGE64 is defined.
-
I have a fix for the stream size bug: function FileSeek Line 20780 Result := SetFilePointer(Handle, DWORD( MoveTo ), nil, Ord( MoveMethod ) ) Change to: Result := SetFilePointer(Handle, I64(MoveTo).Lo , @I64(MoveTo).Hi , Ord( MoveMethod ) ) Also may need this: procedure SetSizeFileStream Line 25020 P: DWORD; Change to: P: TStrmSize; Hope that it helps.
-
> [5] mdw © (29.10.07 11:36) > Доступно на http://www.kolnmck.ru/files1.shtml
Не плохо было бы включить туда пакеты для старших версий… Сделал пакет для КОЛ, добавил файлы, поставилось. Сделал пакет для Грашей, добавил файлов, он автоматически в requires добавил MirrorKOLPackageD2007, но при установке выдает: [DCC Error] GRushControls_D2007.dpk(30): E1026 File not found: 'MirrorKOLPackageD2007.drf' Название пакета верное… Файла такого действительно нигде на жестком нет…
-
> [0] Vladimir Kladov © (28.10.07 17:54) > Генерируемый код несколько отличается, > поэтому предусмотрена автоматическая конверсия при переходе > от прежних > версий Delphi к новым и наоборот, при загрузке проекта > в IDE. > Изменения начинают работать начиная с Delphi6 и Delphi7 > (хотя в этих > версиях MCK работает и без нового кода).
Вот тут поподробнее. Т.е. что-бы конвернуть старый проект, нужно открыть его на новом коле в дельфи 6 или 7 ?
Я открыл старый проект сразу в 2007, она его не распознает как VCL, считает его Вин32 проектом.
-
> [15] homm © (30.10.07 07:36) > Т.е. что-бы конвернуть старый проект, нужно открыть его > на новом коле в дельфи 6 или 7 ?
Так и сделал, ИФДЕФЫ сменились, но 2007 все равно не считает проект VCL-ным.
-
homm
а тут так?
{$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}//<---
-
> [17] D[u]fa © (30.10.07 08:44) > а тут так?
В самом файле проекта не сменились, остались {$IFDef}, поменял в ручную, эффект тот-же.
-
{IF Define(KOL_MCK)}///<- uses Windows,.....надо поменять на {$IFDef KOL_MCK}, а то не работает.
-
угу именно я ж писал выше, что надо менять. и после этого закрыть проект и заново открыть и в мирор.пас, как писал Владимир, надо сделать изменение что б мск генерил пральный код
-
Thank you, I'll fix it.
-
Я уже сделал, чтобы конверсия шла не сборкой пакета, а перез свойство в TKOLProject. Махом меняет, в любой Delphi.
У меня кстати в одном модуле конвертер не справился с конверсией IFDEF'ов которые внутри uses. Уж больно много там было еще и моих IFDEF'ов. А тут еще сам Delphi решил вмешаться, что-то продублировал, что-то куда-то перенёс, после у него совсем крыша съехала, и он стал проект загружать. Пришлось в блокноте открывать и всё руками исправлять. Так что с автоматикой поосторожнее надо.
-
Пакет лучше не конвертить, а новый сделать. Добавить mirror.pas, mckObjs.pas и mckCtrls.pas, и символ условной компиляции INPACKAGE. И сохранить, затем собрать и установить.
-
а я выкладывал же, у меня с ним работает. хотя от 7ой подойдет тоже
|