aus ComboBox einzelne Items lesen



  • Wie kann ich aus einer ComboBox die einzelnen Items lesen? Und in welchem Format lese ich diese?

    Bei mir ist das Problem das in meiner ComboBox die Monate stehen, davon muß ich einen auswählen und dann den kompletten Monat in einem StringGrid sehen. Allerdings funktioniert das nicht wirklich:
    1. weil mein Kalender noch nicht dafür fertig ist
    2. weil ich nicht weiß wie ich die Monate dort auslesen kann und in meine Programmierung für den Kalender einbringen könnte!!

    Kann mir da vielleicht jemand helfen?



  • Hast du dir in der BCB-Hilfe schonmal die einzelnen Eigenschaften genauer betrachtet?

    -junix



  • ja nur kann ich mir nicht sehr viel daraus nehmen, dass ist mein Problem.

    Da ich auch keinen richtigen Ansatzpunkt habe wie ich jetzt an diese Sache herangehe.

    Und bei der ComboBox habe ich nichts wirklich dazu gefunden, was mich irgendwie hätte weitergebracht, habs versucht mit:

    ComboBox1->Items= StringGrid1->Cells[0][0]; aber da kommt immer ein Umwandlungsfehler!!

    Kann mir jemand helfen?



  • Von welchem Typ ist doch ComboBox1->Items gleich?? Ah ja... In der BCB Hilfe steht es ja.. TStrings. Und welche Eigenschaften haben doch gleich die TStrings.. Ah ja.. Ebenfalls in der Hilfe: Strings:

    __property AnsiString Strings[int Index] = {read=Get, write=Put};
    

    Also noch mal ein bisschen mit der Hilfe beschaeftigen. Ist nicht boese gemeint.. Ist nur ein Rat fuer die weitere Programmierung..
    MfG Aoeke

    <EDIT>Und von welchem Typ ist StringGrid1->Cells[int][int]? Ja genau.. Auch AnsiString... Das duerfte dich ein Stueck naeher an die Loesung deines Problems bringen.</EDIT>



  • Sonnenschein84 schrieb:

    ja nur kann ich mir nicht sehr viel daraus nehmen, dass ist mein Problem.

    Hast du den Artikel "Hilfe zur BCB HIlfe" (zu finden auf der oben verlinkten Seite.

    -junix



  • int Year;
        Edit6->Text = Year;
    
        __property AnsiString Items[int Index] = {read=GetName, write=SetName};
    
        ComboBox1->Items = StringGrid1->Cells[0][0];
    
        //int Day, Month, Year;
       //TDateTime(Day,Month,Year);
    
        StringGrid1->Cells[12][1] = FormatDateTime("ddd",TDateTime("12.01.2002"));
       //->zeigt an dass 12.01.2002 ein Sa ist
       StringGrid1->Cells[11][1] = FormatDateTime("ddd",TDateTime("11.01.2002"));
    
       StringGrid1->Cells[12][0] = FormatDateTime("dd",TDateTime("12.01.2002"));
       //->zeigt 12 an
       StringGrid1->Cells[11][0] = FormatDateTime("dd",TDateTime("11.01.2002"));
    

    Da kommt bei mir dann immer der Fehler:

    [C++Fehler] Unit1.cpp(53): Storage class 'property' is not allowed here.

    Muß ich wieder irgendwas beachten oder was mache ich falsch? Ich weiß langsam nicht mehr weiter.



  • __property AnsiString Items[int Index] = {read=GetName, write=SetName};
    

    Was erhoffst du dir, soll diese Zeile bewirken?

    -junix



  • Ich habe keine Ahnung!!!! Wie muß ich das denn machen????????



  • Wieso fügst dus dann einfach mal ein? Hast du denn nun den von mir empfohlenen Artikel gelesen?

    -junix



  • Ja habe ich, aber wie schon gesagt, ich weiß hier nicht so richtig wie ich das aus der Hilfe anwenden soll.



  • Was mir eben auffällt ich muß den Monat ja erstmal auswählen, bevor ich ihn überhaupt weiterverarbeiten kann. Würde es dann gehen, wenn ich bei ComboBox1 bei Ereignisse auf Enter gehe und dort den ausgewählten Monat dann anstatt als "Monat wie Januar" als "1" zu übergeben? Wenn ja wie könnte ich das machen? Und zweitens wie kann ich dann diesen Wert an eine andere Funktion übergeben??

    Bitte helft mir!!



  • Wieso OnEnter? Den versteh ich jetzt nicht.

    In dem von mir vielbeschworenen Artikel hats ja ein Beispiel, wie die Hilfe anzuwenden ist? (ok, mit einem Memo aber hier funktionierts ja analog?) Und wo bitte wird in dem Tutorial dazu einfach die Deklarationszeile rauskopiert und eingefügt? - Nirgends.

    Beantworte mal folgende Fragen:

    1. Welchen Typs ist TComboBox::Items?

    2. Was für Eigenschaften hat der Typ aus der 1. Frage?

    3. Gibts es irgend eine Eigenschaft die du nutzen könntest?

    -junix



  • Naja ich muß doch erstmal den Monat überhaupt auswählen bevor ich den verarbeiten kann und deswegen wenn ich damit weiter arbeiten will, muß ich es doch erstmal markieren, oder muß ich da eher OnChange nehmen?

    ZU deiner Frage 1: TComboBox::Items ist TStrings und TStrings ist AnsiString.
    Oder??

    Ich versteh momentan eigentlich nur Bahnhof



  • 1. Den Monat muss der Benutzer - bevor du ihn verarbeitest (den Monat, nicht den benutzer) - doch erst auswählen?

    2. 1. Antwort ist richtig. Allerdings ist TStrings TStrings und nicht AnsiString und nicht float und nicht int. TStrings ist ne eigne Klasse mit eignen Methoden und Eigenschaften. Eine der Eigenschaften jedoch liefert wiederum AnsiString zurück...

    -junix



  • Pass auf, zuerst musst du in die ComboBox alle Monate eintragen, also Januar, Februar, etc. Dann kannst du im onChange-Ereignis der ComboBox mit ComboBox1->ItemIndex gucken, welches Feld ausgesucht wurde. Und wenn du statt Januar 1, und so weiter übergeben willst, tust du das mit ComboBox1->ItemIndex+1. Das musst du jetzt nurnoch in C++ Code umschreiben und dann hast du's.



  • Danke @ windoof. Das hat jetzt funktioniert. Auf dieses Index wäre ich nie gekommen!!!

    Könntest du mir vielleicht auch noch sagen, wie ich den Wert den ich jetzt ausgelesen habe an einen anderen Teil übergeben kann?

    void __fastcall TForm1::ComboBox1Change(TObject *Sender)
    {
        Edit8->Text = ComboBox1->ItemIndex+1;
    }
    

    In dem Edit8 steht jetzt mein Monat, doch den müßte ich an eine andere Funktion übergeben.



  • Nun stell dich doch nicht so an.
    Über Edit8->Text hast du was in's Edit reingeschrieben, über welche Eigenschaft könnte man das wohl wieder auslesen?


Anmelden zum Antworten