Frame Defaultgröße übernehmen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Anfänger33
Beiträge: 25
Registriert: Sa 15. Feb 2025, 13:33

Frame Defaultgröße übernehmen

Beitrag von Anfänger33 »

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.

Benutzeravatar
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

Beitrag von Jorg3000 »

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.

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;
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.

Benutzeravatar
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

Beitrag von af0815 »

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.
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.
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.
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.

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).

Antworten