Wie kann ich ein Panel(mit weiteren Objekten) zur Laufzeit vervielfältigen ?



  • Hallo,...

    Ich möchte von einem Panel zu Laufzeit mehrere Kopien anfertigen...

    Quasi ein Panel mit weiteren Objekten (Progressbar, Labels etc) welches ich
    als Hide=true im Hintergrund halte, mehrere Kopien zur Laufzeit erzeuge...

    Ich hab schon davon gelesen, dass es geht, aber nirgends wie es geht...

    Hat jemand da einen Tip fuer mich ?

    Matthias



  • Hallo

    ich bezweifle, das es eine Möglichkeit gibt, automatisch Kopieen von Controls mit Untercontrols anzufertigen. Du könntest eine eigene Funktion schreiben, das eine Kopie für das Panel mit Untercontrols erstellt.

    Meine Lösung wäre eine von TPanel abgeleitete Klasse, die bereist alle benötigten Controls beinhaltet und von dieser einfach weitere Instanzen erzeugen. Dann sparst du dir euch die versteckte, nutzlose Instanz.

    bis bald
    akari



  • Eigentlich gibt es dafür TFrame...



  • Joe_M. schrieb:

    Eigentlich gibt es dafür TFrame...

    Das Frame kenne ich noch nicht, werde es mir mal anschauen,...

    ansonsten komme ich dann wohl um ein wenig Tipparbeit nicht herum,...

    Danke aber für die Hinweise...



  • Wenn du vorher weißt, was in einem Panel alles drinstehen soll, fertige dir überhaupt eine Funktion zum Erstellen an:

    void __fastcall TForm1::CreateMyPanel()
    {
        /* ... */
    }
    

    Und dann kannst du das ganz einfach erstellen und so oft du willst. Nur eines sollte man beachten: Gebe den Komtonenten Namen, die du in einer Funktion wiederfinden kannst, sodass man das hier machen könnte:

    void __fastcall TForm1::DeleteAllMyPanels()
    {
        for(int i=0;i<ComponentCount;++i)
        {
            if(Components[i]->ClassNameIs("TPanel"))
            {
                TPanel* p=dynamic_Cast<TPanel*>(Components[i]);
                if(p->Name.Pos("MyPanel")>0)
                    delete p;
            }
        }
    }
    

    Alle Unterkomponenten der gelöschten Panels werden automatisch vom Destruktor des Panels mit gelöscht, dank der VCL von Borland... in anderen Compilern müsstest du das selbst machen.


Anmelden zum Antworten