Positionierung eines Fensters
Positionierung eines Fensters
Hallo,
ich verwende LAZARUS Version 3.4 und habe Probleme bei der Positionierung von
untergeordneten Fenstern (forms).
poMainFormCenter funktioniert (natürlich nur mit der mainform als Aufrufer)
poOwnerFormCenter verstehe ich so, dass das aufgerufene Fenster in der Mitte
des aufrufenden (owner) Fensters plaziert wird. Das klappt nicht.
Hinweis es geht um den Aufruf eines modalen Fensters (showModal)
ich verwende LAZARUS Version 3.4 und habe Probleme bei der Positionierung von
untergeordneten Fenstern (forms).
poMainFormCenter funktioniert (natürlich nur mit der mainform als Aufrufer)
poOwnerFormCenter verstehe ich so, dass das aufgerufene Fenster in der Mitte
des aufrufenden (owner) Fensters plaziert wird. Das klappt nicht.
Hinweis es geht um den Aufruf eines modalen Fensters (showModal)
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1651
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Positionierung eines Fensters
Kann ich nicht nachvollziehen.
Im Anhang ein kleines Testprojekt mit 3 Formularen. Im ersten ein Button, der Formular2 erstellt und im zweiten ein Button der Formular 3 erstellt und öffnet.
Beide werden brav in der Mitte des vorhergehenden Formulares platziert.
Im Anhang ein kleines Testprojekt mit 3 Formularen. Im ersten ein Button, der Formular2 erstellt und im zweiten ein Button der Formular 3 erstellt und öffnet.
Beide werden brav in der Mitte des vorhergehenden Formulares platziert.
- Dateianhänge
-
project1.zip
- (140.39 KiB) 60-mal heruntergeladen
- Zvoni
- Beiträge: 396
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
- CPU-Target: 32Bit
- Wohnort: BW
Re: Positionierung eines Fensters
Und wird der Owner auch gesetzt für die ChildForm?
Was könnte blos dieser Parameter im Create sein, hmm?
Code: Alles auswählen
ModalForm:=TMyModalForm.Create(TheOwner: TComponent);
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Re: Positionierung eines Fensters
@Zvoni
Fenster werden nicht zur Laufzeit erzeugt
Fenster werden nicht zur Laufzeit erzeugt
Re: Positionierung eines Fensters
@fliegermichi
werde Dein Beispiel testen, danke.
Muß jetzt leider erstmal weg
werde Dein Beispiel testen, danke.
Muß jetzt leider erstmal weg
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1651
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Positionierung eines Fensters
Dann ist es klar. Deine Formulare werden beim Programmstart automatisch erzeugt und dann ist Application der Owner.
Das funktioniert nur dann richtig, wenn die Formulare zur Laufzeit erzeugt werden mit dem jeweils aufrufenden Formular als Owner.
Ich habe in meinen Einstellungen Projekt -> Projekteinstellungen -> Projekteinstellungen -> Formulare die Option "Neue Formulare automatisch erzeugen" immer deaktiviert.
- Zvoni
- Beiträge: 396
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
- CPU-Target: 32Bit
- Wohnort: BW
Re: Positionierung eines Fensters
Mal was prinzipielles:
Es gibt (wenn überhaupt) nur ein einziges Fenster, welches bei Program-Start automatisch erzeugt wird: Die MainForm.
Punkt!
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1651
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Positionierung eines Fensters
Wenn die Option nicht deaktiviert wird, erzeugt Lazarus alle Formulare beim Programmstart.
Re: Positionierung eines Fensters
Achja?Zvoni hat geschrieben: Mo 30. Sep 2024, 11:45 Mal was prinzipielles:
Es gibt (wenn überhaupt) nur ein einziges Fenster, welches bei Program-Start automatisch erzeugt wird: Die MainForm.
Punkt!
Code: Alles auswählen
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
{$IFDEF HASAMIGA}
athreads,
{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, unit1, unit2
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
- Zvoni
- Beiträge: 396
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
- CPU-Target: 32Bit
- Wohnort: BW
Re: Positionierung eines Fensters
Genau das meine ich: Handarbeit ist die Devise.theo hat geschrieben: Mo 30. Sep 2024, 11:49Achja?Zvoni hat geschrieben: Mo 30. Sep 2024, 11:45 Mal was prinzipielles:
Es gibt (wenn überhaupt) nur ein einziges Fenster, welches bei Program-Start automatisch erzeugt wird: Die MainForm.
Punkt!
Code: Alles auswählen
program Project1; {$mode objfpc}{$H+} uses {$IFDEF UNIX} cthreads, {$ENDIF} {$IFDEF HASAMIGA} athreads, {$ENDIF} Interfaces, // this includes the LCL widgetset Forms, unit1, unit2 { you can add units after this }; {$R *.res} begin RequireDerivedFormResource:=True; Application.Scaled:=True; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.Run; end.
Entweder diesen Automatismus abschalten (siehe fliegermichl), oder nach Hinzufügen einer Form in der lpr den Kram rauslöschen (mache ich immer)
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Re: Positionierung eines Fensters
Dann musst du es aber anders formulieren. z.B. "Meiner Meinung nach sollte man alle Fenster ausser dem Mainform manuell erzeugen".
Das würde man auf Anhieb verstehen (Auch ohne "Punkt!").

- Zvoni
- Beiträge: 396
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
- CPU-Target: 32Bit
- Wohnort: BW
Re: Positionierung eines Fensters
OK, Einverstanden.theo hat geschrieben: Mo 30. Sep 2024, 12:12Dann musst du es aber anders formulieren. z.B. "Meiner Meinung nach sollte man alle Fenster ausser dem Mainform manuell erzeugen".
Das würde man auf Anhieb verstehen (Auch ohne "Punkt!").![]()
Meine "Formulierung" hätte besser sein können.
Für mich war es halt immer eines meiner grundlegenden Paradigmen:
Ich bin der Programmierer, ich bestimme, was wann geschieht, und nicht irgendein von irgendjemandem festgelegter Automatismus (dem ich durchaus NICHT seine Existenzberechtigung abspreche)
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
-
- Beiträge: 207
- Registriert: Di 29. Okt 2019, 12:51
- Wohnort: Deutschland , Baden-Württemberg
Re: Positionierung eines Fensters
Mal eine Frage am Rande.
Gibt es eine Möglichkeit das 'Formulare automatisch erzeugen' fix zu deaktivieren ohne das man dieses jedes mal wenn man ein neues Projekt erzeugt manuell deaktivieren muß?
Ich habe es schon mit den Projekteinstellungen versucht aber die 'Vorgabeoption' bezieht sich leider nur auf die Compilereinstellungen.
Gibt es eine Möglichkeit das 'Formulare automatisch erzeugen' fix zu deaktivieren ohne das man dieses jedes mal wenn man ein neues Projekt erzeugt manuell deaktivieren muß?
Ich habe es schon mit den Projekteinstellungen versucht aber die 'Vorgabeoption' bezieht sich leider nur auf die Compilereinstellungen.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 24.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 3.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1651
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Positionierung eines Fensters
Habe ich auch schon gesucht. Bin aber auch nicht fündig geworden.HobbyProgrammer hat geschrieben: Mo 30. Sep 2024, 13:25 Mal eine Frage am Rande.
Gibt es eine Möglichkeit das 'Formulare automatisch erzeugen' fix zu deaktivieren ohne das man dieses jedes mal wenn man ein neues Projekt erzeugt manuell deaktivieren muß?
Ich habe es schon mit den Projekteinstellungen versucht aber die 'Vorgabeoption' bezieht sich leider nur auf die Compilereinstellungen.
- Zvoni
- Beiträge: 396
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
- CPU-Target: 32Bit
- Wohnort: BW
Re: Positionierung eines Fensters
Da das eigentlich eine Projekt-Einstellung ist, müsste das doch in irgendeiner dieser lpi, lps oder sonstwas Dateien stehen.fliegermichl hat geschrieben: Mo 30. Sep 2024, 14:47Habe ich auch schon gesucht. Bin aber auch nicht fündig geworden.HobbyProgrammer hat geschrieben: Mo 30. Sep 2024, 13:25 Mal eine Frage am Rande.
Gibt es eine Möglichkeit das 'Formulare automatisch erzeugen' fix zu deaktivieren ohne das man dieses jedes mal wenn man ein neues Projekt erzeugt manuell deaktivieren muß?
Ich habe es schon mit den Projekteinstellungen versucht aber die 'Vorgabeoption' bezieht sich leider nur auf die Compilereinstellungen.
Hat Lazarus nicht so ne "Template"-lpi (oder welche Datei-Endung auch immer)?
Vielleicht mal zwei leere Projekte erstellen, einmal mit und einmal Automatismus abgeschaltet, und dann die ganzen lpi, lps etc. gegen ein diff werfen
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.