eser
-
Постов
22 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Активность репутации
-
eser получил реакцию от H Visli в Воспроизведение видео на дополнительном мониторе
Может быть кто-то сталкивался с тем как заставить TMediaPlayer воспроизводить видео на втором, - дополнительном (расширенном) мониторе в Windows. По факту играет только в пределах основного монитора.
-
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; -
eser отреагировална dnekrasov в Использование своего шрифта под Windows
В Berlin и Tokyo AddFontResource и RemoveFontResource прекрасно отрабатывают, только вызывать их надо до Application.Run.
Кстати, лучше использовать AddFontResourceEx и RemoveFontResourceEx с флагом FR_NOT_ENUM - тогда надобность в SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) отпадает.
-
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" у вас будет приблизительно такое содержание:
-
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); -
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-шником. Я правильно понимаю?
-
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; -
-
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)
-
eser отреагировална estra в Генерация GUID на mac osX
var g: TGUID; begin CreateGUID( g ); end; Этот способ подойдет и для VCL и для FM.
-
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); Думаю, что корректно описал - как. Но было бы более точно и правильно, если бы на ваш вопрос ответил непосредственно Ярослав Бровин. Он все-таки более компетентен.