Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

TVM_GETIMAGELIST в NewTreeView (модуль KOL.PAS)   Найти похожие ветки 

 
Unknown Mystic ©   (2005-02-10 22:11) [0]

Уважаемые мастера, скажите, пожалуйста, почему при добавлении в самый конец функции NewTreeView (модуль KOL.PAS) строки
h := Result.Perform(TVM_GETIMAGELIST, TVSIL_STATE, 0);
получаю 0, тогда как строка
h := TreeView1.Perform(TVM_GETIMAGELIST, TVSIL_STATE, 0);
в модуле программы нормально возвращает хэндл?


 
Unknown Mystic ©   (2005-02-10 22:13) [1]

Заранее спасибо :)


 
SPeller ©   (2005-02-11 11:18) [2]

Потому что после вызова конструктора окно контрола ещё не создано. Проверьте свойство Handle.


 
Unknown Mystic ©   (2005-02-11 15:38) [3]

Я тоже сначала так подумал, но
Result.Handle - не ноль, хотя Result.fHandle - ноль


 
SPeller ©   (2005-02-11 16:15) [4]

Если вы смотрели .Handle из-под отладчика, то это понятно - в 1% случаев отладчик показывает правильные значения свойств объектов (object), поэтому надо смотреть именно fHandle.


 
ECM ©   (2005-02-11 16:32) [5]

Из спортивного интереса.. :)
Откуда известно, что имеено один процент?


 
Unknown Mystic ©   (2005-02-11 17:39) [6]

Мда... столько об этом говорили, а я как-то не подумал, спасибо.
А как можно изменить умолчальный список изображений состояния, создаваемый, при создании TreeView или ListView с CheckBox"ами? В своей программе - все ясно, все работает, а что делать, если TreeView подправить хочется?


 
SPeller ©   (2005-02-12 06:39) [7]

Потому что за всё время программирования на KOL я раз 10 видел чтобы показывались нормальные значения :) Статистику я, конечно, специально не считал, а так, на глазок прикинул :)


 
SPeller ©   (2005-02-12 06:40) [8]

Unknown Mystic ©   (11.02.05 17:39) [6]
А как можно изменить умолчальный список изображений состояния, создаваемый, при создании TreeView или ListView с CheckBox"ами?

По-моему, у Кладова на сайте есть пример работы с чекбоксами, и там, если мне не изменяет память, использовались свои картинки. А вообще, по-моему, можно просто назначить какой-то imagelist и всё.


 
Unknown Mystic ©   (2005-02-12 17:59) [9]

Вообще-то говоря я имел ввиду именно изменить, а не прицепить новый...

Назначить imagelist, можно конечно, но пихать всю прорисовку в kol.pas не хотелось бы, когда все, что необходимо (добавить затемненную галочку) делается гораздо проще на основе стандартного листа:
if LV.ImageListState = nil then
 begin
   h := LV.Perform(LVM_GETIMAGELIST, LVSIL_STATE, 0);
   ImageList_SetBkColor(h, CLR_NONE);
   ImageList_AddIcon(h, ImageList_GetIcon(h, 1, ILD_BLEND25));
 end;

В отдельной программе это работает, а вот как бы к TreeView и ListView прикрутить опцию, что-то вроде AllowGray, вернее как ее обрабатывать, если получить Handle листа похоже не удается?


 
SPeller ©   (2005-02-13 06:23) [10]

Так как это стандартный системный imagelist, я думаю что не надо его трогать. Нужно сделать копию его картинок в своем imagelist и уже его изменять как заблагорассудится.


 
Unknown Mystic ©   (2005-02-13 21:07) [11]

Может и не стоит, хотя если ошибок никаких возникать не будет, то почему бы и нет? Кроме того, даже если и делать копию, то все равно его Handle добыть как-то надо...


 
Unknown Mystic ©   (2005-02-18 18:20) [12]

Признаю - был не прав. :)

В MSDN"е оказывается написано:
Once you have a handle to a system image list, you can use the ImageList API to manipulate it like any other image list. ecause system image lists are created on a per-process basis, you should treat them as read-only objects. Writing to a system image list may overwrite or delete one of the system images, making it unavailable or incorrect for the remainder of the process.

А Handle, оказывается можно получить: Result.GetWindowHandle - Владимир подсказал :)

Спасибо за помощь. С уважением, Сергей.



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

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
1-1127374944
DimonNew
2005-09-22 11:42
2005.10.16
Hint из своей программы, как в IDE Delphi2005


14-1127390200
han_malign
2005-09-22 15:56
2005.10.16
MS VC++ - загадка


14-1127468953
Игорь Шевченко
2005-09-23 13:49
2005.10.16
Мы на горе всем буржуям мировой пожар раздуем...


14-1127299712
DelphiN!
2005-09-21 14:48
2005.10.16
Алексей Дубовцев "Microsoft .NET в подлиннике" электоронная верс.


9-1117929264
ГеорГ
2005-06-05 03:54
2005.10.16
Как пользоваться SetGammaRamp