Ich habe ein Frame erstellt (Schaltflächen OK, Abbrechen, jeweils 100 Punkte Breit und 15 Punkte Zwischenraum). Das Frame ist 245 Punkte breit. In der Höhe das gleich Problem (15 Abstand vom Rand +30 Schltflächenhöhe +15 Abstand vom Rand). Es werden die TBitBtn benutzt.
Wie kann ich die Maße im meine Form1 übernehmen? Händisch immer die Größe eingeben ist etwas mühselig.
Frame Defaultgröße übernehmen
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 375
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: Frame Defaultgröße übernehmen
Hi!
Ich benutze gerne und häufig Frames, aber mit dem Draufziehen auf ein Form in der IDE habe ich keine gute Erfahrungen gemacht, auch bezüglich anderer Eigenschaften im Frame.
Deshalb erzeuge ich Frames erst zur Laufzeit und weise es per .Parent dem Form zu.
Ich habe in den letzten Jahren schon mehrfach in Kommentaren gelesen, dass einige Leute Frames lieber manuell einbinden, weil es gelegentlich Probleme mit den Eigenschaften von Unterkomponenten gibt.
Ich benutze gerne und häufig Frames, aber mit dem Draufziehen auf ein Form in der IDE habe ich keine gute Erfahrungen gemacht, auch bezüglich anderer Eigenschaften im Frame.
Deshalb erzeuge ich Frames erst zur Laufzeit und weise es per .Parent dem Form zu.
Code: Alles auswählen
TForm1 ...
MeinFrame: TMyFrame;
... und bei OnCreate ...
procedure TForm1.FormCreate(Sender: TObject);
begin
MeinFrame:=TMyFrame.Create(self);
MeinFrame.Parent:=self;
MeinFrame.Left:=50;
MeinFrame.Top:=50;
end;
- af0815
- Lazarusforum e. V.
- Beiträge: 6815
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Frame Defaultgröße übernehmen
Wenn man es richtig verstanden hat, dann verwendet es man genau umgekehrt. Das Formular gibt die Größe des Frames vor und steuert es auch.Anfänger33 hat geschrieben: Sa 22. Feb 2025, 15:40 Ich habe ein Frame erstellt (Schaltflächen OK, Abbrechen, jeweils 100 Punkte Breit und 15 Punkte Zwischenraum). Das Frame ist 245 Punkte breit. In der Höhe das gleich Problem (15 Abstand vom Rand +30 Schltflächenhöhe +15 Abstand vom Rand). Es werden die TBitBtn benutzt.
Wie kann ich die Maße im meine Form1 übernehmen? Händisch immer die Größe eingeben ist etwas mühselig.
a ) Die IDE führt Änderungen am Frame erst nach einem neuerlichen Laden des Forumlars mit. Wenn man die Form mit dem eigebetteten Frame komplett schliesst (auch das Sourcefenster !) und neu öffnet werden die Änderungen erkannt.Jorg3000 hat geschrieben:Ich habe in den letzten Jahren schon mehrfach in Kommentaren gelesen, dass einige Leute Frames lieber manuell einbinden, weil es gelegentlich Probleme mit den Eigenschaften von Unterkomponenten gibt.
b ) Überschreibt man ein OnXXX Event (absichtlich oder durch falsches Doppelklicken) so bleibt der ursprüngliche Event verschollen (=unbrauchbar) auch wenn man den Event im Form löscht. Auch wird durch das Überschreiben der ursprüngliche Event nicht ausgeführt.
a ) und b ) machen natürlich bei dynamisch erzeugten Frames kein Problem (Sind ja zur Designzeit nicht vorhanden)
Ja, ich verwende Frames oft und gerne für wartbare Layouts, weil man wirklich alles Kapseln kann.
Übrigends kann man sich Formulare genauso als Vorlagen herrichten und verwenden. Man muss dann nur auf das vererbte Formular beim Erzeugen eines neuen Formulars zugreifen. Ist super für selbst geschriebene Dialoge.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).