Конференция "KOL" » ImageList у TaskBar [Delphi, KOL, Windows]
 
  • Soloton © (21.09.09 08:44) [0]
    Здравствуйте!
    Задал при помощи MCK пустой ImageList для ToolBar. Программно из ресурсов подгружаю изображения. Если изображение в ресурсах нашлось, сую его в ImageList. На кнопках остаются надписи. Как от них избавится, если изображение есть в ресурсе и оставить, если его нет?
  • Soloton © (21.09.09 09:17) [1]
    Пробовал так:
    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
  • D[u]fa (21.09.09 14:29) [2]
    Сейчас могу сказать только то что Toolbar1.ImageListNormal. не соотв. SendMessage(Toolbar1.Handle, TB_GETIMAGELIST, 0, 0)

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

    Можно попробовать после этого в коде обращаться не к Toolbar1.ImageListNormal.Count а к листу напрямую, либо Toolbar1.ImageListNormal присвоить
  • Soloton © (21.09.09 15:38) [3]
    ImageList заполняю через MCK, в редакторе форм.
    Правильно ли я понял, что MCK не создаёт код типа
    Toolbar1.ImageListNormal := ImageList1;

    ?
    Если да, то почему ещё никто не исправил, SVN же есть?
  • D[u]fa (22.09.09 09:05) [4]
    МСК создает код типа SendMessage(..., TB_SETIMAGELIST, .., ...)
  • Soloton © (23.09.09 09:46) [5]
    Попробовал разобраться сам.
    В файле 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 (23.09.09 11:52) [6]
    О багах лучше писать сюда. После проверки добавлю на свн
 
Конференция "KOL" » ImageList у TaskBar [Delphi, KOL, Windows]
Есть новые Нет новых   [134431   +11][b:0][p:0.003]