Перейти к содержанию
Fire Monkey от А до Я

eser

Пользователи
  • Постов

    22
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Активность репутации

  1. Like
    eser получил реакцию от H Visli в Воспроизведение видео на дополнительном мониторе   
    Может быть кто-то сталкивался с тем как заставить TMediaPlayer воспроизводить видео на втором, - дополнительном (расширенном) мониторе в Windows. По факту играет только в пределах основного монитора.
  2. Like
    eser отреагировална zekelive в [TfgFlipView] Как загрузить изображение через URL?   
    Рабочий код по загрузке изображений извне в FlipVIew: var Stream: TStream; begin Stream := TMemoryStream.Create; URL:='http://www.vk.com/123.jpg'   HTTP1.Get(URL, Stream);   Stream.Position := 0;   FV1.Images.Add;   FV1.Images[FV1.Images.Count-1].Bitmap.LoadFromStream(Stream); end;
  3. Like
    eser отреагировална dnekrasov в Использование своего шрифта под Windows   
    В Berlin и Tokyo AddFontResource и RemoveFontResource прекрасно отрабатывают, только вызывать их надо до Application.Run.
    Кстати, лучше использовать  AddFontResourceEx и RemoveFontResourceEx с флагом FR_NOT_ENUM - тогда надобность в SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) отпадает.
  4. Like
    eser отреагировална rareMax в Маршалинг/ДеМаршалинг в System.JSON   
    Вот я, например, работаю с ТелеграмБот АПИ. У него есть свои типы данных(если их так можно назвать).
    К примеру тип User
    Когда вы запрашиваете какую то инфу с участием этого типа вам придет JSON с такими данными(в моем примере getMe):
    В "result" будет как раз этот тип "User". Что бы не парсить отдельно каждое поле я создал аналогичный класс в делфи:
    TTelegaUser = Class private FID: Integer; FFirstName: String; FLastName: String; FUsername: String; published /// <summary> /// Unique identifier for this user or bot /// </summary> /// <returns></returns> [ALIAS('id')] property ID: Integer read FID write FID; /// <summary> /// User‘s or bot’s first name /// </summary> [ALIAS('first_name')] property FirstName: String read FFirstName write FFirstName; /// <summary> /// Optional. User‘s or bot’s last name /// </summary> [ALIAS('last_name')] property LastName: String read FLastName write FLastName; /// <summary> /// Optional. User‘s or bot’s username /// </summary> [ALIAS('username')] property Username: String read FUsername write FUsername; End; И теперь могу заполнить данными с моего запроса приблизительно так*:
    FtelegUser := TTelegaUser.FromJSON(content); * - На самом деле у меня чуть подругому.
    * - При условии что в "content" у вас будет приблизительно такое содержание:
     
  5. Like
    eser отреагировална Brovin Yaroslav в [TMultiView] Как избежать задержки при первом появлении TMultiView?   
    Так, я посмотрел. Сохраняем себе такую процедуру:
    procedure PreloadContent(const Control: TControl); var I: Integer; begin if Control is TStyledControl then TStyledControl(Control).ApplyStyleLookup; for I := 0 to Control.ControlsCount - 1 do PreloadContent(Control.Controls[I]); end; Она форсирует загрузку стилей. Задержка при появлении TMutliView заключается в том, что стиль загружается не сразу у любого контрола, а только по мере появления контрола. Обычно это происходит при первой отрисовки. Это правило касается всех контролов.
     
    Поэтому, в этом случае, вам нужно форсировать загрузку стилей. Это можно сделать при помощи моей процедуру PreloadContent.
    Добавьте в TForm.OnCreate и это решит задержку при первом появлении:
    PreloadContent(MultiView1);
  6. Like
    eser отреагировална Pulsarius в Проект с FireDAC под Windows 64-bit на C++ Builder   
    Привет всем! Скажите, кто-нибудь сталкивался с проблемой компиляции проекта с использованием FireDAC в C++ Builder (RAD Studio 10 Seattle) под Windows 64-bit? В проекте есть такие компоненты, как TFDConnection, TFDQuery, TFDTable. TFDConnection настроен на работу с SQLite. При компиляции в режиме Release, естественно с отключенными Dynamic RTL и Link with runtime packages, под Windows 32-bit всё в порядке, а вот под Windows 64-bit происходит ошибка, как я понял, линковщика:
    [ilink64 Warning] Warning: Out of memory [ilink64 Error] "ilink32" exited with code 2. Мне так кажется, что нет статических библиотек FireDAC для Windows 64-bit, и тем самым не удастся собрать проект со статической линковкой нужных либ, а только придётся таскать нужные библиотеки за exe-шником. Я правильно понимаю?
  7. Like
    eser отреагировална Brovin Yaroslav в Как скопировать текст в буфер обмена?   
    Запрашиваете сервис IFMXClipBoardService. У него есть два метода для копирования данных любого типа в буфер и обратно.
    uses FMX.Platform, System.Rtti; {$R *.fmx} procedure TForm13.Button1Click(Sender: TObject); var Service: IFMXClipBoardService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXClipBoardService, Service) then begin Service.SetClipboard(TValue.From<string>('My Text')); // Service.GetClipboard.AsString // Получения строкового значения обратно. end; end;
  8. Like
    eser получил реакцию от denprox в TSelection - Размер по картинке   
    ну первое что напрашивается:
     
  9. Like
    eser отреагировална ophion в Записать картинку с камеры в BLOB   
    Вот пример того, как писать и читать BLOB
    procedure SaveToFireDACBlob; var MemStream: TMemoryStream; begin FireDAC.Connected := True; MemStream := TMemoryStream.Create; try Image1.Bitmap.SaveToStream(MemStream); MemStream.Seek(0,0); FDQueryInsert.ParamByName('Media').LoadFromStream(MemStream,ftBlob); FDQueryInsert.ParamByName('MType').AsString := '0'; FDQueryInsert.ExecSQL(); except on e: Exception do begin ShowMessage(e.Message); end; end; MemStream.Free; FireDAC.Connected := False; end; procedure LoadFromFireDACBlob; var BlobStream: TStream; begin FireDAC.Connected := True; try FDQuerySelect.Open; FDQuerySelect.First; while(not FDQuerySelect.EOF)do begin // access a stream from a blob like this BlobStream := FDQuerySelect.CreateBlobStream(FDQuerySelect.FieldByName('Media'),TBlobStreamMode.bmRead); // access a string from a field like this if (FDQuerySelect.FieldByName('MType').AsString='0') then begin // load your blob stream data into a control ImageViewer.Bitmap.LoadFromStream(BlobStream); end; BlobStream.Free; FDQuerySelect.Next; end; except on e: Exception do begin //ShowMessage(e.Message); end; end; FireDAC.Connected := False; end; {источник http://www.fmxexpress.com/read-and-write-a-blob-field-using-firedac-with-firemonkey-on-android-and-ios/} Касательно работы с изменением качества/размера, считаю что необходимо использовать TBitmapSurface  (unit FMX.Surfaces)
  10. Like
    eser отреагировална estra в Генерация GUID на mac osX   
    var g: TGUID; begin CreateGUID( g ); end; Этот способ подойдет и для VCL и для FM.
  11. Like
    eser отреагировална AngryOwl в Как программно добавить анимацию к TListBoxItem   
    TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); и только после этого удаляйте.
    Но здесь может возникнуть ряд проблем.
    Во-первых - оптимально делать синхронизацию. Во-вторых - ввиду "ряда особенностей" FMX все может работать на Windows 8, но не будет работать (или будет, но с ошибками) на Windows 7. А на Windows XP вообще может себя повести в "3-ем варианте"... ) Более стабильно будет работать на Маке и на Android ))) Вот такие чудеса могут быть.
     
    Чтобы всего этого избежать, Вам нужно точно определить ту последовательность, которую Вы хотите воспроизвести и сделать синхронизацию.
     
    Например, как писал выше:
    TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); // тогда Animate для 'Opacity' и 'Height' выполнится параллельно // а вот следующая процедура выполнится только после окончания AnimateWait 'Height' TThread.Synchronize(TThread.CurrentThread, тут_ваша_процера_удаления_item); Думаю, что корректно описал - как. Но было бы более точно и правильно, если бы на ваш вопрос ответил непосредственно Ярослав Бровин. Он все-таки более компетентен.
×
×
  • Создать...