Решение проблемы отображения компонентов TMediaPlayerControl в полноэкранном режиме
При разработке приложения для воспроизведения видео с использованием FireMonkey на платформе Win64 может возникнуть проблема, когда компоненты, добавленные в TMediaPlayerControl, не отображаются должным образом в полноэкранном режиме. Это происходит из-за того, что окно воспроизведения видео всегда находится на самом верхнем уровне и закрывает компоненты выше TMediaPlayerControl.
Для решения этой проблемы можно воспользоваться следующим подходом:
Создайте прозрачную форму перекрытия над формой, где расположен TMediaPlayerControl. Чтобы сделать форму прозрачной, установите свойство Transparency в True. Чтобы она оставалась поверх основной формы, установите FormStyle в StayOnTop. Также установите BorderStyle в None.
Разместите все кнопки, панели и другие элементы, которые вы хотите отобразить поверх видео, на этой прозрачной форме. Так как форма прозрачная, элементы будут казаться парящими над видео.
Для управления TMediaPlayer с помощью элементов на прозрачной форме добавьте uses MainForm под раздел implementation во вторичной форме.
Чтобы синхронизировать формы по размеру, особенно при использовании на разных дисплеях, воспользуйтесь событиям OnFormResize на основной форме. Перед доступом к форме перекрытия убедитесь, что она существует, а затем установите ее ширину и высоту в соответствии с основной формой. Переразместите элементы по мере необходимости.
Пример кода для создания прозрачной формы перекрытия:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, FMX.Helpers.Svg, FMX.Helpers.SvgReader,
FMX.Helpers.SvgWriter, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Types, FMX.Multimedia;
type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
MediaPlayerControl1: TMediaPlayerControl;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FOverlayForm: TForm;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
// Создание прозрачной формы перекрытия
FOverlayForm := TForm.Create(nil);
FOverlayForm.Transparency := True;
FOverlayForm.FormStyle := fsStayOnTop;
FOverlayForm.BorderStyle := bsNone;
// Размещение элементов на форме перекрытия
// ...
// Добавление формы перекрытия на главную форму
Self.Controls.Add(FOverlayForm);
end;
end.
Примечание: При открытии видео-формы с главной формы, прозрачную форму перекрытия необходимо создавать вручную каждый раз, иначе она все равно будет закрыта окном воспроизведения видео при отображении. Для отображения/скрытия плавающих компонентов можно использовать кнопку на прозрачной форме, которая переключает видимость других элементов. Альтернативным решением может служить решение, основанное на сочетании клавиш для лучшей удобства использования.
Контекстом является проблема отображения компонентов TMediaPlayerControl в полноэкранном режиме при разработке приложения для воспроизведения видео с использованием FireMonkey на платформе Win64, а также решение этой проблемы с помощью прозрачной формы пе
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.