Home » Tipps & Tricks » Komponenten » TListBox/TComboBox » Eine Farbcombobox realisieren
Eine Farbcombobox realisieren
Eine komfortable Auswahl-Möglichkeit für Farben sucht man in älteren Delphi-Versionen in der Komponentenleiste vergebens. Dieser Artikel zeigt, wie Sie eine Farbcombobox realisieren können.Deklarieren Sie zunächst folgendes Array:
const FarbArray : array [0..15] of TColor = (clBlack,clMaroon, clGreen, clOlive, clNavy, clPurple, clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clWhite);
Schreiben Sie in das OnDrawItem-Ereignis Ihrer Combobox folgendes. Setzen Sie die Eigenschaft Style der Combobox zuvor auf csOwnerDrawFixed oder csOwnerDrawVariable damit das Ereignis ausgelöst wird.
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); const cBrushColors: array [Boolean] of TColor = (clWindow, clHighlight); cPenColors: array [Boolean] of TColor = (clWindowText, clHighlightText); begin Assert(Control is TCombobox); with (Control as TComboBox).Canvas do begin // Hintergrund und Text Farbe bestimmen, anschließend den Hintergrund löschen Brush.Color := cBrushColors[(OdSelected in State) or (OdFocused in State)]; Font.Color := cPenColors[(OdSelected in State) or (OdFocused in State)]; FillRect(Rect); Rect.Right := 30; Textout(Rect.Right + 5, Rect.Top + 1, (Control as TComboBox).Items[Index]); // Jetzt gleichen wir das Rect für die Farbbox an // und anschließend zeichen wir diese ... InflateRect(Rect, 0, -2); OffsetRect(Rect, 2, 0); Brush.Style := bsClear; Brush.Color := FarbArray[Index]; Rectangle(Rect); end; end;
Füllen Sie die Items-Eigenschaft mit folgenden Farbwerten:
Schwarz Braun Grün Hellbraun Dunkelblau Lila Dunkelgr ün Grau Silber Rot Hellgrün Gelb Blau Pink Hellblau Weiß