Динамическое изменение пиктограммы формы

Любая форма, являясь окном операционной системы, имеет собственную пиктограмму. По умолчанию любая форма, созданная в среде разработки продукта «Форсайт. Аналитическая платформа», использует системную пиктограмму. Для задания собственной пиктограммы используется свойство IFormControl.Icon. В режиме дизайна формы нажмите кнопку в инспекторе классов напротив свойства Icon и выберите необходимую пиктограмму. Для выбора доступны файлы только в формате *.ico. Во время выполнения формы пиктограмму можно изменить из прикладного кода. Для сброса собственной и установки системной пиктограммы установите свойству Icon значение Null.

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

Загрузка из компонента ImageList

Если на форме имеется компонент ImageList (GlobalImageList), то загрузить из него собственную пиктограмму можно, используя свойство IImageList.Icon. Если в компонент загружены изображения другого формата, то при работе они будут преобразованы к формату *.ico.

Sub TESTFormOnCreate(Sender: Object; Args: IEventArgs);
Begin
    Self.Icon := ImageList1.Icon(0);
End Sub TESTFormOnCreate;

Загрузка из ресурсов

Для получения пиктограммы из объекта «Ресурсы» используйте свойства IResourceBinaries.Value, IResourceBinaries.ValueByKey или метод IResourceBinaries.Load. После получения пиктограммы в виде потока передайте этот поток в конструктор GxIcon.CreateFromStream или GxIcon.CreateFromStreamS. Созданную таким образом пиктограмму установите для формы:

Sub TESTFormOnCreate(Sender: Object; Args: IEventArgs);
Var
    MB: IMetabase;
    Res: IResourceObject;
Begin
    MB := MetabaseClass.Active;
    Res := MB.ItemById("Project_Resources").Bind As IResourceObject;
    Self.Icon := New GxIcon.CreateFromStream(Res.Binaries.Value("FORM_ICON"));
End Sub TESTFormOnCreate;

Загрузка пиктограммы из файла

Для загрузки пиктограммы из файла используйте метод GxIcon.CreateFromFile или GxIcon.CreateFromFileS:

Sub TESTFormOnCreate(Sender: Object; Args: IEventArgs);
Var
    Size: IGxSize;
Begin
    Size := New GxSize.Create(1616);
    Self.Icon := New GxIcon.CreateFromFileS("C:\Work\Images\Form_Icon.ico", Size);
End Sub TESTFormOnCreate;

См. также:

Примеры