Страница 1 из 1

Стандартные иконки mtWarning, mtError, mtInformation, mtConf

СообщениеДобавлено: 20.07.2015 17:59:09
Des
Мне нужно получить данные иконки.
В делфи я получаю их так
Image.Icon.Handle := LoadIcon(0, IconID), где IConID берется из этого списка (IDI_EXCLAMATION, IDI_HAND, IDI_ASTERISK, IDI_QUESTION, nil)

Как получить их в лазарусе?

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 21.07.2015 09:33:34
Vadim
Вы это для винды спрашиваете или кроссплатформенно?

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 21.07.2015 19:44:37
Des
для линукса

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 21.07.2015 21:30:57
kazalex
Des писал(а):Как получить их в лазарусе?

Код: Выделить всё
Uses LCLType, Themes;
...
ThemeServices.GetStockImage(idDialogWarning, ...);
...

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 17:20:39
Des
kazalex писал(а):
Des писал(а):Как получить их в лазарусе?

Код: Выделить всё
Uses LCLType, Themes;
...
ThemeServices.GetStockImage(idDialogWarning, ...);
...



что то не работает.

BH:HBitmap;
BMH:HBitmap;

ThemeServices.GetStockImage(idDialogWarning, BH,BMH); выдает false как будто ничего не нашел.

Можно полный код вплоть до того момента когда у меня в Tbitmap или Ticon записываются картинки?

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 17:28:07
Лекс Айрин
Des, скорее всего, вы пытаетесь работать как с виндовс...а вы программируете под линукс (подозреваю, кроссплатформено.) Имена констант (или только префиксы) вряд ли совпадают.

Добавлено спустя 14 минут 54 секунды:
Re: Стандартные иконки mtWarning, mtError, mtInformation, mtConf
вот странно.. ищем описание... function TThemeServices.GetStockImage(StockID: LongInt; out Image, Mask: HBitmap): Boolean;
Переходим к телу процедуры...

Код: Выделить всё
function TThemeServices.GetStockImage(StockID: LongInt; out Image, Mask: HBitmap): Boolean;
begin
  Result := False;
end; 

и становится понятно, что функция сильно похожа на заглушку.

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 17:57:34
kazalex
Des писал(а):Можно полный код вплоть до того момента когда у меня в Tbitmap или Ticon записываются картинки?

Код: Выделить всё
Uses

LCLType, Themes;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var

bitmap : TBitmap;
i, m   : HBitmap;

begin

If ThemeServices.GetStockImage(idDialogWarning, i, m) Then
  Begin

   bitmap := TBitmap.Create;

   bitmap.Handle := i;
   If m <> 0 Then
    bitmap.MaskHandle := m;

   image1.Picture.Bitmap := bitmap;

  End;

end;

stockImage.png


Лекс Айрин писал(а):и становится понятно, что функция сильно похожа на заглушку.

Нужно смотреть класс конкретного виджетсета (на вызов бряк, потом трейс), а не базовый.

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 18:02:29
zub
>>и становится понятно, что функция сильно похожа на заглушку.
Если поискать еще или в отладчике посмотреть куда уходит вызов
Код: Выделить всё
ThemeServices.GetStockImage(0,Image, Mask);

прояснится что заглушка какраз не используется, используется нормальная реализация. но не факт что она полная и кроссплатформенная. в Themes к сожалению очень много недоделанного

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 18:34:28
Лекс Айрин
kazalex,zub, понятно. Впрочем, вряд ли я воспользуюсь данным методом -- замороченно как-то.

А какой способ используется чисто под виндой?

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 18:38:06
Des
Все получилось! спасибо kazalex

Re: Стандартные иконки mtWarning, mtError, mtInformation, mt

СообщениеДобавлено: 22.07.2015 18:46:01
kazalex
Лекс Айрин писал(а):А какой способ используется чисто под виндой?

Этот же.