TCheckListBox - Color Problem



  • Hi Leutz,

    Ich benutze das TCheckListBox::OnDrawItem Ereignis zum anpassen der Farben der Einträge, wenn selektiert oder auch nicht. Damit ich verschiedene Stile anbieten kann benutze ich keine konkreten Farbangaben, sondern Platzhalter natürlich vom Typ TColor. Sieht dann ungefähr so aus:

    TColor Farbe1=clWhite,Farbe2=clGreen; //oder was auch immer
    
    CheckListBox->Canvas->Brush->Color = Farbe1;   // Hintergrundfarbe
    CheckListBox->Canvas->Font->Color = Farbe2;      // Textfarbe
    CheckListBox->Canvas->FillRect(Rect);
    CheckListBox->Canvas->TextRect(Rect, Rect.Left, Rect.Top,CheckListBox->Items->Strings[Index]);
    

    Soweit so gut. Wenn ich nun den Stil ändere, sollen die Werte der Variablen (Farbe1,Farbe2) sowie der TCheckListBox::Color Wert geändert werden. Wenn ich dies realisieren will wird jedoch die 2. Änderung einfach unterdrückt, egal in welcher Reihenfolge ich es bewerkstellige. Beim Zuweisen eines neuen Wertes an die Variablen erfolgt quasi ein Redraw, d.h. alle Einträge werden neu gezeichnet. Wenn ich nun danach die Eigentschaft "Color" ändere müsste er das doch übernehmen oder? Ich kann mir nicht erklären wieso dieses Phänomen auftritt.

    Über Anregungen würde ich mich sehr freuen!

    mfg cb



  • Weiß keiner Rat? 🙂

    mfg cb



  • Hallo

    Dein Codeausschnitt ist nicht ausreichend genug.

    Beim Zuweisen eines neuen Wertes an die Variablen erfolgt quasi ein Redraw, d.h. alle Einträge werden neu gezeichnet

    Wird denn effektiv ein Repaint() ausgeführt oder nicht?

    Benutzt den debugger und geh Schritt für Schritt die methoden nachd em Ändern eines Farbwertes durch, dannweißt du was passiert.

    bis bald
    akari



  • ich bin mir jetzt nich sicher aber muss du nich die Eigenschaften ändern?
    den bei dir wird nur das Canvas verändert.

    CheckListBox->Color = Farbe1;
    CheckListBox->Font->Color = Farbe2;
    

Anmelden zum Antworten