TValueListEditor => PickList + STrings



  • Hallo!

    1. Ich habe hier die TValueListEditor-Komponente und würde gerne bei den Values (Werten) eine PickList haben
    2. und irgendwie scheitere ich schon daran, einen einfachen Wert in die Liste hinzuzufügen.
    Also die 2 Fragen 🙂

    Mein erster Versuch, die Komponente zu einer Picklist zu überreden:

    ValueListEditor1->ItemProps->Picklist={"this","that"};
    

    Ich habe kein Beispiel für meine 2 Fragen finden können.

    MfG
    Genscher



  • Sieh dir mal an, vom welchem Typ ItemProps::PickList ist.

    Ausserdem solltest du noch einen Blick auf die Deklaration von TValueListEditor::ItemProps selbst werfen; die Elemente werden zwingend per Index angesprochen.



  • Hallo!

    Ich habe jetzt eine Stunde die Hilfe + Forum durchsucht, und komme erfolglos zurück.

    Ich habe mich deines Vorschlags angenommen und mein Befehl sieht jetzt so aus:

    TStringList *TempList = new TStringList;
    TempList->Clear();
    TempList->Add("Ja");
    TempList->Add("Nein");
    ValueListEditor1->ItemProbs[1]->Picklist=TempList;
    

    Jedoch kommt da ein Compiler-Fehler:
    [C++ Error] Unit2.cpp(161): E2316 'ItemProbs' is not a member of 'TValueListEditor'

    Vielleicht weiß jemand wie ich das behebe.

    MfG
    Genscher



  • ItemProbs ist nun mal kein Mitglied von TValueListEditor ... 😉



  • Hallo!

    Ja, blöder Rechtschreibfehler, aber funktioniert trotzdem nicht.
    Ich bin jetzt auf einen weiteren Hinweis in der bcb-hilfe gestoßen, dass man erst die "esPicklist" Property setzen soll und dann halt die Liste der Picklist-Property hinzufügen soll. Aber die praktische Umsetzung hapert noch:

    Setzen der "esPickList"-Propery: (gibt natürlich Fehler zurück)

    ValueListEditor1->ItemProps[1]= ValueListEditor1->ItemProps[1] << esPickList;
    

    Zuweisung der Strings zur PickList mag er auch noch nicht:

    ValueListEditor1->ItemProps[1]->Picklist=TempList;
    

    Ich weiß halt nicht, wie man auf Properties (Eigenschaften) zugreift, und ihnen Werte zuweißt.

    Danke schonmal für die Mühe!



  • Nackte Form, ValueListEditor mit Standardeinstellungen, ein paar Strings eingetragen.

    for (int i = 0; i < ValueListEditor1->RowCount - 1; i++)
        ValueListEditor1->ItemProps[i]->PickList->CommaText = "111,222,333";
    

    Die PickList muss nicht explizit eingestellt werden, aber wenn, dann so:

    ValueListEditor1->ItemProps[0]->EditStyle = esPickList;
    


  • Danke schön!
    Funktioniert tadellos.
    🙂



  • Hallo,

    Ich mache es einfach so:

    Die Einträge in eine TStringliste wie Genscher

    TStringList *TempList = new TStringList; 
    TempList->Clear(); 
    TempList->Add("Ja"); 
    TempList->Add("Nein");
    

    und dann mit

    ValueListEditor1->ItemProps[1]->PickList->Assign(TempList)
    

    zuweisen.

    Daß lohnt sich wenn man viele Picklisten mit gleichem Inhalt hat.

    Gruß Mario



  • Danke, da wäre sonst bestimmt nie jemand drauf gekommen ... 😉



  • Hallo,

    so nun hoffendlich nicht als Unregistrierter.

    Mal noch ne Frage:

    Wenn ich im ValueListEditor eine Zeile anfüge, dann soll im Werte-feld die Picklist belegt werden.

    Welches Ergeignis tritt ein, wenn eine neue Zeile angelegt wird ?

    Gruß Mario



  • Mario Rosenbohm schrieb:

    Welches Ergeignis tritt ein, wenn eine neue Zeile angelegt wird ?

    Gar keines!? Und wozu auch? Du (bzw. dein Programm) erzeugst die neue Zeile, also solltest du (bzw. dein Programm) doch auch wissen, wann das passiert und die Zuweisung vornehmen können.



  • 😃

    Na ganz einfach, wenn ich auf der letzten Zeile stehe und [Cursor down] drücke.

    Da muß ich doch wohl nicht das Key Press Ereigniss auswerten (Oh Gott mit Kanonen auf Spatzen ...) 👎

    Gruß Mario


Anmelden zum Antworten