Einzelnen Beitrag anzeigen

progopa

Registriert seit: 22. Nov 2012
28 Beiträge
 
#2

AW: Parent löschen?

  Alt 5. Nov 2019, 11:07
Guten Tag.
Hier noch mal mein Problem ausführlicher.
In dem zu verschiebenden Fenster läuft der VLC Player.
Wärend des Abspielens eines Videos möchte ich per Button dieses Fenster auf einen von 2 Monitoren als Vollbild darstellen.
Die Form soll auch wieder in ein Panel(Platzhalter) auf dem Hauptfenster verschoben werden.
Vollbildmodus funktioniert problemlos.

So ändere ich das Fenster.
Delphi-Quellcode:
procedure TFrmVideo.ShowFullScreen1;
begin
  InitPos(0);
  PasLibVlcPlayer1.Align := alClient;
  FormStyle := fsNormal;
  Invalidate;
  Show;
end
;

Delphi-Quellcode:
procedure TFrmVideo.InitPos(Monitor: Integer);
begin
  FormStyle := fsNormal;
  PasLibVlcPlayer1.Align := alNone;
  MakeFullyVisible(Screen.Monitors[Monitor]);
  aleft := Screen.Monitors[Monitor].left;
  aTop := Screen.Monitors[Monitor].Top;
  awidth := Screen.Monitors[Monitor].width;
  aheight := Screen.Monitors[Monitor].height;
  Align := alNone;
  Parent := nil;
end;
Zum Einbetten in eine Form übergebe ich ein TPanel als Parent.
Ein Zuweisen des Parent an die Form wüde funktionieren.
Ist hier allerdings nicht verwendbar, da der VLCPlayer bei Parentwechsel im aktiven Zustand einen Fehler bringt.
Mit diesem Code möchte ich die Form auf die Position des Panels legen.
Die Position ist jedoch nicht richtig.
Delphi-Quellcode:
procedure TFrmVideo.SetParentComponent(aParent: TWinControl);
var
  P: TPoint;
begin
  p := aParent.ClientToScreen(Point(aParent.Left,aParent.Top));
  aleft := p.x;
  aTop := p.y;
  awidth := aParent.Width;
  aheight := aParent.Height;
  Self.left := aleft;
  Self.Top := aTop;
  Self.width := awidth;
  Self.height := aheight;
  FormStyle := fsNormal;
  Invalidate;
  Show;
end;
Als Aparent wird ein Panel übergeben.

Hat wer eine Idee, was ich falsch mache.
Danke im Voraus.

Geändert von progopa ( 5. Nov 2019 um 11:26 Uhr)
  Mit Zitat antworten Zitat