Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ComboBox -> Mehrfarbig gestalten (https://www.delphipraxis.net/90821-combobox-mehrfarbig-gestalten.html)

HolgerCW 24. Apr 2007 12:23


ComboBox -> Mehrfarbig gestalten
 
Hallo zusammen,

gibt es eine Möglichkeit die Werte in einer ComboBox Zwei - oder Mehrfarbig anzuzeigen ???

Gruss

Holger

Luckie 24. Apr 2007 12:26

Re: ComboBox -> Mehrfarbig gestalten
 
Ja. Du musst die Eintrage selber zeichnen in dem Ereigniss Hier im Forum suchenOnDrawItem.

Bernhard Geyer 24. Apr 2007 12:36

Re: ComboBox -> Mehrfarbig gestalten
 
Oder Komponenten nehmen die über eine art Mini-HTML sowas direkt unterstützen wie die HTML-ComboBox vom Elpack

HolgerCW 24. Apr 2007 12:49

Re: ComboBox -> Mehrfarbig gestalten
 
Die Lösung von Lucki hört sich schon gut an.

Was muss denn hier dann ergänzt werden:

Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(
  Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
 if ComboBox1.text = 'Test' then
 begin
   ComboBox1. ...;
   
  end;
end;
Gruss

Holger

Luckie 24. Apr 2007 12:54

Re: ComboBox -> Mehrfarbig gestalten
 
Ich bin ziemlich sicher, dass man mit der Suche komplett lauffähigen Copy and Waste Code findet hier im Forum.

HolgerCW 24. Apr 2007 13:15

Re: ComboBox -> Mehrfarbig gestalten
 
Habe mal gesucht und das heir gefunden:

Habe dabei festgestellt, das das Programm nie in das Ereignis reinspringt. Wie kann ich das realisieren ?

Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(
  Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
 farbe: TColor;
begin
 if ComboBox1.text = 'Test' then farbe:= clmaroon;
 with ComboBox1, ComboBox1.Canvas do begin
  Font.Color:= clblack; // SchriftFarbe
  Brush.Color:= farbe; // HintergrundFarbe
  FillRect(Rect);      // Hintergrund zeichnen
  TextOut(Rect.Left+5, Rect.Top+1, Items[index]); // Textausgabe
 end;
end;
Gruss

Holger

Bernhard Geyer 24. Apr 2007 13:22

Re: ComboBox -> Mehrfarbig gestalten
 
Das Property Style der ComboBox muß schon auf einen Wert vom Typ csOwnerDraw* stehen damit OwnerDraw aufgerufen wird.

HolgerCW 24. Apr 2007 13:57

Re: ComboBox -> Mehrfarbig gestalten
 
Alles klar,

jetzt klappt es,

wie kann ich es denn jetzt realisieren, das jeder Wert in der Combobox abgefragt wird und dann z.b. wenn ein Wert in der ComboBox 'Test' hiesst die Farbe grau ist und wenn der Wert 'Test2' heisst der Wert blau ist. Also losgelöst vom Index ???

Vorher fülle ich die Combobox natürlich mit diesen Werten 'Test' und 'Test2'

Gruss

Holger

raiguen 24. Apr 2007 17:45

Re: ComboBox -> Mehrfarbig gestalten
 
Zitat:

Zitat von HolgerCW
wie kann ich es denn jetzt realisieren, das jeder Wert in der Combobox abgefragt wird ...

So z.B.
Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var farbe: TColor;
begin
  farbe := ComboBox1.Color; //Hintergrundfarbe für alle Items, die nicht eine spezielle Farbe haben

  //--'Inhalt' der Zeile abfragen und ggf. spezielle Farbe zuweisen
  if ComboBox1.Items[Index] = 'Test' then farbe:= clGray;
  if ComboBox1.Items[Index] = 'Test1' then farbe:= clNavy;
  if ComboBox1.Items[Index] = 'Test2' then farbe:= clYellow;
 
  //-- Zeile mit der entsprechenden Farbe zeichen; standard=Combobox-Farbe (oder eine beliebige andere)
  with ComboBox1, ComboBox1.Canvas do begin
    Font.Color:= clblack; // SchriftFarbe
    Brush.Color:= farbe; // HintergrundFarbe
    FillRect(Rect);      // Hintergrund zeichnen
    TextOut(Rect.Left+5, Rect.Top+1, Items[index]); // Textausgabe
  end;
end;

HolgerCW 25. Apr 2007 07:41

Re: ComboBox -> Mehrfarbig gestalten
 
Ja super,

danke ...

Das klappt

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr.
Seite 1 von 2  1 2      

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