TabSheet einer PageControl "schließen" (BCB6)



  • Hallo.

    Vlt. ist meine Frage schon etwas zu speziell und es gibt schon einen Antwort in diesem Forum, aber leider habe ich nichts finden können.
    Ich habe folgendes Problem:

    Ich habe auf meiner Form ein PageControl mit mehreren Pages (TabSheets).
    Diese können über einen Menübefehl "Neu" wärend der Laufzeit hinzugefügt werden

    TTabSheet *Page;
    Page = [B]new[/B] TTabSheet(PageControl1);
    Page->PageControl = PageControl1; 
    PageControl1->ActivePage = Page;
    

    Darin enthalten sind zwei RichEdits, getrennt duch eine Splitterkomponente.
    Die Erzeugung erfolgt genauso wie beim TabSheet, inklusive Alignment. Hier Bsp. Splitter:

    Sp1 = [B]new[/B] TSplitter(Page);             
    Sp1->Parent = Page;
    

    So, nun möchte ich natürlich auch die aktuell aktive Page (TabSheet) inklusive ihres Inhaltes schließen können. Um es einfach zu halten über ein Menüpunkt "Schließen".
    Die Suche in der CBuilderHilfe hat bisher nichts ergeben. (Der obige Code stammt übrigens aus der Hilfe).
    Also habe ich mir folgendes gedacht...

    [B]delete[/B] PageControl1->Pages->TTabSheet(PageControl1->ActivePage);
    

    Wobei ich mir nicht so ganz im Klaren darüber bin was ich mit TTabSheet *Page machen soll, eigentlich liegt ja da meine aktuelle Page (TabSheet)...

    Im Prinzip ist die Sache vergleichbar mit Internetbrowsern à la Opera, FireFox etc., welche Tabs unterstützen. Auch dort kann man ja einen neuen Tab wählen um darin eine Seite anzeigen zu lassen und diesen dann wieder mit samt der Seite schließen.

    Danke für eure Hilfe im Voraus.

    MfG M



  • delete PageControl1->ActivePage ;
    // oder 
    delete PageControl1->Pages[welcher Index auch immer] ;
    


  • Hallo, danke für die schnelle Antowrt, bin zwischenzeitlich auch drauf gestoßen. Manchmal dauerts halt ein wenig länger 😉
    Mit dem Index wird es aber nicht klappen, da ich die TabSheets nicht indiziere. Oder wird das automatisch gemacht - also nach Aufruf/Erzeugsungsreihenfolge?

    MfG Martin



  • Hallo

    Den eindeutigen Index kannst du aus den TabSheets mit der Eigenschaft TTabSheet::PageIndex ermitteln, den du dann in dem Array TPageControl::Pages anwenden kannst.

    Oder wird das automatisch gemacht - also nach Aufruf/Erzeugsungsreihenfolge?

    Sozusagen ja. Wobei das Löschen eines Elements die Indexe aller eventuell nachfolgenden Elemente um eins verringert, der Index ist also nicht gleichbleibend. Deshalb immer direkt die Eigenschaft PageIndex benutzen, dort ist immer der korrekte Wert drin.

    bis bald
    akari



  • akari schrieb:

    Wobei das Löschen eines Elements die Indexe aller eventuell nachfolgenden Elemente um eins verringert, der Index ist also nicht gleichbleibend. Deshalb immer direkt die Eigenschaft PageIndex benutzen, dort ist immer der korrekte Wert drin.

    bis bald
    akari

    Ja ist logisch, aber zum schließen brauche ich nicht zwangsläufig den Index. Aber Dein Posting hat mich auf eine andere Idee zu meinem Projekt gebracht.

    MfG M


Anmelden zum Antworten