Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie ein TComboBox Hintergrundfarbe ändern ? (https://www.delphipraxis.net/130058-wie-ein-tcombobox-hintergrundfarbe-aendern.html)

madina 2. Mär 2009 18:41


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

juergen 2. Mär 2009 20:06

Re: Wie ein TComboBox Hintergrundfarbe ändern ?
 
Hallo madina,

im OnDrawItem Event hinterlegst du folgendes:
Delphi-Quellcode:
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;
Und nicht vergessen den Style der Combobox auf csOwnerDrawFixed zu setzen. :mrgreen:

madina 4. Mär 2009 09:32

Re: Wie ein TComboBox Hintergrundfarbe ändern ?
 
Hallo,

es fuktioniert danke.

Leider ist meine blaue Markierung verschwunden, wie konnte ich dies wieder kriegen?

mfg

DeddyH 4. Mär 2009 09:36

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.

Satty67 4. Mär 2009 09:52

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 15:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz