[gelöst] poScreenCenter nicht in der Mitte

Rund um die LCL und andere Komponenten
Antworten
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

[gelöst] poScreenCenter nicht in der Mitte

Beitrag von catweasel »

Moin

Ich habe hier einige Formseiten (z.B. die About-Box) die ich zur Entwurfzeit
minimiere um die Übersicht auf dem Bildschirm zu behalten. Um sie zur dann
Laufzeit auf die "normale" Größe zu setzen und in der Mitte des Bildschirms
zu bringen habe ich folgenden Code, den ich in das OnShow-Ereignis der jeweiligen
Form schreibe:

Code: Alles auswählen

procedure TForm2.FormShow(Sender: TObject);
begin
  Form2.Height:=240;
  Form2.Width:=505;
  Form2.BorderIcons:=[biSystemMenu];
  Form2.Position:=poScreenCenter;
end;
Zu meinem Erstaunen wird die Formseite jedoch nicht im Bildschirmmittelpunkt dargestellt!
Wenn ich die zuvor minimierte Seite auf die "normale" Größe aufziehe und dann mein Projekt
kompiliere, dann wird die About-Box auch im Bildschirmmittelpunkt darbestellt.

Scheinbar wird die Größe der Formseite zur Entwurfszeit genommen um die Position für
"poScreenCenter" zu berechnen, egal welche Größe der Formseite ich vor Form2.Position:=poScreenCenter
mit Form2.Height oder Form2.Width einstelle.

Ist das ein Bug oder soll das wirklich so sein?

Gruß
Michael
Zuletzt geändert von catweasel am Mo 12. Apr 2010, 15:44, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: poScreenCenter nicht in der Mitte

Beitrag von theo »

Kann schon sein, dass das ein Bug ist. Bei solchen Sachen bitte immer WidgetSet angeben, kann gut sein dass das z.B. nur unter GTK2 nicht läuft.

Funktioniert's denn "manuell"? Also z.B.
Form1.Left:=(Screen.Width-Form1.Width) div 2;

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: poScreenCenter nicht in der Mitte

Beitrag von catweasel »

theo hat geschrieben:Kann schon sein, dass das ein Bug ist. Bei solchen Sachen bitte immer WidgetSet angeben, kann gut sein dass das z.B. nur unter GTK2 nicht läuft.

Funktioniert's denn "manuell"? Also z.B.
Form1.Left:=(Screen.Width-Form1.Width) div 2;
Ja, damit kommt die Form in die Bildschirmmitte :o

Code: Alles auswählen

procedure TForm2.FormShow(Sender: TObject);
begin
  Form2.Height:=240;
  Form2.Width:=505;
  Form2.BorderIcons:=[biSystemMenu];
  Form2.Left:=(Screen.Width-Form2.Width) div 2;
  Form2.Top:=(Screen.Height-Form2.Height) div 2;
  //Form2.Position:=poScreenCenter;
end;


Bei mir läuft Lazarus unter Windows (Laz: 0.9.28.2 Beta mit FPC-Version 2.2.4)

Beim BugTracker habe ich unter ID 0014028 etwas zu poScreenCenter gefunden, allerdings muß ich gestehen das ich die Fehlerbeschreibung nicht verstehe :oops:

Gruß
Michael

Antworten