Form2.Position macht nicht immer was es soll

Antworten
Benutzeravatar
lcb-User
Beiträge: 54
Registriert: Di 15. Jul 2014, 13:18
OS, Lazarus, FPC: Linux Mint 21.1 Cinnamon Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1
CPU-Target: 64Bit
Wohnort: München

Form2.Position macht nicht immer was es soll

Beitrag von lcb-User »

Liebe Forengemeinde.

Das beigefügte Demo-Programm soll eigentlich selbsterklärend sein.
Position.png
Position.png (213.49 KiB) 4907 mal betrachtet
Ein MainForm ruft ein Form2 auf und das Form2 soll eine gewünschte Position einnehmen.

Und Ihr ahnt es schon, bei mir klappt das nicht.
Zumindest nicht immer.

Nach einigen Versuchen habe ich den Verdacht das es mit den
Anpassungen des Desktop zusammen hängt.

Mein OS ist Linux Mint 21.2 Cinnamon
Da ich einen Monitor mit 2560 x 1440 Pixel habe stell ich immer die
Skalierung der Schrift auf 1,3. Um so größer der Vergrößerungsfaktor ist
um so mehr verschiebt sich die Position, nicht nur nach rechts auch nach unten. Bei wiederholten Aufruf des Programms veränder sich die Position auch.

Da kommt anscheinend die Routine, die zuständig für die Positionierung ist, nicht klar damit.

Wenn ich in einer VM Linux Mint 21.2 Mate oder xfce verwende ist alles in Ordnung.

Hat dass jemand auch schon beobachtet?
Oder hängt das mit dem Grafiktreiber zusammen?
Hab da einen AMD7-5700G am laufen. Also ein Prozessor mit integrierter Grafikkarte.
AMD Cezanne vendor: ASUSTeK driver: amdgpu
PositionDialogTest.zip
(138.44 KiB) 68-mal heruntergeladen
Sonnige Grüße
Bibsi


Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 21.1 Cinnamon 5.6.7 Kernel 5.19.0-35-generic
Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1 x86_64-linux-gtk2

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Form2.Position macht nicht immer was es soll

Beitrag von Soner »

Es gab Fehler mit poMainFormCenter ich hatte damals sogar ein Patch gereicht.
Jetzt habe ich festgestellt, dass das Problem mit Version 2.2.0 wieder aufgetaucht ist, vielleicht schon vorher, nur ich aktualisiere mein Lazarus selten.
Ondrej schrieb letztes Jahr dort, dass er irgendein Code umgeschrieben hat.
Jezt verschwindet wieder Titelzeile von Subform bei bestimmten Voraussetzungen wieder aus dem Bildschirmrand und deshalb kann man es nicht schließen. Na ja aus technischer Sicht wird es zentriert, aber praktisch ist es nicht, die Titelzeile sollte im sichtbaren Bereich bleiben. Ich habe bisher keine Zeit gehabt um das anzuschauen.

Und rechne auch damit, dass die Windowmanager unter Linux ihre eigenen Kopf haben.

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Form2.Position macht nicht immer was es soll

Beitrag von Soner »

Ich habe dein Programm getestet, es macht genau das was du möchtest. Dein Problem ist, wie ich vermutet habe, die Windowmanager von Linux.

Mein Problem taucht auf wenn Subform größer als Mainform ist und Mainform am oberen Rand ist.

Getestet mit:
Windows 10 Pro 64Bit, Lazarus 2.2.0, Fpc 3.2.3 32Bit.

Benutzeravatar
lcb-User
Beiträge: 54
Registriert: Di 15. Jul 2014, 13:18
OS, Lazarus, FPC: Linux Mint 21.1 Cinnamon Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1
CPU-Target: 64Bit
Wohnort: München

Re: Form2.Position macht nicht immer was es soll

Beitrag von lcb-User »

Hallo Soner

Danke für Deine Antwort.

Ich will mich ja nicht unbeliebt machen, aber CT hat anscheinend eine Lösung gefunden.
Da läuft`s richtig. Vielleicht kann man da was abschauen :wink: .
Es ist ja nur unter Cinnamon ein Problem. :?
Sonnige Grüße
Bibsi


Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 21.1 Cinnamon 5.6.7 Kernel 5.19.0-35-generic
Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1 x86_64-linux-gtk2

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Form2.Position macht nicht immer was es soll

Beitrag von Soner »

Ich lese öfters Cinnamon hat hier und da Baustellen, wenn es bei XFCE, KDE und Gnome kein Fehler gibt, dann ist es gut.

CodeTyphon hat wahrscheinlich LCL von Lazarus noch nicht aktualisiert. Kannst du bitte, wenn du Zeit hast von dein CodeTyphon die Datei "lcl/include/customform.inc" hier hochladen, ich möchte mal schauen was da anders ist. Ich habe keine Lust jetzt mit mobilem Internet 1,5 GB Große CodeTyphon herunterzuladen.

Benutzeravatar
lcb-User
Beiträge: 54
Registriert: Di 15. Jul 2014, 13:18
OS, Lazarus, FPC: Linux Mint 21.1 Cinnamon Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1
CPU-Target: 64Bit
Wohnort: München

Re: Form2.Position macht nicht immer was es soll

Beitrag von lcb-User »

Soner hat geschrieben:
Fr 20. Okt 2023, 23:10
Kannst du bitte, wenn du Zeit hast von dein CodeTyphon die Datei "lcl/include/customform.inc" hier hochladen
Gerne :)
customform.inc
(108.23 KiB) 66-mal heruntergeladen
Sonnige Grüße
Bibsi


Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 21.1 Cinnamon 5.6.7 Kernel 5.19.0-35-generic
Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1 x86_64-linux-gtk2

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Form2.Position macht nicht immer was es soll

Beitrag von Soner »

Ich habe jetzt Lazarus-Trunk version installiert, da taucht mein poMainFormCenter-Problem nicht, es ist genau so wie es sein soll. Vielleicht solltest du auch auf Trunk oder zumindest auf 3.0 wechseln(3.0. nicht getestet).

Wahrscheinlich wurde Bugfix nicht in die Version 2.2 eingespielt, ich bin von 1.8 auf 2.2. gewechselt und bei meine 1.8 hatte ich alle wichtigen Fehlerkorrekturen selbst eingespielt.

Ich schaue mal den unterschied jetzt von CodeTyphon.
Wenn du schon dabei bist kannst du bitte auf ein Form ein Memo packen und das bei TForm.OnCreate schreiben:

Code: Alles auswählen

//uses LCLVersion; //nicht vergessen
procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.Text:=
      'Betriebssystem: '+{$I %FPCTARGETOS%}+LineEnding+
      'Kompilerinfo: '+'FPC '+{$I %FPCVERSION%}+LineEnding+
      'Platform: '+{$I %FPCTARGETCPU%}+' - '+{$I %FPCTARGETOS%}+LineEnding+
      'LCL-Version: '+lcl_version;
end;
Ich möchte mal wissen, welche LCL-Version er verwendet, ich wette Trunk wie er das immer macht.
Aktuelle LCL-Version(trunk) ist 3.99.0.0.

Danke.

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Form2.Position macht nicht immer was es soll

Beitrag von Soner »

Ich habe jetzt die Datei von CodeTyphon angeschaut, es ist so wie ich vermutet habe, er verwendet die Trunk-Version von LCL. Es gibt nur an 4 Stellen Unterschiede, es geht um FEmbedCustomForm, dass er verwendet, siehe nach dem Kommentar "ct9999". Das mache ich auch bei meiner LCL-Anpassungen, ansonsten ist alles mit Trunk-Version gleich.
Wenn du mit CodeTyphoon zufrieden bist, dann benutze Trunk-Version von Lazarus.

Benutzeravatar
lcb-User
Beiträge: 54
Registriert: Di 15. Jul 2014, 13:18
OS, Lazarus, FPC: Linux Mint 21.1 Cinnamon Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1
CPU-Target: 64Bit
Wohnort: München

Re: Form2.Position macht nicht immer was es soll

Beitrag von lcb-User »

Soner hat geschrieben:
Sa 21. Okt 2023, 00:28
dann benutze Trunk-Version von Lazarus.
Ich hab jetzt fpcupdeluxe-x86_64-linux auf 2.4.a aktualisiert
und trust aufgesetzt.
Es hat sich aber leider nichts verändert.

Doch es hat sich was verändert: :o
der Report und die Ausgabe als PDF hat keine deutschen Umlaute mehr
Report.png
Report.png (10.42 KiB) 4780 mal betrachtet
Das ist wohl die aktuelle Report-Komponente dass ist aber eine andere Geschichte :?
Sonnige Grüße
Bibsi


Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 21.1 Cinnamon 5.6.7 Kernel 5.19.0-35-generic
Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1 x86_64-linux-gtk2

Benutzeravatar
lcb-User
Beiträge: 54
Registriert: Di 15. Jul 2014, 13:18
OS, Lazarus, FPC: Linux Mint 21.1 Cinnamon Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1
CPU-Target: 64Bit
Wohnort: München

Re: Form2.Position macht nicht immer was es soll

Beitrag von lcb-User »

Also, mein Workaround ist;

Code: Alles auswählen

procedure TMainForm.DruckDialog;
begin
  DruckRechnungForm:=TDruckRechnungForm.Create(self);
  DruckRechnungForm.Position:=TPosition(0);
  DruckRechnungForm.Top:=TForm(self).Top+(TForm(self).Height div 2) - (DruckRechnungForm.Height div 2);
  DruckRechnungForm.Left:=TForm(self).Left+(TForm(self).Width div 2) - (DruckRechnungForm.Width div 2);
  DruckRechnungForm.ShowModal;
  DruckRechnungForm.FreeOnRelease;
end;   
Das passt für mich vorerst.

Danke für die Hilfe.
Sonnige Grüße
Bibsi


Traue keiner Statistik die du nicht selbst gefälscht hast (Sir Winston Churchill 1874 - 1965)
Linux Mint 21.1 Cinnamon 5.6.7 Kernel 5.19.0-35-generic
Lazarus 2.3.0 (rev main-2_3-3744-g967034aff5) FPC 3.3.1 x86_64-linux-gtk2

Antworten