IResourceBinaries.Load

Синтаксис Fore

Load(Key: Integer; Stream: IIOStream): Boolean;

Синтаксис Fore.NET

Load(Key: uinteger; Stream: Prognoz.Platform.Interop.ForeIO.IIOStream): boolean;

Параметры

Key. Ключ изображения;

Stream. Поток.

Описание

Метод Load загружает изображение с указанным ключом из ресурсов в поток.

Комментарии

Если загрузка прошла успешно, то метод возвращает значение True, в противном случае - False.

Пример Fore

Для выполнения примера предполагается наличие формы, содержащей компонент ImageList с идентификатором «ImageList1». Данный компонент должен содержать изображение, используемое для пиктограмм прочих компонентов формы. К форме должны быть подключены ресурсы, содержащие изображение с идентификатором «ImgList». Ресурсы должны содержать два языка: русский (язык по умолчанию) и английский (язык перевода). Изображение «ImgList» должно содержать русскоязычные и англоязычные пиктограммы для компонентов формы.

Подключите системные сборки: IO, Metabase.

Процедура, приведённая в качестве примера, должна выполняться при наступлении события OnCreate для формы.

Sub TestFormOnCreate(Sender: Object; Args: IEventArgs);
Var
    MB: IMetabase;
    Resource: IResourceObject;
    Locales: IResourceLocales;
    Locale: IResourceLocale;
    Binares: IResourceBinaries;
    Stream: IIOStream;
    BinKey: Integer;
Begin
    // Получаем ресурсы
    Resource := Self.Resources;
    // Получаем языки ресурсов
    Locales := Resource.Locales;
    // Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    // Выполняем поиск в ресурсах текущего языка репозитория
    Locale := Locales.FindByKey(MB.CurrentLocale);
    // Получаем изображения из ресурсов для текущего языка репозитория
    Binares := Locale.Binaries;
    // Создаем поток
    Stream := New MemoryStream.Create;
    // Получаем ключ для изображения из ресурсов для текущего языка репозитория
    BinKey := Binares.FindById("ImgList");
    // Загружаем в поток из ресурсов изображение с найденным ключом
    If Binares.Load(BinKey, Stream) Then
        // Загружаем изображение из потока в компонент ImageList
        ImageList1.LoadFromStream(Stream);
    End If;
End Sub TestFormOnCreate;

В результате выполнения примера пиктограммы, используемые для компонентов формы, будут зависеть от текущего языка репозитория.

Пример Fore.NET

Пример Fore.NET отличается от примера Fore, так как для Fore.NET компонент ImageListNet находится в разработке.

Для выполнения примера в репозитории предполагается наличие ресурсов с идентификатором «APP_RESOURCE», содержащее изображение «ImgList». Ресурсы должны содержать два языка: русский (язык по умолчанию) и английский (язык перевода). Изображение «ImgList» должно содержать русскоязычные и англоязычные варианты.

В файловой системе предполагается наличие изображения «C:\ResImg.png».

Imports Prognoz.Platform.Interop.ForeIO;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Resource: IResourceObject;
    Locales: IResourceLocales;
    Locale: IResourceLocale;
    Binares: IResourceBinaries;
    StreamR, StreamF: IIOStream;
    BinKey: uinteger;
    FileImg: IFileInfo;
    BinW: IBinaryWriter;
Begin
    // Получаем текущий репозиторий
    MB := Params.Metabase;
    // Получаем ресурсы
    Resource := MB.ItemById["APP_RESOURCE"].Bind() As IResourceObject;
    // Получаем языки ресурсов
    Locales := Resource.Locales;
    // Выполняем поиск в ресурсах текущего языка репозитория
    Locale := Locales.FindByKey(MB.CurrentLocale As uinteger);
    // Получаем изображения из ресурсов для текущего языка репозитория
    Binares := Locale.Binaries;
    // Создаем поток
    StreamR := New MemoryStreamClass.Create();
    // Получаем ключ для изображения из ресурсов для текущего языка репозитория
    BinKey := Binares.FindById("ImgList");
    // Загружаем в поток из ресурсов изображение с найденным ключом
    If Binares.Load(BinKey, StreamR) Then
        FileImg := New FileInfoClass.Create();
        FileImg.Attach("C:\ResImg.png");
        BinW := FileImg.OpenBinaryWriter(True);
        StreamF := BinW.Stream;
        StreamF.CopyFrom(StreamR, StreamR.Size);
    End If;
End Sub;

В результате выполнения примера из ресурсов в файл «C:\ResImg.png» будет выгружено изображение, сохраненное для текущего языка репозитория.

См. также:

IResourceBinaries