Bei XE2 - Über ein angepasste Theme sollte das möglich sein.
Ich vergaß zu erwähnen, dass ich keine Themes benutzen kann (wegen der Optik) und die ComboBox selbst zeichne.
Delphi-Quellcode:
procedure TComboBoxFeld.OnComboBoxDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
i_ItemTop: Integer;
ComboBox : TLabeledComboBox;
begin
//akt. ComboBox auf Variable laden
ComboBox := Control as TLabeledComboBox;
If odSelected in State then
begin
//Wenn der Eintrag markiert ist, dann Hintergrund blau und Schriftfarbe weiss
ComboBox.Canvas.Brush.Color := clHighlight;
ComboBox.Canvas.Font.Color := clHighlightText;
end
else
begin
//Hintergrund-Farbe und Font setzen
ComboBox.Canvas.Brush.Color := ComboBox.Color;
ComboBox.Canvas.Font.Assign(ComboBox.Font);
end;
//ComboBox-Rect füllen
ComboBox.Canvas.FillRect(Rect);
//Top der einzelnen Zeilen errechnen
i_ItemTop := Rect.Top + ((Rect.Height - abs(ComboBox.Font.Height)) div 2) - 1;
//Text ausgeben
ComboBox.Canvas.TextOut(Rect.Left + 2, i_ItemTop, ComboBox.Items[Index]);
end;
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<