![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия 2.03 [Delphi, KOL/MCK, Windows]
Владимир Кладов © (2004-12-19 20:38:00)Новости от 19 декабря 2004
Новости KOL и MCK (v2.03):
[-]KOL: в вызове обработчика OnTVExpanding (asm-версия) исправлена проблема с интерпретацией возвращаемого обработчиком результата. За репортаж и исправление спасибо: Viman.
[+]KOL: Добавлены методы TControl.TBMoveBtn, TBConvertIdxArray2ID, TBButtonSeparator - дл тулбара (автор TR"]F). MCK: Добавлено свойство TKOLToolbar.generateVariables. Если true, создаются не константы, а переменные, и для них автоматически вызывается новый метод TBConvertIdxArray2ID для присваивания ID этим переменным, вместо индексов кнопок.
[+]KOL: Добавлены свойство TObj.Name и функция FindObj, используются в коде ТОЛЬКО если в свойства проекта добавлен символ условной компиляции USE_NAMES. MCK: для ового свойства Name, добавлена генерация кода.
[*]KOL: функция Abs удалена из KOL. По совету Сергея Шишминцева.
[-]KOL: Когда свойству TOpenDirDialog.InitialPath устанавливается путь на корневую директорию диска, завершающий символ '\' обеспечивается, в то время как для прочих случаев, как и раньше, он устраняется. Исправлние от Сергея Шишминцива.
Прочие новости:
[-]PC-Asm обновлен (работает еще быстрее, особенно при повторной компиляции).
SPeller (2004-12-28 11:54:00) [1]Всегда менял у KOLForm. Наверное я что-то пропустил пока меня небыло.
RA (2004-12-27 09:08:00) [2]2SPeller
Надо менять св-во Caption не у KOLForm, а у самой формы.
SPeller (2004-12-27 02:22:00) [3]Delphi 6.02, KOL/MCK 2.05 - Не изменяется KOLForm.Caption - всегда Form1. Остальные свойства вроде нормально изменяются.
Владимир Кладов (2004-12-26 10:45:00) [4]Новости от 26 декабря 2004 года
Новости KOL и MCK (v2.05):
[-]KOL: исправлено присваивание свойству TControl.LVColImage значения -1. Спасибо: non за исправление.
[-]KOL: для случая когда определен символ USE_NAMES: объекты с пустыми именами не добавляются в список NamedObjectsList. Спасибо за сообщение об ошибке Дмитрию Жарову a.k.a. Gandalf.
Прочие новости:
[+]добавлен KOLIndy - частичная адаптация сетевых компонентов Indy для KOL, автор non, см. в Дополнениях/Сеть.
[+]добавлен компонент dragnDrop - для перетаскивания мышью чего-либо из формы KOL в другие приложения, автор non, см. в Дополнениях/Утилитах.
[+]добавлен компонент KolDirMon - для показа содержимого директории и контроля изменений на диске, автор non, см. в Дополнениях/Контролах.
[+]добавлен компонент UMLI (без MCK-зеркала) для организации много-языкового интерфейса, автор non, см. в Дополнениях/Утилитах.
Владимир Кладов (2004-12-26 09:53:00) [5][+]KOLIndy - adaptation of some stuff from Indy networking components library for KOL by non added, see in Adds/Networking.
[+]dragnDrop - component by non added for drag something from KOL form to another application, see in Adds/Utilities.
[+]KolDirMon - component by non added to show directory content and update view when something is changed on disk, see in Adds/Controls.
[+]UMLI - component by non (without MCK mirror) to implement multi-language interface, see in Adds/Utilities.
Gandalf (2004-12-22 22:19:00) [6]Нашел баг
procedure TObj.SetName(const NewName: String);
begin
if FName <> '' then
begin
NamedObjectsList.Remove( @ Self );
FName := '';
end;
if FindObj( NewName ) <> nil then Exit; // prevent duplications!
FName := NewName;
if FName<>'' then // <- Вот баг, вернее уже фикс.
NamedObjectsList.Add( @ Self );
end;
Пример.
Создаем object без имени - таких до черта.
Он добавляеться.
Долее уничтожаем их - один за другим.
Поскольку Fname='' (он как был без имени так и остался) - то он не
выводиться из системы. Но уничтожаеться. Теперь при FindObj натыкаемся
на пустышку :(
Можно либо вообще запретить имена такого вида. Либо при уничтоженни
применять не пустое имя - а скажем '!' - признак вывода из системы -
т.е.
procedure TObj.SetName(const NewName: String);
begin
if FName <> '!' then
begin
NamedObjectsList.Remove( @ Self );
FName := '!';
exit;
end;
if FindObj( NewName ) <> nil then Exit; // prevent duplications!
FName := NewName;
NamedObjectsList.Add( @ Self );
end;
Только тогда в Destroy надо не Name:='' а Name:='';
miek (2004-12-22 22:13:00) [7]Предлагаю вынести из KOL объект TCabFile.
Владимир Кладов (2004-12-21 19:27:00) [8]ОК, вошло:
Новости 21 декабря 2004
Новости KOL и MCK (v2.04):
[-]KOL: исправлено чтение свойства TControl.BoundsRect для MDIChild. Спасибо Андрею за замечение и исправление.
[-]KOL: присваивание свойства TBitmapl.Handle исправлено для случая, когда присваивается дескриптор очень большого растрового изображения (ранее, это могло приводить к потере DIB-данных в результате промежуточных преобразований, и присваиванию большого черного прямоугольника).
[-]KOL: начиная с версии 2.02, модуль KOL.pas стал большим настолько, что отладчик Delphi оказался не в состоянии нормально работать с результирующим KOL.dcu (пропала возможность устанавливать точки останова, попытка войти в код модуля KOL.pas командой "Trace into" приводило к неустранимому "internal error", и оставалось только терминировать Delphi IDE из системного Менеджера Задач...). Так что, для устранения этих непрятностей, объект TBits перемещен в KOLadd.pas (и недавно добавленный объект TFastStrList так же слит с ним в этом модуле). В будущем, при любых предложениях по изменению кода, (даже при добавлении опционального кода, заключенного в скобки {$IFDEF} {$ENDIF} и аналогичные), просьба проверять, что лимит снова не достигнут, и предлагайте в таком случае, что еще может быть вынесено безболезненно из основного модуля KOL.pas.
Андрей (2004-12-21 08:50:00) [9]Предлагаю еще одно исправление.
Проблема:Неверно работают SetPosition, SetSize и т.д. для MDIchild. Child-форма перемещается не туда, куда надо.
Решение:Собака порылась в TControl.GetBoundsRect. Там не учитывается, что Child-форма - дочерний контрол, и ему надо пересчитать координаты из экранных в клиентские.
Правки:
В паскалевской версии TControl.GetBoundsRect
Поправить
if fIsControl then
на
if fIsControl or fIsMDIChild then
в ассемблерной версии TControl.GetBoundsRect
поправить
CALL GetWindowRect
CMP [ESI].fIsControl,0
JZ @@storeBounds
на
CALL GetWindowRect
MOV AL,[ESI].fIsControl
OR AL,[ESI].fIsMDIChild
JZ @@storeBounds