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