ListBox über ComboBox



  • Die Jugend von heute gibt einfach zu schnell auf.... 🙄

    Haste es mal mit dem zweiten Mode "csDropDownList" versucht? Der dürfte Dich interessieren! 😉



  • Hi,

    aufgegeben habe ich so schnell nicht, ferner gehöre ich nicht zur Jugend. Wenn ich dei Eigenschaft wie du meinst setze, was ich vorher schon selbst probiert hatte, kann ich die Eigenschaft Text nicht verwendet und ich will halt das in der ComboBox steht:

    Tabelle wählen

    und in der ComboBox kann man dann seine Elemente auswählen. Und das ist mit dieser Eigenschaft ja nicht möglich und daher hatte ich auch die ListBox zur Verfügung genommen.

    Alex



  • Original erstellt von <Alex>:
    kann ich die Eigenschaft Text nicht verwendet

    Ja mei, dann hol dir den Text eben über den ItemIndex.



  • Hallo,

    so wäre ich auch vorgegangen, jedoch soll der Text den ich mittels der ListBox anzeige nicht als Eintrag in der ComboBox auswählbar sein. Sonst wäre alles ja kein Problem.

    Also muss man sich ja ne Hilfslösung basteln, was bei mir halt nun die ListBox war.

    Alex



  • Was willst Du eigentlich? Am Anfang hast Du geschrieben, Du hast die Überlappung deshalb gemacht, weil die Einträge nicht abänderbar sein sollen. Wie man die ComboBox so einrichtet, daß man die Einträge nicht verändern kann, hab ich Dir doch schon geschrieben.

    Wieso sollen denn dann die ComboBox-Einträge nicht auswählbar sein und auch kein Text eingegeben werden? Dann laß doch einfach die ComboBox weg und gut ist? Sonst kann die ComboBox nix anderes!? Oder geht es Dir nur um die putzige Darstellung des Pfeils rechts an der ComboBox? Dann schreib doch, was Du willst.......................? SPRICH MIT UNS (aber erst, wenn Du weißt, was Du eigentlich willst) 😕



  • Hi,

    hier ein Beispiel:

    Öffne mal den C++ Builder. Lege ein ComboBox Element auf das Formular und füge im Objekt Inspektor ein Paar Einträge hinzu. Ändere nie Text - Eigenschaft in "Wählen".

    Wenn du jetzt das Programm startest, hast du genau das wa sich will. Oben in der Box steht das man einen Eintrag wählen soll und in der Box sind dann die Einträge.

    Nun kommt noch hinzu, dass alle Werte und die Überschrift statisch sein müssen, also nicht veränderbar sein müssen. Nun Versuch mal dies zu erreichen. Dies ist nämlich nicht einfach durch irgendwelche Einstellungen möglich.

    Ich lasse mich aber gerne belehren.

    Ist mein Problem so verständlich?

    Alex



  • Also für Überschriftendarstellungen ist die ComboBox völlig ungeeignet.

    Wenn Du dem Anwender aber signalisieren willst, daß er in der ComboBox was auswählen soll, dann nimm doch "Wählen" als ersten Eintrag auf und zeig den an. Zusammen mit dem Mode "csDropDownList". Damit sind die Einträge nicht mehr editierbar.

    Dann stellst Du sicher, daß vor einer Berechnung oder Aktion die ComboBox mit einem gültigen Wert gefüllt ist. Ist das nicht der Fall, setzt Du den Focus auf die ComboBox und zwingst damit den Anwender, etwas auszuwählen. Unterstützen könnte man das noch durch Ausgabe eines entsprechenden Hinweistextes.

    Wenn Dich der "Wählen" Text in der ComboBox als Eintrag stört, dann kannst Du den auch nachträglich entfernen, sobald der User einen Eintrag ausgewählt hat (im OnChange-Ereignis).....



  • Ich würde OnDropDown und OnCloseUp benutzen. Dort kannst du das Zusatzitem mit der "Überschrift" zB. mit DeleteSelected() entfernen (OnDropDown) und, falls kein Item selektiert wurde, wieder hinzufügen (OnCloseUp).



  • Da spricht halt wieder der Meister 😉



  • Für eine Sekunde dachte ich, du meinst mich ... 😉



  • Hallo,

    setze einfach zur Entwurfszeit die Einträge der ComboBox,
    Setze die ComboBox auf csDropDownList.

    Zur Laufzeit z.B. im OnCreate Ereignis folgender Text:

    ComboBox1->ItemIndex=0;
     ComboBox1->Text=ComboBox1->Items->Strings[ComboBox1->ItemIndex];
    

    ...fertich



  • Und was hat er davon? Das kann er doch schon zur Entwurfszeit im OI erledigen!?

    Mal ganz abgesehen davon, dass deine zweite Zeile a) sinnlos ist (bei csDropDownList hat das Setzen der Text-Property keine Wirkung) und b) völlig überflüssig ist, da der angezeigte Text schon durch das Setzen des ItemIndex festgelegt wurde. 😉



  • Also bei mir ist das so, wenn ich eine ComboBox auf csDropDownList setze kann ich zur Entwurfszeit die Eigenschaft Text nicht setzen.
    Die ist nämlich leer !
    Unabhängig davon, ob Items eingetragen sind oder nicht...

    Man kann auch während der Laufzeit den Text nur mit Werten füllen, die unter Items eingetragen sind.

    Probier es mal aus...



  • Original erstellt von <Daniel666>:
    Man kann auch während der Laufzeit den Text nur mit Werten füllen, die unter Items eingetragen sind.

    Genau, das machst du aber nicht direkt über die Text-Property sondern indirekt über den ItemIndex. Und letzteres funktioniert auch zur Entwurfszeit.

    Probier es mal aus...

    Wollt ich dir auch grad empfehlen. 😉
    Lass einfach deine zweite Zeile weg und staune ...



  • ok...ok...
    die zweite Zeile ist zur Laufzeit überflüssig.
    Kann es sein, daß das beim CBuilder3 so gemacht werden musste ?
    Bin nämlcigh erst kürzlich auf den 5er umgestiegen...

    Dennoch zur Entwurfszeit kann ich nicht auf die Eigenschaft ItemIndex bzw. Text
    zugreifen. Hab ich zumindest nix gefunden.



  • Offensichtlich ist der ItemIndex-Eintrag im OI beim BCB6 neu eingeführt worden.

    Ich kenne den BCB3 zwar nicht, kann mir aber nicht vorstellen, dass sich die Text-Property bei csDropDownList dort anders verhalten hat.


Anmelden zum Antworten