[Gelöst] Frames und Forms

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

[Gelöst] Frames und Forms

Beitrag von charlytango »

Hi,

nachdem das hier immer wieder mal empfohlen wird hab ich mich an Frames -- genauer.. EIN Frame herangetraut.

Die Idee ist, dass diese eine Frame (eher ein Code-Ordnungstool um nicht zuviel Code oder Controls in einer Unit führen zu müssen) auf einem Form eingebaut wird.

Code: Alles auswählen

Type  
  MeineForm = class(TForm)
...
  private
    Foframeleft:Tfr_Mass;    //<--das ist das Frame

...
{und in einer eigenen procedure Initialize die nach dem Creat explizit aufgerufen wird}
  Foframeleft:=Tfr_Mass.Create(self);
  Foframeleft.Parent:=pnlLeft;  //<--hier wird das Fram in ein Panel geklebt.
Alles soweit klar und logisch -- klappt auch.
Ich kann zB zwei Instanzen von MeineForm mit je einer eigenen Variable erzeugen und die leben munter nebeneinander auf dem Hauptformular.

Nun etwas Komisches:
wenn ich ein drittes Formular (auch wieder eine eigene Variable) erzeuge bekomme ich die Fehlermeldung:
Exeption Class 'EComponentError' with message: Duplicate name: A Component named "fr_Mass" already exists.

fr_Mass ist der Name (bzw der Name-Property) des Frames.

Nun wundert mich das, denn auch mit dem gleichen Namen müsste sich das Frame in unterschiedlichen Form-Objekten wohlfühlen. Es existiert zwar mehrmals aber nicht im gleichen Objekt/Form.

Und warum geht es bei bestimmten Forms und genau bei dem einen nicht.

Jetzt erwarte ich keine Wunder, denn derartige Ferndiagnosen sind unmöglich, aber vielleicht fällt doch jemandem dazu was ein.
Zuletzt geändert von charlytango am Do 13. Mai 2021, 23:42, insgesamt 1-mal geändert.

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: Frames und Forms

Beitrag von af0815 »

Der Name des erzeugten Frame muss eindeutig sein. Du kannst Komponenten auch per Namen suchen. daher wenn du ein FRame mehrfach zugleich erzeugst, dann jedesmal einen eigenen Namen vergeben.

Ist dasselbste warum du einen Button1 nicht mehrfach im Designer haben kannst, nichts ungewöhliches also, nur kann dir hier der Designer nicht helfen,
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: Frames und Forms

Beitrag von wp_xyz »

Ja, das ist eine Eigenheit von Frames, hier gibt es anscheinend ein Problem mit der Namensgebung, wenn derselbe Frame mehrfach verwendet wird. Um das zu umgehen, setze ich den Namen des Frame sofot auf Leerstring:

Code: Alles auswählen

var
  F: TMyFrame;
 ...
   F := TMyFrame.Create(self);
   F.Name := '';
   F.Parent := Self;

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Frames und Forms

Beitrag von charlytango »

af0815 hat geschrieben:
Do 13. Mai 2021, 18:46
Der Name des erzeugten Frame muss eindeutig sein. Du kannst Komponenten auch per Namen suchen. daher wenn du ein FRame mehrfach zugleich erzeugst, dann jedesmal einen eigenen Namen vergeben.

Ist dasselbste warum du einen Button1 nicht mehrfach im Designer haben kannst, nichts ungewöhliches also, nur kann dir hier der Designer nicht helfen,
Hmmmm
Ich dachte immer die Eindeutigkeit muss im entsprechenden Kontext(bzw Objekt) vorliegen.
Wenn ich auf einem Formular den Button1 habe und von diesem (kompletten) Formular mehrere Instanzen dann existiert ja ein Button1 auf jedem Formular. Und damit eben zwei gleichen Namens zur Laufzeit solange die Objekte existieren.

Scheinbar ist das bei Frames anders implementiert.
Aber gut zu wissen. THX

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Frames und Forms

Beitrag von charlytango »

wp_xyz hat geschrieben:
Do 13. Mai 2021, 19:05
Um das zu umgehen, setze ich den Namen des Frame sofot auf Leerstring:
Passt, danke -- That does the trick!

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

Re: [Gelöst] Frames und Forms

Beitrag von wp_xyz »

-- gelöscht, da in falschem Thread gepostet -- leider kann man immer noch nicht seine eigenen Posts löschen...

Antworten