Load(Key: Integer; Stream: IIOStream): Boolean;
Load(Key: uinteger; Stream: Prognoz.Platform.Interop.ForeIO.IIOStream): boolean;
Key. Ключ изображения;
Stream. Поток.
Метод Load загружает изображение с указанным ключом из ресурсов в поток.
Если загрузка прошла успешно, то метод возвращает значение True, в противном случае - False.
Для выполнения примера предполагается наличие формы, содержащей компонент 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, так как для 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» будет выгружено изображение, сохраненное для текущего языка репозитория.
См. также: