Problem mit manuellem Erstellen von ComboBox



  • Hi,

    ich habe das Problem, dass ich nicht anscheinend nicht weiss, wie man manuell eine ComboBox erstellt.
    Dabei ist mir erstmal egal, wo sie ist, wie sie aussieht, ob man sie sieht, etc., ich will lediglich auf ihre Elemente zugreifen koennen.

    Das sieht dann so aus in meiner Phantasie:

    ComboBox* c_box = new ComboBox(this);
    c_box -> ItemIndex = -1;
    

    Hier bricht er auch schon mit einer unbehandelten Exception ab. Genauso, wenn ich mittels

    c_box -> Items -> Count;
    

    auf die Anzahl der Elemente zugreifen will.

    Kann mir hierbei jemand weiterhelfen?



  • versuch mal:

    TComboBox* c_box = new TComboBox(Application);
    

    gruß gerd



  • Hatte ich leider auch schon erfolglos probiert...



  • Hallo

    du must noch den Parent der ComboBox zuweisen, bevor du die Position, den Inhalt oder Auswahl festlegst

    TComboBox* c_box = new TComboBox(this);
    c_box->Parent = this;
    c_box -> ItemIndex = -1;
    

    bis bald
    akari



  • Hatte ich leider auch schon probiert, meine ich jedenfalls mich erinnern zu koennen. Wenn jemand noch nen Grund weiss, waer ich dankbar, probieren kann ichs erst wieder am Donnerstag, weil ich erst dann wieder auf die Arbeit komme...



  • Hallo

    Der von mir gepostete und um den korrekten Typnamen koorigierte Code funktioniert auf jedenfall.

    bis bald
    akari



  • Hi,

    so, habe heute die gepostete Loesung ausprobiert, klappt auch soweit, schonmal ein grosses Dankeschoen fuer diesen Loesungsansatz.
    Jetzt ist nur mein Problem, dass ich als Parent der TComboBox ein TTabSheet haben muss. In dem Code, den ich bearbeiten muss wird ein solchen TTabSheet Pointer uebergeben. Ich habe mal die wichtigen Zeilen rauskopiert:

    ValueSelect = new TComboBox(Application);
       ValueSelect->Parent = OwnerTabSheet;
    

    wobei OwnerTabSheet der uebergebene TTabSheet Pointer ist. Kann mir jemand den Fehler erklaeren? Ich bekomme immer eine Meldung ueber ein ungueltiges Fensterhandle... (Code 1400)



  • Hallo

    hab mal genau den von dir geposteten Code ausprobiert und keinen Fehler bekommen, sondern ein korrektes im TabSheet erstellte Combobox. Der Fehler kommt durch andere Umstände. benutzt den Debugger, um die genau Position und ursache zu finden.

    Deweiteren ist es unübligh einer Komponente (außer Forms selber) Application als Owner zu übergeben. Das sollte besser das Form sein, in dem die Komponente aktiv ist.
    In deinem Fall kannst du also besser soetwas machen

    ValueSelect = new TComboBox(OwnerTabSheet->Owner);
    ValueSelect->Parent = OwnerTabSheet;
    

    bis bald
    akari



  • Hmm,

    also ich verstehs nicht. Als erstes wird ein Konstruktor aufgerufen, der

    PropertyPage = new TTabSheet(this);
    

    enthaelt, wobei PropertyPage in der Header Datei als TTabSheet* deklariert ist. Dann wird ein paar Zeilen spaeter PropertyPage uebergeben, welches dann wiederum in einer anderen Datei also OwnerTabSheet auftaucht, mit bekannem Code. Ich habe im Debugger nachgeschaut, der Wert von PropertyPage ist nicht NULL, sondern eine gueltige Adresse.
    Also ich weiss keinen Rat mehr :((

    EDIT: Also ich habe herausgefunden, dass ich einfach eine Reihenfolge vertauschen musste, also erst ein Objekt anlegen und erzeugen und es dann veraendern...

    Jetzt habe ich aber leider noch ein Problem... und zwar versuche ich in eine ComboBox etwas reinzuschreiben, es erscheint aber nur als Auswahl und wenn ich das Tab wechsele, dann verschwindet es sogar wieder aus der Auswahl.
    Wie schreibt man denn richtig in eine ComboBox? Ich habe es mit

    ValueSelect->Text = "aValue";
    

    bzw.

    ValueSelect->Items->Add("aValue");
    

    versucht, aber dann ist der Speicher der Box fluechtig, wenn sie ueberhaupt was anzeigt...


Anmelden zum Antworten