![]() |
Wie ein TComboBox Hintergrundfarbe ändern ?
Hallo,
wie kann ich in einem TComboBox die jede 2. Hintergrundfarbe ändern ? z.B.: 1.Eintrag Hintergrundfarbe weiß 2.Eintrag Hintergrundfarbe rot 3.Eintrag Hintergrundfarbe weiß 4.Eintrag Hintergrundfarbe rot ...usw mfg |
Re: Wie ein TComboBox Hintergrundfarbe ändern ?
Hallo madina,
im OnDrawItem Event hinterlegst du folgendes:
Delphi-Quellcode:
Und nicht vergessen den Style der Combobox auf csOwnerDrawFixed zu setzen. :mrgreen:
procedure TForm1.Combobox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var meine_Farbe: TColor; begin meine_Farbe := ComboBox1.Color; with ComboBox1, ComboBox1.Canvas do begin if Index mod 2 = 0 then begin meine_Farbe := clWhite; Font.Color:= clblack; Brush.Color:= meine_Farbe; FillRect(Rect); TextOut(Rect.Left+5, Rect.Top+1, Items[index]); end else begin meine_Farbe := clRed; Font.Color:= clblack; Brush.Color:= meine_Farbe; FillRect(Rect); TextOut(Rect.Left+5, Rect.Top+1, Items[index]); end; end; end; |
Re: Wie ein TComboBox Hintergrundfarbe ändern ?
Hallo,
es fuktioniert danke. Leider ist meine blaue Markierung verschwunden, wie konnte ich dies wieder kriegen? mfg |
Re: Wie ein TComboBox Hintergrundfarbe ändern ?
Schau Dir mal den State-Parameter an, da steht das drin, Du müsstest das beim Zeichnen dann mit berücksichtigen.
|
Re: Wie ein TComboBox Hintergrundfarbe ändern ?
Hatte es jetzt schon geschrieben, Lerneffekt ist halt dadurch nur bei mir wirksam:
Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var FontColor, BackColor : TColor; begin if odSelected in State then begin FontColor := clHighlightText; BackColor := clHighlight; end else if (Index mod 2 = 0) then begin FontColor := clBlack; // clWindowText BackColor := clWhite; // clWindow end else begin FontColor := clWhite; BackColor := clRed; end; with ComboBox1, ComboBox1.Canvas do begin Font.Color:= FontColor; Brush.Color:= BackColor; FillRect(Rect); TextOut(Rect.Left+5, Rect.Top, Items[index]); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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