Форум: "KOL";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
ВнизВерсия 2.84 Найти похожие ветки
← →
Vladimir Kladov © (2007-10-28 17:54) [0]
Новости от 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 не адаптировал. Но ничего, до следующего раза доживёт а там поправлю.
← →
D[u]fa © (2007-10-28 18:46) [1]Владимир, небольшая поправочка:
здесь нужно оставить по старому:
{$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 наблюдается глюк, код генерится форму вроде видно, но назначить события нельзя...
← →
Vladimir Kladov © (2007-10-28 20:19) [2]А в Delphi6-7 наоборот глюк получается. С IF Defined событие назначал на кнопку для теста, работало.
Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.
← →
Vladimir Kladov © (2007-10-28 20:32) [3]
Сейчас погляжу, там кажется немного поправить можно чтобы и так было и эдак.
Всё проще. Строка в 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:36) [4]11931 (б вместо "," набил)
← →
mdw © (2007-10-29 11:36) [5]Доступно на http://www.kolnmck.ru/files1.shtml
KOL v.2.84 (28.10.2007)
KOL&MCK v.2.84 (28.10.2007)
KOLnMCK-CE v.2.80-Rev.219 (23.10.2007)
← →
Vladimir Kladov © (2007-10-29 15:50) [6]Я сегодня смотрел на bds2006, вроде работает. Но как там всё криво, однако. И на закрытии оболочки падает.
← →
SergeR © (2007-10-29 15:56) [7]Огромный респек
> Генерируемый код несколько отличается,
> поэтому предусмотрена автоматическая конверсия при переходе
> от прежних
> версий Delphi к новым и наоборот, при загрузке проекта
> в IDE.
т D[u]fa и Владимиру.
Поставил на BDS2006. Работает
> Генерируемый код несколько отличается,
> поэтому предусмотрена автоматическая конверсия при переходе
> от прежних версий Delphi к новым и наоборот, при загрузке проекта
> в IDE.
А вот тут чего то не работает у меня, всё остается по старому.
← →
D[u]fa © (2007-10-29 16:10) [8]Vladimir Kladov, криво в каком смысле?
кстати насчет автоконверта) не много не продумали, если запустить проект сделанный в 7ке на 2007 то автоконверт не сработает =) потому к форме доступа нету и мск не может генерить код =) зато запустив в 7ой срабатывает конверт и после этого мона на 2007 запускать.
падений у меня лично не наблюдалось. мб не из-за мск падает 2006 ?
← →
D[u]fa © (2007-10-29 16:32) [9]>А вот тут чего то не работает у меня, всё остается по старому.
старая иде это ниже 6ой =)
← →
Vladimir Kladov © (2007-10-29 18:22) [10]Да, старая, это ниде 6-й. Если надо обратный конверт, я уже писал: пока что символом NO_NEWIF в пакете. В принципе, наверное, стоит добавить в TKOLProject типа дезайнтайм свойство NewIf, чтобы попроще конвертить.
Мне не понравилось что в BDS сразу изменения не отображаются, а если переключиться куда-нибудь в чужое окно и обратно, только тогда он спохватывается, и спрашивает, что раз файл загруженный в IDE изменился извне, то не перезагрузить ли его.
Вообще в нем code insight глючит не по детски. Хочет тултип всплыть, но только дрожит пустое белое окно. При ребилде пакета, он его сносит, и приходится еще раз Install делать.
Мне вообще не по нутру пришлась идея нового дизайнера содранная из MS VC + .NET. Почему на гигантском экране в 22" я не могу одновременно писать код и видеть форму. Я так привык и мне так удобней - как было раньше. Не, не буду переходить. К тому же под bds тянуть fast type не получится (кажется). А я уже привык по-своему текст набирать :)
← →
D[u]fa © (2007-10-29 19:29) [11]насчет свойства NewIf поддерживаю. 2007 по лучше 2006 буит, хоть и не сильно. А вот к фаст тип я тоже привык, надо какой то порт под 2007, хотя эту версию еще не пробовал туда вставить
← →
Jon © (2007-10-29 19:59) [12]
> 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.
← →
Jon © (2007-10-30 03:52) [13]I have a fix for the stream size bug:
function FileSeek
Line 20780Result := 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 25020P: DWORD;
Change to:P: TStrmSize;
Hope that it helps.
← →
homm © (2007-10-30 07:21) [14]> [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"
Название пакета верное… Файла такого действительно нигде на жестком нет…
← →
homm © (2007-10-30 07:36) [15]> [0] Vladimir Kladov © (28.10.07 17:54)
> Генерируемый код несколько отличается,
> поэтому предусмотрена автоматическая конверсия при переходе
> от прежних
> версий Delphi к новым и наоборот, при загрузке проекта
> в IDE.
> Изменения начинают работать начиная с Delphi6 и Delphi7
> (хотя в этих
> версиях MCK работает и без нового кода).
Вот тут поподробнее. Т.е. что-бы конвернуть старый проект, нужно открыть его на новом коле в дельфи 6 или 7 ?
Я открыл старый проект сразу в 2007, она его не распознает как VCL, считает его Вин32 проектом.
← →
homm © (2007-10-30 07:42) [16]> [15] homm © (30.10.07 07:36)
> Т.е. что-бы конвернуть старый проект, нужно открыть его
> на новом коле в дельфи 6 или 7 ?
Так и сделал, ИФДЕФЫ сменились, но 2007 все равно не считает проект VCL-ным.
← →
D[u]fa © (2007-10-30 08:44) [17]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}//<---
← →
homm © (2007-10-30 09:02) [18]> [17] D[u]fa © (30.10.07 08:44)
> а тут так?{IF Define(KOL_MCK)}
В самом файле проекта не сменились, остались {$IFDef}, поменял в ручную, эффект тот-же.
← →
SergeR © (2007-10-30 10:00) [19]{IF Define(KOL_MCK)}///<-
uses Windows,.....надо поменять на
{$IFDef KOL_MCK}, а то не работает.
← →
D[u]fa © (2007-10-30 11:09) [20]угу именно я ж писал выше, что надо менять. и после этого закрыть проект и заново открыть и в мирор.пас, как писал Владимир, надо сделать изменение что б мск генерил пральный код
← →
Vladimir Kladov © (2007-10-30 16:36) [21]Thank you, I"ll fix it.
← →
Vladimir Kladov © (2007-10-30 16:41) [22]Я уже сделал, чтобы конверсия шла не сборкой пакета, а перез свойство в TKOLProject. Махом меняет, в любой Delphi.
У меня кстати в одном модуле конвертер не справился с конверсией IFDEF"ов которые внутри uses. Уж больно много там было еще и моих IFDEF"ов. А тут еще сам Delphi решил вмешаться, что-то продублировал, что-то куда-то перенёс, после у него совсем крыша съехала, и он стал проект загружать. Пришлось в блокноте открывать и всё руками исправлять. Так что с автоматикой поосторожнее надо.
← →
Vladimir Kladov © (2007-10-30 17:02) [23]Пакет лучше не конвертить, а новый сделать. Добавить mirror.pas, mckObjs.pas и mckCtrls.pas, и символ условной компиляции INPACKAGE. И сохранить, затем собрать и установить.
← →
D[u]fa © (2007-10-30 18:53) [24]а я выкладывал же, у меня с ним работает. хотя от 7ой подойдет тоже
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2008.09.21;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.008 c