Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

AW: TComboBox: Farbe des Markierrahmens ändern

  Alt 6. Mai 2012, 21:15
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! <<
  Mit Zitat antworten Zitat