Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ImageList у TaskBar [Delphi, KOL, Windows]


Soloton ©   (2009-09-21 08:44:00) 

Здравствуйте!
Задал при помощи MCK пустой ImageList для ToolBar. Программно из ресурсов подгружаю изображения. Если изображение в ресурсах нашлось, сую его в ImageList. На кнопках остаются надписи. Как от них избавится, если изображение есть в ресурсе и оставить, если его нет?


D[u]fa   (2009-09-23 11:52:00) [1]

О багах лучше писать сюда. После проверки добавлю на свн


Soloton   (2009-09-23 09:46:00) [2]

Попробовал разобраться сам.
В файле mckCtrl.pas поменял код
 if ImageListNormal <> nil then
 begin
   SL.Add( Prefix + ' ' + AName + '.Perform( TB_SETIMAGELIST, 0, Result.' +
           ImageListNormal.Name + '.Handle );' );
 end;
 if ImageListDisabled <> nil then
 begin
   SL.Add( Prefix + ' ' + AName + '.Perform( TB_SETDISABLEDIMAGELIST, 0, Result.' +
           ImageListDisabled.Name + '.Handle );' );
 end;
 if ImageListHot <> nil then
 begin
   SL.Add( Prefix + ' ' + AName + '.Perform( TB_SETHOTIMAGELIST, 0, Result.' +
           ImageListHot.Name + '.Handle );' );
 end;

на
 if ImageListNormal <> nil then
 begin
   SL.Add( Prefix + ' ' + AName + '.Perform( TB_SETIMAGELIST, 0, Result.' +
           ImageListNormal.Name + '.Handle );' );
   SL.Add( Prefix + ' ' + AName + '.ImageListNormal := Result.' +
           ImageListNormal.Name + ';' );
 end;
 if ImageListDisabled <> nil then
 begin
   SL.Add( Prefix + ' ' + AName + '.Perform( TB_SETDISABLEDIMAGELIST, 0, Result.' +
           ImageListDisabled.Name + '.Handle );' );
   SL.Add( Prefix + ' ' + AName + '.ImageListDisabled := Result.' +
           ImageListDisabled.Name + ';' );
 end;
 if ImageListHot <> nil then
 begin
   SL.Add( Prefix + ' ' + AName + '.Perform( TB_SETHOTIMAGELIST, 0, Result.' +
           ImageListHot.Name + '.Handle );' );
   SL.Add( Prefix + ' ' + AName + '.ImageListHot := Result.' +
           ImageListHot.Name + ';' );
 end;

Заработало, как и ожидалось, т.е. к Toolbar1.ImageList* теперь можно обращаться непосредственно. Верный ли код? Если да, то может включить его в офиц. исходники.

Offtipic: А как на SVN корректно загрузить? Есть баглист, если да, то где его найти? Кто вообще следит за SVN?
Прошу простить, если задал неправильный вопрос, я в OpenSoruce не силён


D[u]fa   (2009-09-22 09:05:00) [3]

МСК создает код типа SendMessage(..., TB_SETIMAGELIST, .., ...)


Soloton   (2009-09-21 15:38:00) [4]

ImageList заполняю через MCK, в редакторе форм.
Правильно ли я понял, что MCK не создаёт код типа Toolbar1.ImageListNormal := ImageList1;?
Если да, то почему ещё никто не исправил, SVN же есть?


D[u]fa   (2009-09-21 14:29:00) [5]

Сейчас могу сказать только то что Toolbar1.ImageListNormal. не соотв. SendMessage(Toolbar1.Handle, TB_GETIMAGELIST, 0, 0)

сам на это напоролся давно.. Установил ImageList  для тулбара через мск? в редакторе форм?

Можно попробовать после этого в коде обращаться не к Toolbar1.ImageListNormal.Count а к листу напрямую, либо Toolbar1.ImageListNormal присвоить


Soloton   (2009-09-21 09:17:00) [6]

Пробовал так:
if (SendMessage(Toolbar1.Handle, TB_GETIMAGELIST, 0, 0) <> INVALID_HANDLE_VALUE) then
 if  (Toolbar1.ImageListNormal.Count > 0) then begin
   for i := 0 to ToolBar1.TBButtonCount-1 do begin
     if (ToolBar1.TBButtonImage[i] >= 0) and (Toolbar1.ImageListNormal.Count > ToolBar1.TBButtonImage[i]) then begin
       ToolBar1.TBButtonText[i] := '';
       end;
     end;
   end;

Но почему-то Toolbar1.ImageListNormal = nil
Хотя первое условие соблюдается и у ToolBar1 задан именно ImageListNormal


Наверх

Титульная страница Поиск, карта сайта Написать письмо