![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 2.40 [Delphi, KOL/MCK, Windows]
Vladimir Kladov © (2006-10-14 12:25:00)Новости от 14 октября 2006 г.
Новости KOL и MCK (v2.40):
[*]KOL: добавлен символ NOT_USE_RICHEDIT, применим, если не
используются контролы rich edit. Отключает весь код, связанный с rich
edit, и ссылку в секции uses на модуль richedit, экономит около 60
байт кода.
[*]KOL: добавлен символ USE_GRAPHCTLS, следует использовать, если в
проекте используются графические контролы, иначе экономится более 100
байт в коде.
[*]KOL: теперь TControl.Caption представляется строкой (AnsiString в
обычном случае, WideString в случае UNICODE_CTRLS).
[*]KOL: в случае SMALLEST_CODE свойство Icon более не назначается
автоматически из ресурса MAINICON для формы/апплета при создании окна,
если не было назначено своим кодом. В противоположном случае (символ
SMALLEST_CODE не используется) теперь можно использовать символ
CUSTOM_APPICON, чтобы использовать собственное имя ресурса для главной
пиктограммы.
[*]KOL: комментарии к TTimer исправлены (давно уже используется не
окно Applet, а отдельное собственное окно).
[+]KOL: добавлена константа Infinity (бесконечное число, как 1/0, в
коде для Free Pascal появляться не будет).
[+]KOL: добавлена функция IsInfinity.
[-]KOL: исправление для версий Delphi 2, 3: удалена директива
{$EXTERNALSYM}, обеспечен вызов inherited для Init в TStrList,
TThread.
[*]KOL: в случае UNICODE_CTRLS функции MsgOK, MsgBox, ShowMsg так же
работают со строкой Unicode и используют соответствующие версии
API-функций.
[*]KOL: добавлен символ CRASH_DEBUG для интенсивного тестирования
обращения к неверной памяти: вся память объекта после деструктора
забивается байтами с шестнадцатеричным кодом $DD.
[+++]KOL: добавлен символ NOT_USE_AUTOFREE4CONTROL. Теперь большую
часть действий по уничтожению подчиненных объектов в деструкторе берет
на себя список fAutoFree, с этой опцией все возвращается к исходному
состоянию. Новый код короче на пару сотен байт.
[*]KOL: изменен метод TObj.Final: объекты, добавленные в список
fAutoFree, уничтожаются теперь в обратном порядке.
[+]KOL: добавлены методы TObj.RemoveFromAutoFree, RemoveFromAutoFreeEx.
[***]KOL: изменен порядок обработки сообщений с целью аккуратного
уничтожения отработавших форм, и корректного завершения приложения.
Изменения в WndFunc, TerminateExecution (asm-версия). Исправлено
неотрабатывание деструкторов форм при завершении приложения.
[+]KOL: добавлен символ BUTTON_DBLCLICK_AS_CLICK: при его наличии
двойной клик левой клавишей мыши на всех кнопках превращается в два
клика в любом случае.
[+]KOL: добавлен символ DEFAULT_CANCEL_BTN_EXCLUSIVE: при его наличии
DefaultBtn и CancelBtn взаимоисключают друг друга. По умолчанию теперь
можно назначать оба эти свойства для кнопки в true одновременно.
[+]KOL: добавлен символ NO_DEFAULT_BUTTON_BOLD: при его наличии кнопка
с DefaultBtn = true не выделяется своей утолщенной границей (не
назначается стиль BS_DEFPUSHBUTTON, но функциональность сохраняется).
[+]KOL: добавлен символ CLICK_DEFAULT_CANCEL_BTN_DIRECTLY: при его
наличии кнопка по умолчанию и кнопка отмены нажимаются не визуально
без передачи фокуса кнопке.
[-]KOL: asm-версии методов TControl.DoSetFocus, TControl.GetHasBorder,
TControl.SetVerticalAlign, TControl.DC2Canvas, TControl.SetTransparent
приведены в соответствие с Паскаль-версиями.
[-]KOL: исправления в методе TControl.IsMainWindow.
[-]KOL: прежняя обработка WM_ENDSESSION в процедуре WndProcForm
отключена (фактически выполняла немедленное завершение приложения
через вызов Halt), теперь этот код можно специально включить символом
ENDSESSION_HALT.
[-]KOL: исправлена процедура JustOneNotify (asm-версия).
[*] Минимальное приложение с пустой формой (без заголовка, со
значениями DefaultSize=true, DefaultPos=true - в случае MCK) занимает
при компиляции в Delphi5 (с заменой системных модулей, при включении
оптимизации и отключении отладочной информации, с символами
SMALLEST_CODE и NOT_USE_RICHEDIT) всего 10,5Кбайт.
[*] В MCK поддержка KOLCtrlWrapper отключена (перестала
функционировать), так что внешний вид формы на этапе разработки теперь
значительно меньше похож на то, что видно после запуска (то есть
теперь NOT_USE_KOLCTRLWRAPPER по умолчанию включен, обратно включать
не следует).
Прочие новости:
[*]написание Книги о KOL продвинулось еще немного - уже 170 страниц.
Новейшую версию пока брать на сайте kolnmck. Обновления - там же (сайт
bonanzas.rinet.ru пока что неисправен).
Vedun (2006-10-22 22:32:00) [21]У меня есть Linux Mandrake 10.1 и ASP 10. Так что тоже буду по возможности помогать в тестировании.
Vladimir Kladov (2006-10-22 14:25:00) [22]Спасибо, поправим. Ну, линк то я оставил, мышкой хлопнуть не проблема.
MTsv DN (2006-10-22 13:02:00) [23]Опечатка на http://kol.thaddy.co.uk/e_downloads.htm:
MCK v2. 30 21-Oct-2006 722K
MTsv DN (2006-10-22 12:57:00) [24]
> да, кстати, я еще никогда не делал redirection. Странная
> вещь, но ослик переходит автоматом, а опера почему-то не
> хочет. Тут не специалистов по javascript? что я неправильно
> написал:
>
> <body ............
> onload='document.URL=" http://kol.thaddy.co.uk";document.
> refresh();'>
А почему именно на Яве... Некоторые ЯваСкрипты отключают. Может такой код подойдет:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="refresh" content="1;url= http://kol.thaddy.co.uk">
<title>Redirect...</title>
</head>
<body>
</body>
</html>
ANTPro (2006-10-22 11:24:00) [25]> [84] Vladimir Kladov (22.10.06 09:45)
> Рано еще. Можно пока протестировать то, что сделал Gandalf
> (у него Qt).
А где можно найти архивчик?
Vladimir Kladov (2006-10-22 11:17:00) [26]да, кстати, я еще никогда не делал redirection. Странная вещь, но ослик переходит автоматом, а опера почему-то не хочет. Тут не специалистов по javascript? что я неправильно написал:
<body ............
onload='document.URL=" http://kol.thaddy.co.uk";document.refresh();'>
Vladimir Kladov (2006-10-22 11:14:00) [27]давно пора было исправить на kolnmck, сделаю постепенно. У меня там еще несколько линков на mastak осталось. Вообще можно ожидать много битых ссылок. Например, архивы от Тэдди я решил не дублировать, потом перелинкую их на его файлы - сервер-то один.
D[u]fa (2006-10-22 10:14:00) [28]Сайтец работает вродь норм, пока обратил внимание только на ссылки типа " Наиболее свежая версия KOL и MCK в одном архиве с сайта kol.mastak.ru. ", выдает явно чето не то
Vladimir Kladov (2006-10-22 09:45:00) [29]Рано еще. Можно пока протестировать то, что сделал Gandalf (у него Qt).
vampir_infernal (2006-10-22 07:53:00) [30]Если что, могу помочь с тестированием кода в линукс (Slackware 10.2)
Vladimir Kladov (2006-10-22 01:47:00) [31]Все, практически закачал. Новый адрес: http://kol.thaddy.co.uk. Меняйте ссылки (здесь, на kolnmck и на других сайтах тоже). Я попробую как-то наладить на старом сайте хотя бы обявление, что переехал.
ANTPro (2006-10-21 22:00:00) [32]Vladimir Kladov (21.10.06 21:44) [80]
мультиплатформенность
Наконец-то :)
Vladimir Kladov (21.10.06 21:44) [80]
Первый на очереди - Linux
У меня есть:
KNOPPIX V4.0.2CD-2005-09-23-EN, SuSE Linux-9.3-LiveDVD-i386-1 и какой-то Linux Compact
Могу протестировать если что...
Правда только после покупки нового винта (через неделю) ...
Vladimir Kladov (21.10.06 21:44) [80]
Ну, можно протестировать, как грузится первая страница.
Без проблем :)
Vladimir Kladov (2006-10-21 21:44:00) [33]я не зря оттягивал переход к версии 2.41 от 2.40, подставляя буковки. Со следующей версии грядут серьезные изменения, в большом количестве. Разумеется, максимальная совместимость с прежними проектами почти гарантируется. Но в некоторых случаях придется кое-что менять. Например, FindFirstFile использовать все еще можно будет, но сам KOL будет использовать свои Find_First, Find_Next и Find_Close, соответственно, поломается проект, использующий OnItem у TDirList (решается просто, пересозданием события и копированием в него старого кода). Т.е. это не фатально. Асм-версия почти целиком уходит в отдельный файл KOL_ASM.inc. Иначе просто некуда больше увеличивать код (если помните, проблема с ограничением 65535 строк, после чего дебугер в дельфях теряет ориентацию). Так удается сократить KOL.PAS до 50000 строк (и около 16000 строк - асм-версия). И можно ехать дальше. А дальше у меня в плане - мультиплатформенность. Пока я не начал как следует ковыряться, я говорить особенно не хотел. Теперь думаю, что это - реально. Первый на очереди - Linux. В качестве GUI беру GTK+, версию для Win32 я уже скачал и поставил, (если кто хочет повторить, отсюда: http://www.gimp.org/~tml/gimp/win32/downloads.html, пункт 2, а не 1 - если кто вроде меня не очень понимает, что это такое). Заголовки я вытянул из кайликса, для Libc, для gtk - взял на сайте ftp.freepascal.org, надеюсь, этого хватит. Если кто-то потом захочет Qt, а не Gtk, то это тоже реализуемо - через IFDEF'ы (код для GTK выносится в отдельный inc-файл, вместо него можно будет и Qt подставить, да хоть чистый XLib или Motif или Xt). А пока заливаю сайт свой kol.thaddy.co.uk, он мне дает место (много места, спасибо!). Там и будет мой сайт теперь жить. Вот только заливается немного медленно, 4-5К в секунду, это все, что может мой диал-ап выжать. Так что в гости ходить пока рановато. Ну, можно протестировать, как грузится первая страница.
AndreyRus (2006-10-21 15:30:00) [34]
> На второй форме, из-за строчки:Button1.Parent := ComboBox1;
> форма не закрывается... Если через Alt+F4, то вылет проги,
> а если через "х", то завис...
<
> > Button1.Parent.RemoveFromAutoFree( Button1 )Спасибо...
> То что надо...
/I>
Раз такое дело, то может лучше автоматизировать, чем знать об этом. Например создать в KOL функцию - SetParent, содержащую данный код, а Parent по возможности инкапсулировать.
MTsv DN (2006-10-20 19:52:00) [35]> Button1.Parent.RemoveFromAutoFree( Button1 )
Спасибо... То что надо...
Vladimir Kladov (2006-10-20 18:41:00) [36]
procedure TForm1.Button1Click(Sender: PObj);
begin
NewForm2(Form2, Applet);
Form2.Form.ShowModal;
Form2.Form.Free;
Form2.Form := nil;
end;
Когда выполняется Form2.Form.Free, то автоматом дестроится и Form2, т.к. она привязана к своей Form по Add2AutoFree. Получается, что вы меняете память, которая вам уже не принадлежит. Для зануления надо все-таки Form2 := nil.
Ну, это так, к слову. Теперь, с 2.40, если вы Parent присвоили, родителю делается еще и вызов Add2AutoFree. Получается, что ваш button 2 раза прикреплен к авто-фри (еще и к форме, к которой он был прикреплен изначально). Надо сделать автоматический вызов Button1.Parent.RemoveFromAutoFree( Button1 ), а пока вы сами такой добавьте, перед сменой родителя (RemoveFromAutoFree ничего не делает, если там уже ничего нет, так что если потом забудете убрать, ничего страшного). Или самое простое: возврат к прежнему способу NOT_USE_AUTOFREE4CONTROLS.
По этой же причине могут ломаться старые контролы, сделанные методом вложения в наследник от TObj. Самое простое - поправить такой компонент, вызвав в его NewXXXX для "вложенного" TControl такое же открепление от parent'а (он должен освобождаться именно при уничтожении самого TObj, в который вложен автоосвобождаемый TControl).
Что-то мой сайт не ремонтируется. Пойду к Тэдди, он мне место дает, сейчас протестирую, и за выходные заливать начну потихоньку. Спасибо!
D[u]fa (2006-10-19 22:19:00) [37]ога, прям нашествие багов попёрело %)
Vladimyr (2006-10-19 20:14:00) [38]что-то весь КОЛ колбасит :)
D[u]fa (2006-10-19 18:48:00) [39]Vladimir Kladov, а про овнера меню и странное выпадание ошибки в Плисте, смотрели?
MTsv DN (2006-10-19 18:34:00) [40]> Если через Alt+F4, то вылет проги, а если через "х", то завис...
Это если трейссить в Дельфи, а если просто запустить, то ошибка при повторном вызове...