2 Fragen zur Listbox



  • Hallo,

    gibt es ein Ereignis das mir meldet, daß in einer Listbox eine andere Zeile selektiert wurde? Dabei möchte ich möglichst auf das Abfragen der Tastatur- oder Mauseingaben verzichten. Wäre 'OnDrawItem' eine Möglichkeit? Ich hab' ehrlich gesagt die Erklärung dazu in der BCB-Hilfe nicht kapiert 😞

    In der FAQ wird beschrieben, wie einzelnen Zeilen einer Listbox unterschiedliche Farben zugeordnet werden können. Ist es auch möglich, nur einzelne Zeichen andersfarbig auszugeben?

    Grüße
    Gogo



  • 1.) Ich glaube, OnChange sollte deinen Anforderungen entsprechen.
    2.) Ja, ist es. :p



  • Und für die Zukunft bitte ich dich die kleine Faustregel "1 Frage pro Thread, 1 Thread pro Frage" zu beachten. Dann fällt es nämlich auch leichter eine aussagekräftige Überschrift zu wählen, was ich dir in Zukunft auch raten würde.

    -junix



  • Dasd schrieb:

    1.) Ich glaube, OnChange sollte deinen Anforderungen entsprechen.

    Kann es sein, daß Listbox kein OnChange-Ereignis bietet? Im Objektinspektor habe ich jedenfalls keines gefunden.

    Dasd schrieb:

    2.) Ja, ist es. :p

    Fein, dann wil ich mal sehen, wie weit ich mit dem Beispiel aus der FAQ komme 😉



  • Benutze OnClick, das wird bei jedem Wechsel des Items aufgerufen, egal ob mit Maus oder Tastatur.

    Und zum Bunt-Schreiben, bezogen auf das FAQ-Beispiel: statt des ganzen Wortes/Satzes auf einmal musst du halt jeden Buchstaben bzw. Teilstring nacheinander einzeln ausgeben und zwischendurch nach Bedarf die Farben wechseln.
    Um die korrekte Position für das Anstückeln zu ermittelns solltest du mit TCanvas::TextWidth jeweils die Breite des bereits geschriebenen Textes zzgl. des ersten darauffolgenden Zeichens ermitteln, davon ziehst du dann wieder die breite dieses einzelnen Zeichens ab. Dann sollte auch der Abstand zwischen den Stückelungen korrekt sein.



  • Jansen schrieb:

    Benutze OnClick, das wird bei jedem Wechsel des Items aufgerufen, egal ob mit Maus oder Tastatur.

    Danke! Hat prima funktioniert 🙂

    Jansen schrieb:

    Und zum Bunt-Schreiben, bezogen auf das FAQ-Beispiel: statt des ganzen Wortes/Satzes auf einmal musst du halt jeden Buchstaben bzw. Teilstring nacheinander einzeln ausgeben und zwischendurch nach Bedarf die Farben wechseln.
    Um die korrekte Position für das Anstückeln zu ermittelns solltest du mit TCanvas::TextWidth jeweils die Breite des bereits geschriebenen Textes zzgl. des ersten darauffolgenden Zeichens ermitteln, davon ziehst du dann wieder die breite dieses einzelnen Zeichens ab. Dann sollte auch der Abstand zwischen den Stückelungen korrekt sein.

    Danke für den ausführlichen Tip. Die Sache werde ich mir mal in einer ruhigen Stunde vornehmen.

    der_Gogo


Anmelden zum Antworten