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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
Des
новенький
Сообщения: 22
Зарегистрирован: 20.07.2015 16:53:08

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

Сообщение Des »

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

Как получить их в лазарусе?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Вы это для винды спрашиваете или кроссплатформенно?
Des
новенький
Сообщения: 22
Зарегистрирован: 20.07.2015 16:53:08

Сообщение Des »

для линукса
kazalex
постоялец
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Сообщение kazalex »

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

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

Uses LCLType, Themes;
...
ThemeServices.GetStockImage(idDialogWarning, ...);
...
Des
новенький
Сообщения: 22
Зарегистрирован: 20.07.2015 16:53:08

Сообщение Des »

kazalex писал(а):
Des писал(а):Как получить их в лазарусе?

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

Uses LCLType, Themes;
...
ThemeServices.GetStockImage(idDialogWarning, ...);
...



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

BH:HBitmap;
BMH:HBitmap;

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

Можно полный код вплоть до того момента когда у меня в Tbitmap или Ticon записываются картинки?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

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; 

и становится понятно, что функция сильно похожа на заглушку.
kazalex
постоялец
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Сообщение 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


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

Нужно смотреть класс конкретного виджетсета (на вызов бряк, потом трейс), а не базовый.
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>и становится понятно, что функция сильно похожа на заглушку.
Если поискать еще или в отладчике посмотреть куда уходит вызов

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

ThemeServices.GetStockImage(0,Image, Mask);

прояснится что заглушка какраз не используется, используется нормальная реализация. но не факт что она полная и кроссплатформенная. в Themes к сожалению очень много недоделанного
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

kazalex,zub, понятно. Впрочем, вряд ли я воспользуюсь данным методом -- замороченно как-то.

А какой способ используется чисто под виндой?
Des
новенький
Сообщения: 22
Зарегистрирован: 20.07.2015 16:53:08

Сообщение Des »

Все получилось! спасибо kazalex
kazalex
постоялец
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Сообщение kazalex »

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

Этот же.
Ответить