Delphi-PRAXiS
Seite 2 von 2     12   

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)

Micha88 29. Jul 2009 17:23

Re: ComboBox -> Mehrfarbig gestalten
 
Ich könnte gut diese HTML-ComboBox gebrauchen, jedoch finde ich nur gesamte Packs zum herunterladen, die zu allem Übel auch noch ein Setup sind!

Weiß wer wo ich NUR die ComboBox herbekomme?

Jens Hartmann 1. Nov 2009 22:45

Re: ComboBox -> Mehrfarbig gestalten
 
Hallo zusammen,

ich habe nach dem einfärben der ComboBox in verschieden Farben gesucht, und bin zu diesem Thread gekommen. Mein Problem ist, das ich alles so glaube ich, genau so geamcht habe wie hier gezeigt, jedoch ändern sich meine Farben der ComboBox nicht.

Hier mal mein Code...
Delphi-Quellcode:
procedure TMailSendenForm.CBGruppeAnlegenDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var Farbe: TColor;
begin
  Farbe := CBGruppeAnlegen.Color; //Hintergrundfarbe für alle Items, die nicht eine spezielle Farbe haben

  //--'Inhalt' der Zeile abfragen und ggf. spezielle Farbe zuweisen
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 1' then Farbe := clLime;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 2' then Farbe:= clYellow;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 3' then Farbe:= clBlue;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 4' then Farbe:= clFuchsia;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 5' then Farbe:= clAqua;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 6' then Farbe:= clMoneyGreen;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 7' then Farbe:= clSkyBlue;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 8' then Farbe:= clNavy;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 9' then Farbe:= clTeal;
  if CBGruppeAnlegen.Items[Index] = 'Gruppe 10' then Farbe:= clPurple;

  //-- Zeile mit der entsprechenden Farbe zeichen; standard=Combobox-Farbe (oder eine beliebige andere)
  with CBGruppeAnlegen, CBGruppeAnlegen.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;
Vieleicht hat ja jemand eine Idee. Danke schon mal und Gruß

Jens

Jens Hartmann 1. Nov 2009 22:51

Re: ComboBox -> Mehrfarbig gestalten
 
Sorry vergesst es.

Hatte das Proberty Style ausversehen wieder geändert.

Danke trotzdem. Gruß Jens

himitsu 1. Nov 2009 22:51

Re: ComboBox -> Mehrfarbig gestalten
 
Hast du das CBGruppeAnlegenDrawItem auch dem .OnDrawItem zugewiesen
und welchen Wert hat .Style deiner ComboBox?

[edit]
OK, dann hat sich das ja geklärt.

PS: bei solchen "Änderungen" bitte nur den Post editieren (ist ja kein neuer Beitrag notwendig)

Andreas L. 1. Nov 2009 22:52

Re: ComboBox -> Mehrfarbig gestalten
 
Zitat:

Zitat von Bernhard Geyer
Das Property Style der ComboBox muß schon auf einen Wert vom Typ csOwnerDraw* stehen damit OwnerDraw aufgerufen wird.

Das hast du auch beachtet? Weicht die Groß- und Kleinschreibung von den Items ab? Ein Stringvergleich ist case-sensitive. Könntest es z. B. so machen:
Delphi-Quellcode:
AnsiLowerCase(CBGruppeAnlegen.Items[Index]) = 'gruppe 1'


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz