Ärger mit den Frames

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Ärger mit den Frames

Beitrag von Lorca »

Hallo zusammen,

kann jemand sagen warum Frames im Design Modus auf zwei verschiedene Art und Weisen angezeigt werden?
Diese Darstellung wäre korrekt:
Frame_2.PNG
Frame_2.PNG (3.53 KiB) 1442 mal betrachtet


Diese ist für mich Mist:
Frame_1.PNG
Frame_1.PNG (5.84 KiB) 1442 mal betrachtet


Ebenfalls ist bei der (für mich) falschen Darstellung oft eine Caption vergeben, die ich nicht unterbinden kann.
Selbst das entfernen aus der *.lfm Datei bringt nichts.
Beim Start des Programms kommt dann die Fehlermeldung: Unknown Property: "Caption".

Was läuft bei mir schief?

Viele Grüße
Lorca

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Ärger mit den Frames

Beitrag von af0815 »

Ohne Beispiel kann ich da nicht wirklich was nachvollziehen. Für sieht beides OK aus. Auch die Lazarus und FPC Version wäre interessant.

Ich verwende Frames sehr oft, allerdings nur dynamisch, nie zur Designzeit zugewiesen, weil mir da Designer schon bei Delphi unsympathisch war. Deswegen verwende ich das zur Designzeit nie. Und was ist der Grund überhaupt Frames zur Designzeit zu verwenden ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Ärger mit den Frames

Beitrag von theo »

af0815 hat geschrieben:
Mi 10. Aug 2022, 13:01
Ich verwende Frames sehr oft, allerdings nur dynamisch, nie zur Designzeit zugewiesen, weil mir da Designer schon bei Delphi unsympathisch war. Deswegen verwende ich das zur Designzeit nie. Und was ist der Grund überhaupt Frames zur Designzeit zu verwenden ?
Ich teile deine Skepsis gegenüber Frames.
Aber den letzten Satz verstehe ich nicht.
Wenn du Frames nicht zur Designzeit verwendest, warum verwendest du sie denn überhaupt?
"Designzeit" ist ja gerade der Witz an Frames:
"Thus frames are an effective tool for creating customizable composite controls at design time—something close to a visual component-building tool."
https://etutorials.org/Programming/mast ... ng+Frames/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Ärger mit den Frames

Beitrag von af0815 »

Ich verwende Frames als gekapselte Einheiten. Öfters werden die in einem Dummy dynamisch getestet und zur Laufzeit in Programmen verwendet.

Ich habe schon Delphi verflucht, das es zur Deignzeit bei einem Klick den originalen Handler überschrieben hat und man es manchmal nicht sieht. Auch bei Änderungen im Frame wurden die in der IDE nicht gleich nachgezogen, man musste jedes mal das Form mit dem Frame schließen und öffnen. Ein gleiches Verhalten habe ich vor langer Zeit bei Lazarus gesehen. Ja Bugs in Delphi müssen ja in Lazarus übernommen werden. Deswegen keine Frames zur Deignzeit einbetten und alles ist super stabil, mehrfach verwendbar und funktioniert.
Falls es in Lazarus mittlerweile funktionieren sollte, ist es schön, mir aber nicht wichtig.

Wenn es ein Beispiel gibt, so sehe mir das gerne an. Vielleicht werde ich positiv Überrascht, aber der aktuelle Workflow ist extrem stabil. Vor allen, wenn Frames wirklich mit einem neutralen Testprogramm getestet werden können, sind sie extrem robust und universell.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Ärger mit den Frames

Beitrag von PascalDragon »

af0815 hat geschrieben:
Mi 10. Aug 2022, 13:01
Und was ist der Grund überhaupt Frames zur Designzeit zu verwenden ?
Meinst du damit jetzt einen Frame zur Designzeit mit Hilfe des Designers zur entwickeln oder dieses zur Designzeit mit Hilfe eines TFrame einzubinden? Bei ersterem sehe ich jetzt keinen Grund das nicht zu machen, außer man nutzt allgemein den Designer nicht. Bei letzterem kann es sein, dass man einfach nur Komponenten sinnvoll zusammen gruppiert und diese mehrfach in der Anwendung verwendet. Dann kann man sich das Leben einfach machen und einfach zur Designzeit das dann schon zusammen klicken. Habe ich persönlich noch nicht so gebraucht, aber je nach Use Case kann das sehr sinnvoll sein.
FPC Compiler Entwickler

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Ärger mit den Frames

Beitrag von af0815 »

Ich würde es einmal ausprobieren. Im Frame was ändern, umschalten im Form mit dem Frame was ändern und wirklich mal damit arbeiten. Ich bin damit zur Designzeit nicht glücklich geworden. Für mich nicht brauchbar gewesen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Ärger mit den Frames

Beitrag von wp_xyz »

Frames sind für mich sowas wie "zur Designzeit schnell entwickelte" Komponenten: Man kann verschiedene Komponenten zu einem Frame zusammenklicken und auch schon die Event-Handler dazuschreiben ohne in die Tiefen der Komponentenentwicklung eintauchen zu müssen. Das allseits beliebte TLabelEdit kann man so ohne die Unstimmigkeiten der "echten" Komponente nachbauen und kann sich auch gleich eine TLabelCombobox nach demselben Schema dazubauen. Aber das sind nur zwei triviale Beispiele.

Das einzige, was mit Frames unangenehm ist, das was af0815 schon sagte: Wenn man Frames zur Designzeit ins Formular einfügt und dann zu unbedarft auf dem Formular herumklickt, kann es passieren (wird es passieren), dass die beim Frame-Entwurf sorgsam zugewiesenen Event-Handler durch leere Handler überschrieben werden, so dass das alles nicht mehr funktioniert. Daher grundsätzlich: Frames zur Designzeit entwerfen, aber nur zur Laufzeit ins Formular einfügen.

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

Re: Ärger mit den Frames

Beitrag von theo »

Vielleicht muss ich das mal wieder ausprobieren, aber für mich waren Frames immer reichlich undurchsichtig und schnell war etwas futsch.
Es kommt sicher auf den Anwendungsfall an, aber mit

Code: Alles auswählen

TMyControl = class(TCustomControl)    
hatte ich immer das bessere Gefühl.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Ärger mit den Frames

Beitrag von af0815 »

Frames sind intern keine so große Hexerei. Vereinfacht gesagt ist es eine Form, deren Elemente in den Zielbereich hineingeblendet werden. Das einzige Problem war früher oft, das Frames und Forms die Parent aders behandelt haben, das ist aber Geschichte.

Für mich sind Frames perfekte Container die man sehr streng Kapseln kann und man sehr gut mehrfach verwenden kann. Beispielsweise, kan man ein Tabsheet nehmen und jede Seite ist ein Frame. Räumt den Code spektakulär auf. Das geht mit Forms alleine nicht so schön.

Und ich kann Frames dort mehrfach verwenden, wenn ich es entspechen Parametrierbar machen.

Und ich habe bei Listen oft Frames, da ich damit wundervoll eine Zeile gestalten kann und dies xFach je nach Datenmenge anzeige. Da gibt es keine Formatierungsprobleme und durch geschicktes Anchoring ist das Frame für Raspi, Linux, Win, quer und hochkant verwendbar. Wie gesagt 1x viel Arbeit, dann geil im verwenden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Ärger mit den Frames

Beitrag von fliegermichl »

af0815 hat geschrieben:
Do 11. Aug 2022, 09:32
...
Und ich habe bei Listen oft Frames, da ich damit wundervoll eine Zeile gestalten kann und dies xFach je nach Datenmenge anzeige. Da gibt es keine Formatierungsprobleme und durch geschicktes Anchoring ist das Frame für Raspi, Linux, Win, quer und hochkant verwendbar. Wie gesagt 1x viel Arbeit, dann geil im verwenden.
Könntest Du mal ein kleines Beispiel erstellen, daß das demonstriert?

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Ärger mit den Frames

Beitrag von Lorca »

Hallo zusammen,

danke für eure zahlreichen Antworten. :)

Was ich nun herausgefunden habe ist, das manches mal die Lazarus Version in die *.Lfm Datei
des Frames gespeichert wird ( LCLVersion = '2.0.12.0').
In diesem Fall ist es für mich Mist. Ich habe dann diesen Eintrag entfernt, und schon wurde das Frame so dargestellt wie ich es wollte.
Wieso und warum die LCL Version mal gespeichert wird, und ein anderes mal wieder nicht, kann ich nicht sagen.

Ebenfalls wird manches mal eine Caption für dieses Frame in der *.Lfm Datei eigetragen. Dies führt dann zu dem Fehler:
"Property not Found". Warum manchmal eine Caption eingetragen wird kann ich ebenfalls nicht sagen.
Nach dem Entfernen dieses Eintrages für die Caption, hat alles wie gewohnt funktioniert.


Viele Grüße
Lorca

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Ärger mit den Frames

Beitrag von af0815 »

Verwendest du verschiedene Lazarusversionen ? Und verwendest du die aktuelle stabile Version ?

Weil viele so Erscheinungen wurden in den neueren Releases gefixt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten