![]() |
Check List Box einfärben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
habe Probleme mit dem Einfärben einer checkListBox Folgender Code Soll die Zeilen Rot einfärben wenn ein Haken gesetzt ist.
Delphi-Quellcode:
Das Ergebnis ist nit so dolle, er setzt nur einmal die Hintergrungfarbe und zwar beim ersten Haken, wenn ich dann mit der Maus auf ne anderen Text Klicke wo ein Haken ist färbt er ihn auch rot ein.
procedure Tfrm_lagerverwaltung.cblb_statusinfoDrawItem(
Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var i : integer; begin if (cblb_statusinfo.Checked[Index]) then begin cblb_statusinfo.Canvas.Brush.Color := clRed; cblb_statusinfo.Canvas.FillRect(Rect); cblb_statusinfo.Canvas.TextOut(Rect.Left, Rect.Top, cblb_statusinfo.Items[Index]); end else begin cblb_statusinfo.Canvas.TextOut(Rect.Left, Rect.Top, cblb_statusinfo.Items[Index]); end; end; Vielleicht habt ihr ja ne Lösung dafür. |
Re: Check List Box einfärben
Versuch mal
Code:
procedure Tfrm_lagerverwaltung.cblb_statusinfoDrawItem(
Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var i : integer; begin if (cblb_statusinfo.Checked[Index]) then begin cblb_statusinfo.Canvas.Brush.Color := clRed; cblb_statusinfo.Canvas.Brush.Style := bsSolid; cblb_statusinfo.Canvas.FillRect(Rect); cblb_statusinfo.Canvas.TextOut(Rect.Left, Rect.Top, cblb_statusinfo.Items[Index]); end else begin cblb_statusinfo.Canvas.TextOut(Rect.Left, Rect.Top, cblb_statusinfo.Items[Index]); end; end; |
Re: Check List Box einfärben
Delphi-Quellcode:
if (cblb_statusinfo.Checked[Index]) then
begin cblb_statusinfo.Canvas.Brush.Color := clRed; cblb_statusinfo.Canvas.FillRect(Rect); cblb_statusinfo.Canvas.TextOut(Rect.Left, Rect.Top, cblb_statusinfo.Items[Index]); end else begin // Farbe der nicht gecheckten Items cblb_statusinfo.Canvas.Brush.Color := cblb_statusinfo.Color; // <===================== cblb_statusinfo.Canvas.TextOut(Rect.Left, Rect.Top, cblb_statusinfo.Items[Index]); end; |
Re: Check List Box einfärben
Hallo,
erst mal danke für die Superschnelle Antwort, leider funktioniert es so nicht. Wenn ich hingehe und da fenster minimiere und wieder maximiere dann ist die Box richtig gezeichnet kann ich irgendwie nen Repaint oder so machen. Halt das selbe wie verkleiner und vergrössern. |
Re: Check List Box einfärben
Zitat:
Delphi-Quellcode:
Wahlweiße auch Refresh.
Checklistbox1.Repaint
|
Re: Check List Box einfärben
Liste der Anhänge anzeigen (Anzahl: 1)
@spider:
Jippee das geht dem, nur wenn ich dann nen Haken wieder entferne wird der Text wieder mit nem weissen hintergrund belegt aber da wo der text aufhört bleibts rot :gruebel: Und er zeichnet bei selektiertem eintrag ein hässliches weisses Rechteck siehe beides anhang. Vielleicht hast Du ja auch dafür ne Lösung. |
Re: Check List Box einfärben
Delphi-Quellcode:
fällt dir was auf? im else zweig zeichnest du nur den text.
if (cblb_statusinfo.Checked[Index]) then
begin Hintergrund zeichnen text zeichnen end else begin text zeichnen end; da fehlt das setzen der Hintergrundfarbe und das fillrect. mit dem state kannst du rausbekommen, ob der eintrag selektiert ist oder nicht, und entsprechend die farbe auf clwindow (nix selektiert) oder clhighlight (selektiert) setzen. Mfg Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz