ComponentCount per Hand ändern



  • Tach...

    ich erzeuge zur Laufzeit auf Buttonklick ttabsheets in einem pagecontrol, dazu noch eine tmemo auf jedem erzeugten ttabsheet. dann möchte ich alle memos mit schleife in eine datei schreiben.
    das problem ist, dass der componentcount des pagecontrol immer noch 0 ist, und ich den angeblich auch nicht per hand verändern kann.
    hat jemand ne idee

    hier mal der code

    ********die erzeugung der tabsheets**********
    !KLICK!   
        TTabSheet* NocheinTab = new TTabSheet(this);
        NocheinTab->PageControl = PageControl1;
        NocheinTab->Caption = E_Kapitelname->Text;
        E_Kapitelname->Clear();
        TMemo* Memoneu = new TMemo(this);
        Memoneu->Parent = NocheinTab;
        Memoneu->Align = alClient;
    *********************************************
    ********die abfrage der componentcount*******
    !KLICK!
      for (int i1 = 0; i1 < PageControl1->ComponentCount; i1++)
        {
          if (PageControl1->Components[i1]->ClassNameIs("TTabSheet"))
          {
            TTabSheet* myTab = new TTabSheet(PageControl1->Components[i1]);
            for (int i2 = 0; i2 < myTab->ComponentCount; i2++)
            {
              if (myTab->Components[i2]->ClassNameIs("TMemo"))
              {
                TMemo* myMemo = new TMemo(myTab->Components[i2]);
                F_xml->M_xml->Lines->Add(myMemo->Text);
              }
            }
          }
        }
    *********************************************
    

    danke schonmal

    gruss balko

    <edit>Bitte Code-Tags benutzen!</edit>

    [ Dieser Beitrag wurde am 24.01.2003 um 15:48 Uhr von junix editiert. ]



  • Statt Components würde ich Controls nehmen!
    (also auch ControlCount anstelle von ComponentCount)



  • Ich denke eher daran, dass er die Komponenten kreuzfalsch erstellt hat.

    Wies richtig ghet steht in der FAQ.

    -junix



  • bloss mit ...->controls weiss ich nich, wie ich das tmemo finde *mmhh*



  • @junix....nix gefunden inner faq...hast du n (link)tip? 😕



  • Vielleicht solltest du doch mal die Komponenten richtig erstellen?

    Das mit den Controls... naja, schau mal die Funktion TControl::ClassNameIs() an.

    -junix



  • Schonmal was von TPageControl::PageCount und TPageControl::Pages[] gehört?



  • wie richtig erstellen?
    also erzeugt werden sie doch korrekt....das ClassNameIs() habbich aus der hilfe geklaut 😉



  • Original erstellt von Balko:
    bloss mit ...->controls weiss ich nich, wie ich das tmemo finde *mmhh*

    ...
    // aktuelles Steuerelement nach TMemo* gecastet
    TMemo *TestMemo = dynamic_cast<TMemo *>(TabSheet->Controls[i]);
    // wenn wirklich Memo
    if(TestMemo)
    {
      //tu was
    }
    


  • Meinen Beitrag hattest du gesehen?



  • @webfritzi: jo, habbich auch benutzt....aber das hat doch nix mit dem componentcount zu tun, is doch bloss für die schleife gut (IMHO)



  • Original erstellt von Balko:
    @junix....nix gefunden inner faq...hast du n (link)tip? 😕

    Abschnitt Komponenten. Artikel "Zur Laufzeit erstellen" FAQ Index schonmal durchgesehen?

    -junix



  • OK, LÄUFT...danke

    für die nachwelt, der code:

    *****SCHNIPP*****
    for (int i1 = 0; i1 < PageControl1->ControlCount; i1++)
      {
        if (PageControl1->Controls[i1]->ClassNameIs("TTabSheet"))
        {
          TTabSheet* myTab = dynamic_cast<TTabSheet*>(PageControl1->Controls[i1]);
          F_xml->M_xml->Lines->Add("<chapter>");
          F_xml->M_xml->Lines->Add("<chaptertitle>");
          F_xml->M_xml->Lines->Add(myTab->Caption);
          F_xml->M_xml->Lines->Add("</chaptertitle>");
    
          for (int i2 = 0; i2 < myTab->ControlCount; i2++)
          {
            if (myTab->Controls[i2]->ClassNameIs("TMemo"))
            {
              TMemo* myMemo = dynamic_cast<TMemo*>(myTab->Controls[i2]);
              F_xml->M_xml->Lines->Add("<chaptertext>");
              F_xml->M_xml->Lines->Add(myMemo->Text);
              F_xml->M_xml->Lines->Add("</chaptertext>");
            }
          }
        }
      }
      F_xml->M_xml->Lines->Add("</chapter>");
    *****SCHNAPP*****
    

    gruss balko

    <edit>Bitte Code-Tags benutzen! (Zum widerholten Male!)</edit>

    [ Dieser Beitrag wurde am 24.01.2003 um 18:34 Uhr von junix editiert. ]



  • Es ist zwar richtig, dass du die Lösung die du gefunden hast noch postest. Ich bitte dich allerdings, dass du in Zukunft die Code-Tags (siehe Zeilen über dem Thread-Index) benutzt!

    -junix



  • Ich glaub, du hast mich nicht ganz verstanden... Du kannst einen Cast vermeiden mit meinem Hinweis. Aber wenn du nicht willst...

    [ Dieser Beitrag wurde am 24.01.2003 um 18:39 Uhr von WebFritzi editiert. ]



  • @webfritzi....also ich kenne die syntax...benutze sie auch, aber habe dich anscheinend wirklich nicht verstanden, sorry, ich war so glücklich, dass es überhaupt läuft 😃 ich werde das morgen noch ma versuchen...jetzt hat mich die lust verlassen

    @junix. jawoll, sorry


Anmelden zum Antworten