Изменение иконки приложения

Материал из DRKB

Изменение иконки приложения[править | править код]

Присвойте свойству Application.Icon другую иконку и вызовите функцию


InvalidateRect(Application.Handle, NIL, True);

... для немедленной перерисовки.


Source: http://delphiworld.narod.ru/
ID: 02361



Изменять иконку приложения или окна во время его работы[править | править код]

Изменять иконку приложения или окна достаточно просто - для этого у TApplication и TForm предусмотрено свойство Icon. Смена иконки может вестись обычным присвоением свойству Icon нового значения:

Form1.Icon := Image1.Picture.Icon;


При этом происходит не присвоение указателя (как казалось бы), а копирование данных посредством вызова Assign, который производится в методе TForm.SetIcon


Source: http://delphiworld.narod.ru/
ID: 02362



Загрузка иконки из ресурса[править | править код]

Загрузка производится типовым вызовом API:


Form1.Icon.Handle := LoadIcon(hInstance, 'имя иконки в ресурсе');


Причем имя в ресурсе желательно писать всегда в верхнем регистре

Все сказанное выше пригодно и для приложения, только в этом случае вместо Form1 выступает Application. Для принудительной перерисовки кнопки приложения в панеле задач можно применить вызов


InvalidateRect(Application.Handle, nil, True);


Source: http://delphiworld.narod.ru/
ID: 02363



Пример организации простейшей анимации иконки приложения[править | править код]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(IconIndex);
  case IconIndex of
    1: Application.Icon.Assign(Image1.Picture.Icon);
    2: Application.Icon.Assign(Image2.Picture.Icon);
    else IconIndex := 0;
  end;
  InvalidateRect(Application.Handle, nil, True);
end;


При этом естественно предполагается, что в Image1 и Image2 загружены иконки.


Source: http://delphiworld.narod.ru/
ID: 02364



Как заставить приложение показывать различные иконки при различных разрешениях дисплея?[править | править код]

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

Поместите следующий код в файл проекта (.DPR) Вашего приложения:


Application.Initialize;
Application.CreateForm(TForm1, Form1);
case GetDeviceCaps(GetDC(Form1.Handle), HORZRES) of
   640: Application.Icon.Handle := LoadIcon(hInstance, 'ICON640');
   800: Application.Icon.Handle := LoadIcon(hInstance, 'ICON800');
  1024: Application.Icon.Handle := LoadIcon(hInstance, 'ICON1024');
  1280: Application.Icon.Handle := LoadIcon(hInstance, 'ICON1280');
end;
Application.Run;


Source: http://delphiworld.narod.ru/
ID: 02365