TMyRec aus der BBC Hilfe



  • Ich habe in BBC Hilfe ein Beispiel gefunden, das mich etwas wundert.
    Ich benutze das Beispiel zum Teil. Da ich in meinem aktuellem Prog aber häufig das TreeView erneuere(Dateimanager), bin ich mir nicht sicher, ob da irgenwo ein 'delete' stehen sollte, bevor mir mein Speicher vollmüllt.

    Ich zeig hier mal den Code und bin gespannt, was Ihr davon haltet.
    Zitiere die BBC Hilfe

    Im folgenden Beispiel wird ein Strukturtyp TMyRec und ein Zeigertyp PMyRec definiert.

    typedef struct MyRec
    {
      AnsiString FName, LName;
    
    } TMyRec;
    typedef TMyRec* PMyRec;
    

    Wenn diese Typen nun verwendet werden, kann mit folgendem Code als letzte Verzweigung des angegebenen Knotens ein weiterer Knoten zu TreeView1 hinzugefügt werden. Ein Datensatz des Typs TMyRec wird dem hinzugefügten Eintrag zugeordnet. Die Feldinhalte von FName und LName werden aus den Eingabefeldern Edit1 und Edit2 übernommen. Der Wert des Parameters Index stammt aus Edit3. Das Element wird nur dann hinzugefügt, wenn Index einen gültigen Wert hat.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    PMyRec  MyRecPtr;
    int TreeViewIndex;
    TTreeNodes* pItems;
    
     MyRecPtr = new TMyRec;
     MyRecPtr->FName = Edit1->Text;
     MyRecPtr->LName = Edit2->Text;
     TreeViewIndex = StrToInt(Edit3->Text);
     pItems = TreeView1->Items;
     if (pItems->Count == 0)
       pItems->AddObject(NULL, "Item" + IntToStr(TreeViewIndex), MyRecPtr);
     else if ((TreeViewIndex < pItems->Count) && (TreeViewIndex >= 0))
    
          pItems->AddObject(pItems->Item[TreeViewIndex], "Item" + IntToStr(TreeViewIndex), MyRecPtr);
    }
    

    Wenn ein Element hinzugefügt wurde, das einen Datensatz des Typs TMyRec enthält, kann mit dem folgenden Code der Feldwert von FName und LName abgerufen und als Beschriftungstext angezeigt werden.

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Label1->Caption = PMyRec(TreeView1->Selected->Data)->FName + " " +
                     PMyRec(TreeView1->Selected->Data)->LName;
    }
    

    Ich hoffe, das man so was zitieren darf


Log in to reply