![]() |
Text von Auswahlfeld der Combobox einfärben
Hallo,
ich möchte in einer Combobox ein bestimmtes Item farblich markieren, alle anderen sollen weiterhin die Font-Farbe der Combobox behalten. Die Combobox wird zur Laufzeit über eine Schleife mit Texten gefüllt. Wenn nun einer dieser Werte ein bestimmtes Kriterium erfüllt, soll der Text in dem "Ausklappfeld" z. b. blau dargestellt werden, der Hintergrund soll weiß bleiben. Ich habe schon (testweise, da fehlt noch die if-Bedingung für das Kriterium)
Delphi-Quellcode:
versucht, aber das wird geflissentlich ignoriert... :?:
cbEn.Canvas.Font.Color := clGreen;
und
Delphi-Quellcode:
ändert ja die Farbe der ganzen Combobox.
cbEn.Font.Color
Hat vielleicht jemand einen Tip? Gruß Frank |
Re: Text von Auswahlfeld der Combobox einfärben
Du musst den style der combobox auf csOwnerDrawFixed stellen und im event OnDrawItem kannst du dann prüfen, obs der Eintrag ist, der mit dem Text übereinstimmt. (wird index übergeben) Hier kannst du dann die Einfärbung realisieren.
|
Re: Text von Auswahlfeld der Combobox einfärben
Das sieht ungefähr so aus :wink:
Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin if Kriterium then Combobox1.Canvas.Font.Color := clBlue else Combobox1.Canvas.Font.Color := Combobox1.font.color; Combobox1.Canvas.FillRect(rect); combobox1.Canvas.TextOut(rect.Left,rect.Top,combobox1.Items.Strings[index]) end; |
Re: Text von Auswahlfeld der Combobox einfärben
Dann wirst du selber das Zeichnen übernehmen müssen. Ist ganz ähnlich wie bei Listboxen, aber um das Zeichnen wirst du nicht herumkommen.
CBS_OWNERDRAWFIXED oder CBS_OWNERDRAWVARIABLE setzen und dann WM_DRAWITEM abfangen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 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