Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Bugs in KOL   Найти похожие ветки 

 
Boguslaw   (2003-03-14 01:14) [0]

1. WM_KEYDOWN in OnMessage is not working. Vladimir said that it was not working earlier also but I remember that old versions of KOL (before DefaultBtn and CancelBtn) did not have that bug

2. in OnQueryEndSession for Applet Accept:= false do not prevent Windows XP for shutdown

3. in Windows XP with theme support disable close button on form does not work in any event, would be useful to have form style without close button

Maybe we should create a list of non-critical bugs for later fix ?


 
Boguslaw   (2003-03-14 01:14) [0]

1. WM_KEYDOWN in OnMessage is not working. Vladimir said that it was not working earlier also but I remember that old versions of KOL (before DefaultBtn and CancelBtn) did not have that bug

2. in OnQueryEndSession for Applet Accept:= false do not prevent Windows XP for shutdown

3. in Windows XP with theme support disable close button on form does not work in any event, would be useful to have form style without close button

Maybe we should create a list of non-critical bugs for later fix ?


 
helper code   (2003-10-07 01:32) [1]

Add to list created of Boguslaw:
В Windows XP c поддержкой тем компонент TKOLTabControl отрисовывает цвет активной панели не правильным цветом.


 
helper code   (2003-10-07 01:32) [1]

Add to list created of Boguslaw:
В Windows XP c поддержкой тем компонент TKOLTabControl отрисовывает цвет активной панели не правильным цветом.


 
Boguslaw   (2003-10-07 02:50) [2]

Currently 2 is fixed as I know ;-)
About 3 - there is always a solution to not show close on form : Form.Style := Form.Style - WS_SYSMENU


 
Boguslaw   (2003-10-07 02:50) [2]

Currently 2 is fixed as I know ;-)
About 3 - there is always a solution to not show close on form : Form.Style := Form.Style - WS_SYSMENU


 
<Falcon>   (2003-10-07 10:05) [3]

KOL_MCK 1.85 Глюк с отрисовкой курсора в KOLmdvXLGrid.Если включена возможность изменения размеров колонок/столбцов, после ресайзинга курсор не перерисовывается. Win98 D7.


 
<Falcon>   (2003-10-07 10:05) [3]

KOL_MCK 1.85 Глюк с отрисовкой курсора в KOLmdvXLGrid.Если включена возможность изменения размеров колонок/столбцов, после ресайзинга курсор не перерисовывается. Win98 D7.


 
mdw ©   (2003-10-07 13:21) [4]

>KOL_MCK 1.85 Глюк с отрисовкой курсора в KOLmdvXLGrid.Если включена возможность изменения размеров колонок/столбцов, после ресайзинга курсор не перерисовывается. Win98 D7.
Глюк связан с тем, что в версии 1.85 свойство Cursor не возвращает свое значение, если не было проинициализировано.
Лечится: в MSK: Cursor_:= IDC_ARROW, KOL KOLmdvXLGrid.Cursor:= IDC_ARROW;
или
в procedure TmdvXLGrid.RestoreCursor;
...
  // if PKolXLGridData(FCustomObj).FDefaultCursor = 0 then Exit;
...
Но предпочтительнее первый вариант.
Пока не понятно стоит ли править код, зависит от того будет ли так всегда или это ошибка в КОЛ и в следующей версии будет исправлена? Это вопрос к Кладову.


 
mdw ©   (2003-10-07 13:21) [4]

>KOL_MCK 1.85 Глюк с отрисовкой курсора в KOLmdvXLGrid.Если включена возможность изменения размеров колонок/столбцов, после ресайзинга курсор не перерисовывается. Win98 D7.
Глюк связан с тем, что в версии 1.85 свойство Cursor не возвращает свое значение, если не было проинициализировано.
Лечится: в MSK: Cursor_:= IDC_ARROW, KOL KOLmdvXLGrid.Cursor:= IDC_ARROW;
или
в procedure TmdvXLGrid.RestoreCursor;
...
  // if PKolXLGridData(FCustomObj).FDefaultCursor = 0 then Exit;
...
Но предпочтительнее первый вариант.
Пока не понятно стоит ли править код, зависит от того будет ли так всегда или это ошибка в КОЛ и в следующей версии будет исправлена? Это вопрос к Кладову.


 
Yury Sidorov   (2003-10-07 13:31) [5]

Мною было сделано следующее исправление:
Курсор "стрелка" явно никаким контролам не назначается. TControl.fCursor равен 0 по умолчанию. Для стандартных контролов и форм Windows сам грузит/меняет курсор в зависомости от контрола. Таким образом удалось сделать нормалный курсор в комбобоксе в режиме с возможностью редактировать текст, также в ричедите убран большой кусок кода, который раньше отвечал за эмулирование правильного вида курсора.

Для собственных компонентов нужно явно ставить(грузить) курсор по умолчанию если он был изменен во время работы компонента. Т.е. в случае грида он меняется на ресайз-курсор. После этого надо его возвращать к стрелке если TControl.fCursor равен 0.


 
Yury Sidorov   (2003-10-07 13:31) [5]

Мною было сделано следующее исправление:
Курсор "стрелка" явно никаким контролам не назначается. TControl.fCursor равен 0 по умолчанию. Для стандартных контролов и форм Windows сам грузит/меняет курсор в зависомости от контрола. Таким образом удалось сделать нормалный курсор в комбобоксе в режиме с возможностью редактировать текст, также в ричедите убран большой кусок кода, который раньше отвечал за эмулирование правильного вида курсора.

Для собственных компонентов нужно явно ставить(грузить) курсор по умолчанию если он был изменен во время работы компонента. Т.е. в случае грида он меняется на ресайз-курсор. После этого надо его возвращать к стрелке если TControl.fCursor равен 0.


 
mdw ©   (2003-10-07 15:03) [6]

ОК. Все ясно. Значит правлю код.


 
mdw ©   (2003-10-07 15:03) [6]

ОК. Все ясно. Значит правлю код.


 
Dimaxx ©   (2003-10-10 00:14) [7]

Функция StrReplace заменяет только первый найденный шаблон в строке, а остальные пропускает. Так поступает ассемблерная часть!


 
Dimaxx ©   (2003-10-10 00:14) [7]

Функция StrReplace заменяет только первый найденный шаблон в строке, а остальные пропускает. Так поступает ассемблерная часть!


 
SPeller ©   (2003-10-10 04:34) [8]

Паскалевский вариант, кстати, точно так же работает :) Чтобы заменить все вхождения подстроки в строку я делаю так:

while StrReplace( S, SFrom, STo ) do ;


 
SPeller ©   (2003-10-10 04:34) [8]

Паскалевский вариант, кстати, точно так же работает :) Чтобы заменить все вхождения подстроки в строку я делаю так:

while StrReplace( S, SFrom, STo ) do ;


 
Dimaxx ©   (2003-10-12 14:40) [9]

Владимир мне как раз такой способ и написал. А я до сих пор не могу понять зачем он оставил только одну замену? Так ведь никакой совместимости не будет! Кто-то будет пытаться перевести код с использованием StringReplace на КОЛ, а из-за таких мелких неувязок не получится.


 
Dimaxx ©   (2003-10-12 14:40) [9]

Владимир мне как раз такой способ и написал. А я до сих пор не могу понять зачем он оставил только одну замену? Так ведь никакой совместимости не будет! Кто-то будет пытаться перевести код с использованием StringReplace на КОЛ, а из-за таких мелких неувязок не получится.


 
Vladimir Kladov   (2003-10-12 19:28) [10]


> зачем он оставил только одну замену?

Затем, что так легко заменить ровно 2 раза, например. И не пришлось делать сложный анализ на рекурсию внутри самой StrReplace. Кому надо, напишет свой код/функцию, которая это проверит.

И при чем тут вообще совместимость. С VCL что ли. Ну так на то есть StringReplace в SysUtils, по-хорошему, она должна быть в замене SysUtils.


 
Vladimir Kladov   (2003-10-12 19:28) [10]


> зачем он оставил только одну замену?

Затем, что так легко заменить ровно 2 раза, например. И не пришлось делать сложный анализ на рекурсию внутри самой StrReplace. Кому надо, напишет свой код/функцию, которая это проверит.

И при чем тут вообще совместимость. С VCL что ли. Ну так на то есть StringReplace в SysUtils, по-хорошему, она должна быть в замене SysUtils.


 
Sapersky ©   (2003-10-13 10:05) [11]

А вот по MCK (версия 1.85, Win98):

ActionList:
- Нельзя удалить пункт меню, которому назначен action (при попытке сохранить - ошибка в vcl.bpl).
- ToolTips в ToolBar, заданные через ActionList. Иногда начинает вылетать при попытке показать Hint, даже если этот показ запрещён (ShowTooltips=False) - причём не только проект, но и другие программы (!). Частично помогает удаление Hint в action.

- при работе c ToolBar, BitBtn иногда в form_1.inc создаются константы (TB1, TB2...) c одинаковыми именами.

Вообще по KOL/MCK - иногда (достаточно часто) бывает следующее:
- exe-файл проекта зависает в запущенном состоянии ("этот файл используется Windows..."), хотя внешне программа завершается.
- сразу после запуска Дельфи первая попытка запустить проект приводит к подвисанию.


 
Sapersky ©   (2003-10-13 10:05) [11]

А вот по MCK (версия 1.85, Win98):

ActionList:
- Нельзя удалить пункт меню, которому назначен action (при попытке сохранить - ошибка в vcl.bpl).
- ToolTips в ToolBar, заданные через ActionList. Иногда начинает вылетать при попытке показать Hint, даже если этот показ запрещён (ShowTooltips=False) - причём не только проект, но и другие программы (!). Частично помогает удаление Hint в action.

- при работе c ToolBar, BitBtn иногда в form_1.inc создаются константы (TB1, TB2...) c одинаковыми именами.

Вообще по KOL/MCK - иногда (достаточно часто) бывает следующее:
- exe-файл проекта зависает в запущенном состоянии ("этот файл используется Windows..."), хотя внешне программа завершается.
- сразу после запуска Дельфи первая попытка запустить проект приводит к подвисанию.


 
SPeller ©   (2003-10-13 12:26) [12]


> Вообще по KOL/MCK - иногда (достаточно часто) бывает следующее:
> - exe-файл проекта зависает в запущенном состоянии ("этот
> файл используется Windows..."), хотя внешне программа завершается.

Такое часто бывает, особенно под 9Х. У меня под МЕ при работе со звуком так чуть ли не каждый 15-й раз. Под НТ-системами гораздо реже, но бывает (сегодня было у меня). Я уж и не знаю точно, чей это глюк - МСК или IDE Дельфей, но под VCLьными проектами я такого не припоминаю.


 
SPeller ©   (2003-10-13 12:26) [12]


> Вообще по KOL/MCK - иногда (достаточно часто) бывает следующее:
> - exe-файл проекта зависает в запущенном состоянии ("этот
> файл используется Windows..."), хотя внешне программа завершается.

Такое часто бывает, особенно под 9Х. У меня под МЕ при работе со звуком так чуть ли не каждый 15-й раз. Под НТ-системами гораздо реже, но бывает (сегодня было у меня). Я уж и не знаю точно, чей это глюк - МСК или IDE Дельфей, но под VCLьными проектами я такого не припоминаю.


 
Yury Sidorov   (2003-10-13 13:53) [13]

Вот фикс бага с удалением элементов меню и конопок тулбара с назначенным action.

mirror.pas:

procedure TKOLAction.ResolveLinks;
//...
       if c is TKOLToolbarButton then
         TKOLToolbarButton(c).action:=Self;
       c.FreeNotification(Self);          { !!! Добавить }
       UpdateLinkedComponent(c);
//...

procedure TKOLAction.LinkComponent(const AComponent: TComponent);
//...
   FLinked.AddObject("", AComponent);
   AComponent.FreeNotification(Self);       { !!! Добавить }
   UpdateLinkedComponent(AComponent);
//...


Насчет вылета программы если в Action назнчен Hint, а для тулбара showTooltips=False. Причину вылета не знаю, но дело в том, showTooltips это виртуальное свойство, которое есть только на этапе дизайна в МСК. Если showTooltips=False, то не генерится код, назначающий тултипы тулбару. В рантайме Action ничего не знает о showTooltips=False, поэтому назначает значение своего свойства Hint связанным кнопкам тулбара.
Вывод: если исполюзуютя actions и не нужны тултипы на тулбаре - не назначать свойство Hint в Action.


 
Yury Sidorov   (2003-10-13 13:53) [13]

Вот фикс бага с удалением элементов меню и конопок тулбара с назначенным action.

mirror.pas:

procedure TKOLAction.ResolveLinks;
//...
       if c is TKOLToolbarButton then
         TKOLToolbarButton(c).action:=Self;
       c.FreeNotification(Self);          { !!! Добавить }
       UpdateLinkedComponent(c);
//...

procedure TKOLAction.LinkComponent(const AComponent: TComponent);
//...
   FLinked.AddObject("", AComponent);
   AComponent.FreeNotification(Self);       { !!! Добавить }
   UpdateLinkedComponent(AComponent);
//...


Насчет вылета программы если в Action назнчен Hint, а для тулбара showTooltips=False. Причину вылета не знаю, но дело в том, showTooltips это виртуальное свойство, которое есть только на этапе дизайна в МСК. Если showTooltips=False, то не генерится код, назначающий тултипы тулбару. В рантайме Action ничего не знает о showTooltips=False, поэтому назначает значение своего свойства Hint связанным кнопкам тулбара.
Вывод: если исполюзуютя actions и не нужны тултипы на тулбаре - не назначать свойство Hint в Action.


 
Sapersky ©   (2003-10-13 16:00) [14]

Вывод: если исполюзуютя actions и не нужны тултипы на тулбаре - не назначать свойство Hint в Action.

А если нужны? :) Понял, не ставить showTooltips=false. Ну так оно само ставится в True.
Тем не менее, запускать программу с хинтами - это что-то вроде ходьбы по минному полю :) Раз повезло, два повезло, а на третий (не обязательно именно третий, конечно) при попытке показать хинт вылетают ВСЕ приложения, включая Explorer...


 
Sapersky ©   (2003-10-13 16:00) [14]

Вывод: если исполюзуютя actions и не нужны тултипы на тулбаре - не назначать свойство Hint в Action.

А если нужны? :) Понял, не ставить showTooltips=false. Ну так оно само ставится в True.
Тем не менее, запускать программу с хинтами - это что-то вроде ходьбы по минному полю :) Раз повезло, два повезло, а на третий (не обязательно именно третий, конечно) при попытке показать хинт вылетают ВСЕ приложения, включая Explorer...


 
Yury Sidorov   (2003-10-13 18:05) [15]

Вообще-то с включенными хинтами все должно работать. По крайней мере моя прога работает с ними во всех ОС без проблем.


 
Yury Sidorov   (2003-10-13 18:05) [15]

Вообще-то с включенными хинтами все должно работать. По крайней мере моя прога работает с ними во всех ОС без проблем.


 
Yury Sidorov   (2003-10-13 18:06) [16]

P.S. А хинты назначены для всех кнопок тулбара. Если не для всех, то может в этом проблема.


 
Yury Sidorov   (2003-10-13 18:06) [16]

P.S. А хинты назначены для всех кнопок тулбара. Если не для всех, то может в этом проблема.


 
Sapersky ©   (2003-10-27 01:06) [17]

Ещё кое-что, не столь критичное, но неприятное:
1) При изменении размеров окна Caption у панелей не перерисовывается
2) Form.MinWidth и MinHeight (если задать в design-time) не работают
3) В Form.OnMessage WM_MOUSEMOVE возвращает координаты мыши относительно контрола, над которым находится мышь (более логичным ИМХО было бы относительно формы)


 
Sapersky ©   (2003-10-27 01:06) [17]

Ещё кое-что, не столь критичное, но неприятное:
1) При изменении размеров окна Caption у панелей не перерисовывается
2) Form.MinWidth и MinHeight (если задать в design-time) не работают
3) В Form.OnMessage WM_MOUSEMOVE возвращает координаты мыши относительно контрола, над которым находится мышь (более логичным ИМХО было бы относительно формы)


 
Vladimir Kladov   (2003-10-27 07:06) [18]


> 1) При изменении размеров окна Caption у панелей не перерисовывается


У меня перерисовывается. Шлите пример, когда такое бывает.


> 2) Form.MinWidth и MinHeight (если задать в design-time)
> не работают


У меня работают. В самом design-time? Там оно и не должно работать, только в run-time.


> 3) В Form.OnMessage WM_MOUSEMOVE возвращает координаты мыши
> относительно контрола, над которым находится мышь (более
> логичным ИМХО было бы относительно формы)


OnMessage ничего не возвращает, а передает как оно есть. TMsg содержит hwnd окна, которому сообщение отправлено. Можно просто вызвать Windows.ClientToScreen. Предложение "исправить" не принимается.


 
Vladimir Kladov   (2003-10-27 07:06) [18]


> 1) При изменении размеров окна Caption у панелей не перерисовывается


У меня перерисовывается. Шлите пример, когда такое бывает.


> 2) Form.MinWidth и MinHeight (если задать в design-time)
> не работают


У меня работают. В самом design-time? Там оно и не должно работать, только в run-time.


> 3) В Form.OnMessage WM_MOUSEMOVE возвращает координаты мыши
> относительно контрола, над которым находится мышь (более
> логичным ИМХО было бы относительно формы)


OnMessage ничего не возвращает, а передает как оно есть. TMsg содержит hwnd окна, которому сообщение отправлено. Можно просто вызвать Windows.ClientToScreen. Предложение "исправить" не принимается.


 
SPeller ©   (2003-10-27 08:52) [19]


> > 2) Form.MinWidth и MinHeight (если задать в design-time)
> > не работают
>
> У меня работают. В самом design-time? Там оно и не должно
> работать, только в run-time.

В run-time не работают значения MinWidth и MinHeight, заданные в design-time.


 
SPeller ©   (2003-10-27 08:52) [19]


> > 2) Form.MinWidth и MinHeight (если задать в design-time)
> > не работают
>
> У меня работают. В самом design-time? Там оно и не должно
> работать, только в run-time.

В run-time не работают значения MinWidth и MinHeight, заданные в design-time.


 
Vladimir Kladov   (2003-10-27 09:26) [20]


> В run-time не работают значения MinWidth и MinHeight, заданные
> в design-time.


У меня работают. Пример?


 
Vladimir Kladov   (2003-10-27 09:26) [20]


> В run-time не работают значения MinWidth и MinHeight, заданные
> в design-time.


У меня работают. Пример?


 
Sapersky ©   (2003-10-27 11:40) [21]

> В run-time не работают значения MinWidth и MinHeight, заданные в design-time.
У меня работают. Пример?


И правда работают. С пустой формой. А в проекте - нет :) Ну ладно, можно и в OnShow установить.

> 1) При изменении размеров окна Caption у панелей не перерисовывается
У меня перерисовывается. Шлите пример, когда такое бывает.


Такое бывает при включённом Align (caTop, caBottom) и нестандартном TextAlign (taCenter, taRight).


 
Sapersky ©   (2003-10-27 11:40) [21]

> В run-time не работают значения MinWidth и MinHeight, заданные в design-time.
У меня работают. Пример?


И правда работают. С пустой формой. А в проекте - нет :) Ну ладно, можно и в OnShow установить.

> 1) При изменении размеров окна Caption у панелей не перерисовывается
У меня перерисовывается. Шлите пример, когда такое бывает.


Такое бывает при включённом Align (caTop, caBottom) и нестандартном TextAlign (taCenter, taRight).


 
Юрий Ж. ©   (2003-10-30 20:15) [22]

Еще баг в MCK:
 Не устанавливается свойстро AllButtonsReturnClick.


 
Юрий Ж. ©   (2003-10-30 20:15) [22]

Еще баг в MCK:
 Не устанавливается свойстро AllButtonsReturnClick.


 
Dimaxx ©   (2003-10-30 22:45) [23]

Грабли с битмапом!!!! А я-то думал у меня руки кривые...

Создаем битмап

BMP:=NewBitmap(100,100);
BMP.PixelFormat:=pf24bit;

Далее мучаем его. Изменяю размеры через width и height и при запросе scanline получаю nil!!! Смотрю ширину и высоту, а она равна high(cardinal)!!!! Куда это годится???!!!


 
Dimaxx ©   (2003-10-30 22:45) [23]

Грабли с битмапом!!!! А я-то думал у меня руки кривые...

Создаем битмап

BMP:=NewBitmap(100,100);
BMP.PixelFormat:=pf24bit;

Далее мучаем его. Изменяю размеры через width и height и при запросе scanline получаю nil!!! Смотрю ширину и высоту, а она равна high(cardinal)!!!! Куда это годится???!!!


 
Vladimir Kladov   (2003-10-31 05:19) [24]

http://protools.anticrack.de/utilities.htm
там есть все, что нужно, чтобы заменить/удалить стуб, выровнять PE и т.д. и т.п.


 
Vladimir Kladov   (2003-10-31 05:19) [24]

http://protools.anticrack.de/utilities.htm
там есть все, что нужно, чтобы заменить/удалить стуб, выровнять PE и т.д. и т.п.


 
Vladimir Kladov   (2003-10-31 05:35) [25]

Предыдущее сообщение не туда попало.

Чем NewDIBBitmap не устраивает?


 
Vladimir Kladov   (2003-10-31 05:35) [25]

Предыдущее сообщение не туда попало.

Чем NewDIBBitmap не устраивает?


 
Dimaxx ©   (2003-10-31 23:09) [26]

Потому что по-барабану! И тот, и другой выдают одно и то же.

Кстати, вообще многие свойства КОЛ-контролов при отладке (которые в хинтах) выдается "access violation...". Например, те же width и height у Bitmap. Это тоже не эст карашо!


 
Dimaxx ©   (2003-10-31 23:09) [26]

Потому что по-барабану! И тот, и другой выдают одно и то же.

Кстати, вообще многие свойства КОЛ-контролов при отладке (которые в хинтах) выдается "access violation...". Например, те же width и height у Bitmap. Это тоже не эст карашо!


 
Vladimir Kladov   (2003-11-01 09:40) [27]


> Потому что по-барабану! И тот, и другой выдают одно и то
> же.

а у меня что же, особое спрямление рук, что у меня нет такой проблемы?


> Кстати, вообще многие свойства КОЛ-контролов при отладке
> (которые в хинтах) выдается "access violation...". Например,
> те же width и height у Bitmap. Это тоже не эст карашо!

А это вообще не ко мне. Code Insight глючен, а object"ы вообще не понимает, когда читает свойства. Он видимо предполагает, что структура object"а та же, что и у класса. В итоге то абсолютно левые значения показывает, то access violation. Выход такой: в watch-окне запрашивать не свойство, а соответствующее поле. Например, List.FCount, а не List.Count. Хотя вроде бы поле protected, в watch-окне и подсказке показывает правильно. Есть способ: присвоить значение промежуточной переменной, и смотреть на нее. Делфай (да-да, [del"fai] читается) справится с оптимизацией в большинстве случаев нормально, и разместит значение в регистре. Другой вариант: хотя бы на время отладки сделать версию KOL с классами (см. KOL2FPC). Она даст экзешник на пару К больше, но потом можно будет все вернуть на место.


 
Vladimir Kladov   (2003-11-01 09:40) [27]


> Потому что по-барабану! И тот, и другой выдают одно и то
> же.

а у меня что же, особое спрямление рук, что у меня нет такой проблемы?


> Кстати, вообще многие свойства КОЛ-контролов при отладке
> (которые в хинтах) выдается "access violation...". Например,
> те же width и height у Bitmap. Это тоже не эст карашо!

А это вообще не ко мне. Code Insight глючен, а object"ы вообще не понимает, когда читает свойства. Он видимо предполагает, что структура object"а та же, что и у класса. В итоге то абсолютно левые значения показывает, то access violation. Выход такой: в watch-окне запрашивать не свойство, а соответствующее поле. Например, List.FCount, а не List.Count. Хотя вроде бы поле protected, в watch-окне и подсказке показывает правильно. Есть способ: присвоить значение промежуточной переменной, и смотреть на нее. Делфай (да-да, [del"fai] читается) справится с оптимизацией в большинстве случаев нормально, и разместит значение в регистре. Другой вариант: хотя бы на время отладки сделать версию KOL с классами (см. KOL2FPC). Она даст экзешник на пару К больше, но потом можно будет все вернуть на место.


 
SPeller ©   (2003-11-01 14:01) [28]


> Делфай (да-да, [del"fai] читается)

Сколько воды утекло на тему Делфай или Дельфи... :)) Хотя, это уже оффтоп.


 
SPeller ©   (2003-11-01 14:01) [28]


> Делфай (да-да, [del"fai] читается)

Сколько воды утекло на тему Делфай или Дельфи... :)) Хотя, это уже оффтоп.


 
Dimaxx ©   (2003-11-02 01:14) [29]

Я пробовал и Bitmap, и DIBBitmap - одно и то же. Создаю битмап, далее вызываю процедуры в зависимости от переданного значения. В этих процедурах происходит смена размеров битмапа, переданного как параметр в процедуру. При первом же изменении размеров вываливается ошибка, описанная выше. Хотя может вывалиться и при второй смене размеров. Тут комментарии излишни. В VCL все пучком.


 
Dimaxx ©   (2003-11-02 01:14) [29]

Я пробовал и Bitmap, и DIBBitmap - одно и то же. Создаю битмап, далее вызываю процедуры в зависимости от переданного значения. В этих процедурах происходит смена размеров битмапа, переданного как параметр в процедуру. При первом же изменении размеров вываливается ошибка, описанная выше. Хотя может вывалиться и при второй смене размеров. Тут комментарии излишни. В VCL все пучком.


 
Dimaxx ©   (2003-11-02 01:23) [30]

Еще один баг заметил тока что. У компонента LabelEffect свойство VerticalAlign неправильно работает при установке в Center - текст все равно прижимается к верхней границе компонента. Далее, если labeleffect поместить на panel и задать у labeleffect свойство Align=caClient, то от labeleffect отрисовывает текст с сильной обрезкой (остается тока маленький центр). Если меняем текст, то свойство autosize не меняет размеры, а функция AutoSize ни дает никакого эффекта - текст обрезается. Если установить у него Enabled:=False, то текст вообще исчезает и появляется вновь при True.


 
Dimaxx ©   (2003-11-02 01:23) [30]

Еще один баг заметил тока что. У компонента LabelEffect свойство VerticalAlign неправильно работает при установке в Center - текст все равно прижимается к верхней границе компонента. Далее, если labeleffect поместить на panel и задать у labeleffect свойство Align=caClient, то от labeleffect отрисовывает текст с сильной обрезкой (остается тока маленький центр). Если меняем текст, то свойство autosize не меняет размеры, а функция AutoSize ни дает никакого эффекта - текст обрезается. Если установить у него Enabled:=False, то текст вообще исчезает и появляется вновь при True.


 
Vladimir Kladov   (2003-11-02 10:36) [31]

Создаю битмап, далее вызываю процедуры в
зависимости от переданного значения. В этих процедурах происходит смена размеров битмапа,
переданного как параметр в процедуру. При первом же изменении размеров вываливается ошибка,
описанная выше.


А добавить HandleType := bmDIB ? Форсируется DIB формат, и можно работать со ScanLine. Или мне в каждом вызове ScanLine прикажете форсировать DIB (как в VCL)? Что это за ScanLine тогда получится? Скорость у него будет меньше.


 
Vladimir Kladov   (2003-11-02 10:36) [31]

Создаю битмап, далее вызываю процедуры в
зависимости от переданного значения. В этих процедурах происходит смена размеров битмапа,
переданного как параметр в процедуру. При первом же изменении размеров вываливается ошибка,
описанная выше.


А добавить HandleType := bmDIB ? Форсируется DIB формат, и можно работать со ScanLine. Или мне в каждом вызове ScanLine прикажете форсировать DIB (как в VCL)? Что это за ScanLine тогда получится? Скорость у него будет меньше.


 
Dimaxx ©   (2003-11-02 23:42) [32]

HandleType:=bmDIB? Сенькс, попробую...


 
Dimaxx ©   (2003-11-02 23:42) [32]

HandleType:=bmDIB? Сенькс, попробую...


 
Vladimir Kladov   (2003-11-03 12:28) [33]

Тогда еще PixelFormat := pfXXbits после этого. Для гарантии, что именно нужный формат получился. И еще: не забывать, что байты в true color формате обычно переставлены. Не RGB, а BGR. Хотя еще правильнее смотреть маску в заголовке, но так все равно никто не делает.


 
Vladimir Kladov   (2003-11-03 12:28) [33]

Тогда еще PixelFormat := pfXXbits после этого. Для гарантии, что именно нужный формат получился. И еще: не забывать, что байты в true color формате обычно переставлены. Не RGB, а BGR. Хотя еще правильнее смотреть маску в заголовке, но так все равно никто не делает.


 
Dimaxx ©   (2003-11-04 00:31) [34]

Сейчас попробовал - первый вызов и scanline возвращает nil 8-(


 
Dimaxx ©   (2003-11-04 00:31) [34]

Сейчас попробовал - первый вызов и scanline возвращает nil 8-(


 
SPeller ©   (2003-11-04 02:27) [35]

2 Dimaxx

А КОЛ/МСК свежие? Какая версия?


 
SPeller ©   (2003-11-04 02:27) [35]

2 Dimaxx

А КОЛ/МСК свежие? Какая версия?


 
Vladimir Kladov   (2003-11-04 15:34) [36]

Первый вызов чего?

B.HandleType := bmDIB;
B.PixelFormat := pf32bit;
B.ScanLine[ 0 ];


 
Vladimir Kladov   (2003-11-04 15:34) [36]

Первый вызов чего?

B.HandleType := bmDIB;
B.PixelFormat := pf32bit;
B.ScanLine[ 0 ];


 
Dimaxx ©   (2003-11-04 22:55) [37]

2 SPeller: KOL/MCK обновляю тут же, как выходит новый апдейт.

2 Vladimir Kladov: Первый вызов смены размера.

1) При создании компонента создаю битмап NewDIBBitmap(0,0,pf24bit);
2) В главной процедуре в зависимости от значения вызываю одну процедуру (их серия - они практически одинаковые, но изменяют размер битмапа-шаблона для себя и через scanline заполняют его)
3) Трассирую код, вхожу в процедуру (объект битмапа не пустой), изменяю размеры через width и height, дохожу до scanline и получаю nil!!! Все, Access violation... обеспечен. И я получаю его на следующем шаге! Приехалы!!!


 
Dimaxx ©   (2003-11-04 22:55) [37]

2 SPeller: KOL/MCK обновляю тут же, как выходит новый апдейт.

2 Vladimir Kladov: Первый вызов смены размера.

1) При создании компонента создаю битмап NewDIBBitmap(0,0,pf24bit);
2) В главной процедуре в зависимости от значения вызываю одну процедуру (их серия - они практически одинаковые, но изменяют размер битмапа-шаблона для себя и через scanline заполняют его)
3) Трассирую код, вхожу в процедуру (объект битмапа не пустой), изменяю размеры через width и height, дохожу до scanline и получаю nil!!! Все, Access violation... обеспечен. И я получаю его на следующем шаге! Приехалы!!!


 
SPeller ©   (2003-11-05 00:55) [38]

Полный код приводи.


 
SPeller ©   (2003-11-05 00:55) [38]

Полный код приводи.


 
Dimaxx ©   (2003-11-06 01:02) [39]

Помогает тока такой вариант:

При старте формы битмап не создаем (не объявляем переменную). Подсовываем в одну из выбираемых процедур эту переменную, процедура создает битмап с нужными размерами и, поскольку битмап передан как var, получаю его обратно, натягиваю куда нужно и убиваю битмап. Но при каждой перерисовке формы или контрола происходит все сначала: создание и так далее. Но, тем не менее, все работает... Код вышлю Владимиру - это передраный c VCL компонент AniGradient.


 
Dimaxx ©   (2003-11-06 01:02) [39]

Помогает тока такой вариант:

При старте формы битмап не создаем (не объявляем переменную). Подсовываем в одну из выбираемых процедур эту переменную, процедура создает битмап с нужными размерами и, поскольку битмап передан как var, получаю его обратно, натягиваю куда нужно и убиваю битмап. Но при каждой перерисовке формы или контрола происходит все сначала: создание и так далее. Но, тем не менее, все работает... Код вышлю Владимиру - это передраный c VCL компонент AniGradient.


 
SPeller ©   (2003-11-06 01:32) [40]

Возможно, битмап с канвсом глючат - они ещё не устоялись.


 
SPeller ©   (2003-11-06 01:32) [40]

Возможно, битмап с канвсом глючат - они ещё не устоялись.



Страницы: 1 2 вся ветка

Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.68 MB
Время: 0.049 c
7-1080579089
DelphiN!
2004-03-29 20:51
2004.05.09
Получит имя текущего пользователя и его пароль


1-1082383062
killer
2004-04-19 17:57
2004.05.09
передача переменной TStringList из DLL


3-1081847949
Rych
2004-04-13 13:19
2004.05.09
Как проверить присутствует-ли занчение в TDataSet ?


14-1082106240
nikitos
2004-04-16 13:04
2004.05.09
Кому не лень...


4-1079681594
Dmitry-K
2004-03-19 10:33
2004.05.09
Работа с двумя мониторами???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский