PageControl schließen



  • Hallo leute,

    wie kann ich die ausgewählte Page schließen? Wie ich die gewählte Seite herauskriege weiß ich aber das löschen macht mir Probleme.

    Ach, bevor ich es vergesse ich will auch alle gleichzeitig schließen.



  • Was heisst löschen gleich nochmal auf Englisch ...



  • Ich find da nur RemoveControl und RemoveComponent. Damit krieg ich aber nur die RichEdit gelöscht aber nicht die einzelne Seite bzw. der Panel wird nicht gelöscht und damit ist die Seite noch da oder?

    //feststellen der gewählte Seite
        int Count = PageControl1->ActivePage->TabIndex;
        Count++;
    
       //Löschen der RichEdit
        TS[Count]->RemoveControl(RE[Count]);
       //Löschen des Tabsheet/Page
        PageControl1->RemoveComponent(TS[Count]);
    

    [ Dieser Beitrag wurde am 13.04.2003 um 17:39 Uhr von mosta editiert. ]



  • Mit RemoveControl entfernst Du die Seite aus der Verwaltungs- Liste in PageControl, löschen musst Du das Teil auch noch selbst!

    delete TS[Count];

    PS: Aber nicht NUR löschen!!!



  • Original erstellt von DerAltenburger:
    Aber nicht NUR löschen!

    Sondern? RemoveControl und RemoveComponent sind jedenfalls überflüssig.



  • wieso sind die überfüssig?

    if(PageControl1->ActivePage)
          {
            int Count = PageControl1->ActivePage->TabIndex;
            Count++;
    
            delete(RE[Count]);
            delete(TS[Count]);
    
            PageControl1->SelectNextPage(Count>0);
          }
    

    hab den Code jetzt so geädert das löschen funktioniert wunderbar, nur bei einigen Fällen nicht:

    - wenn ich 2x die "erste" Löschen will
    - wenn ich die letzte löschen will, also wenn ich alle gelöscht habe und nur eine da ist dan kommt ein Acxeption Fehler.

    [ Dieser Beitrag wurde am 13.04.2003 um 19:32 Uhr von mosta editiert. ]



  • Ich habe keine Ahnung, was du genau erreichen willst, aus deinem Code-Gerümpel (sorry ;)) wird das jedenfalls nicht klar.

    for (int i = PageControl1->PageCount-1; i >= 0; i--)
        delete PageControl1->Pages[i];
    

    Damit werden sämtliche TabSheets inklusive aller jeweils darauf befindlichen Controls vorschriftsmässig gelöscht.



  • na, es soll die zuletzt gewählte Seite gelöscht werden und danach die nächste Seite denn Focus erhalten.



  • @Mosta

    wieso sind die überfüssig?
    *

    Schau die mal die Hilfe zum Destructor von TTabsheet an!

    Es ist wie Jansen sagt!

    PS: dachte nur, beim Erzeugen wird ja auch erst Tabsheet erzeugt und dann PageControl hinzugefuegt. Aber Loeschen reicht.



  • Original erstellt von mosta:
    es soll die zuletzt gewählte Seite gelöscht werden und danach die nächste Seite denn Focus erhalten.

    So in etwa?

    delete PageControl1->ActivePage;
      PageControl1->SetFocus();
    

    Den Focus erhält die nächste Seite automatisch, SetFocus dient hier nur dazu, den Focus vom Button zum PageControl zurückzubringen.



  • so, funktioniert es. Ansonsten setzt er keinen Focus

    delete PageControl1->ActivePage;
       PageControl1->SelectNextPage(true);
    


  • Original erstellt von mosta:
    Ansonsten setzt er keinen Focus

    Nach dem Löschen der ActivePage ist automatisch die nächste Seite die ActivePage und somit selektiert. Bei zusätzlichem Aufruf von SelectNextPage wird dann logischerweise statt der nächsten (bezogen auf die gelöschte) die übernächste Seite selektiert. So läuft's jedenfalls im BCB6.



  • im BCB3 aber nicht



  • Pech für dich. 🙂

    PS: Keine Ursache, gern geschehen! 😉


Anmelden zum Antworten