Auf Objekte in Dynamisch erzeugtem PageConrtrol zugreifen



  • Hallo, habe da mal eine Frage ...

    und zwar erzeuge ich mit einem Klick auf einen Button Neue Tabs in PageControl1 und die beinhalten immer Memos.

    TTabSheet *TabSheet = new TTabSheet( PageControl1 );
      TabSheet->Name = "Tab_" + IntToStr(id);
      TabSheet->PageControl = PageControl1;
      TabSheet->Parent = PageControl1;
      TabSheet->Caption = asName;
    
      TMemo *Memo = new TMemo( TabSheet );
      Memo->Name = "Memo_" + asName;
      Memo->Parent = TabSheet;
      Memo->Align = alClient;
      Memo->Lines->Clear();
      Memo->Lines->Add( "leer" + IntToStr(id));
      Memo->ScrollBars = ssVertical;
      Memo->WordWrap = false;
    

    So, und nun mein Problem. Wie kann ich im nachhinein auf die Memos zugreifen? Bin da nirgends fündig geworden.

    ? Also wenn ich den Inhalt von dem Memo im gerade angeklickten TAB speichern will ?

    Stehe grade voll aum Schlauch ... sry ... ich hoffe ihr könnt mir weiterhelfen ... (Und versteht was ich machen will)



  • Möglich wäre das über die Controls- oder Components-Eigenschaft. FindComponent() ginge sicherlich auch.
    Sinnvoller ist es aber sicherlich, Dir beim Erstellen der Memos diese Instanzen in einem (dynamischen) Array
    zu speichern.

    Gruß,

    Alexander



  • Genau bei dem reinschreiben in ein dynamische Array hängts bei mir total. Wie kann ich dass denn machen?

    //Edit: OK ... steht in den FAQ ^^

    Und nun die lsg, wie ichs dann gemacht habe:

    DynamicArray<TMemo*>mMemo;
    

    Mein Array erzeugt

    TTabSheet *tTabSheet = new TTabSheet( PageControl1 );
      tTabSheet->Name = "Tab_" + IntToStr(id);
      tTabSheet->PageControl = PageControl1;
      tTabSheet->Parent = PageControl1;
      tTabSheet->Caption = asName;
    
      mMemo.Length = id+1;  //Bei jedem Durchlauf mein mMemo um 1 vergrößern
    
      mMemo[id]= new TMemo( tTabSheet );
      mMemo[id]->Name = "Memo_" + asName;
      mMemo[id]->Parent = tTabSheet;
      mMemo[id]->Align = alClient;
      mMemo[id]->Lines->Clear();
      mMemo[id]->Lines->Add( "leer" + IntToStr(id));
      mMemo[id]->ScrollBars = ssVertical;
      mMemo[id]->WordWrap = false;
    

    Jetzt kann ichs auch ausserhalb aufrufen. Danke für den Denkanstoß ^^


Anmelden zum Antworten