![]() |
Items in ComboBox mit verschiedenen Schriften
Hi,
ich habe eine ComboBox, indie mit Schriftarten_Edit.Items := Screen.Fonts Schriften eingelesen werden. Jetzt will ich die ComboBox so bearbeiten, dass jedes Item die Schrift des jeweiligen Namens hat. Also wird zB das Item "Arial" in der Schriftart Arial angezeigt, "Impact" in der Schriftart Impact usw. Hab rumprobiert mit Items, ItemIndex, aber irgendwie fehlt mir dann immer irgendeine Option. In der Suche (und in Google) hab ich nur Infos über einheitliche Schriften für ComboBoxen gefunden. Mfg |
Re: Items in ComboBox mit verschiedenen Schriften
Hallo,
versuche es mal so:
Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin with Control as TCombobox do begin if Index< screen.Fonts.Count then begin Canvas.FillRect(Rect); canvas.Font.Name:= screen.Fonts.Strings[Index]; Canvas.TextOut(rect.Left, rect.Top,screen.Fonts.Strings[Index]); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Combobox1.Items:= screen.Fonts; Combobox1.Style:= csOwnerDrawFixed; end; |
Re: Items in ComboBox mit verschiedenen Schriften
Delphi-Quellcode:
und dann im OnDrawItem-Event selber zeichnen.
Schriftarten_Edit.Style := csOwnerDrawFixed; // kann auch im OI eingestellt werden
ich glaub dazu gibt's sogar in Delphi's Demoordner oder der OH ein Beispiel. Alternativ gibt es auh schon fertige Komponenten dafür. (Eine ist ganz bestimmt in der JCL drin) [add] aber so schnell aus'm Ärmel geschüttelt ... etwa so:
Delphi-Quellcode:
[add3] ist übrigens auf dem Beispiel in der OH entstanden: [oh]OnDrawItem, (Delphi-Beispiel)[/oh]
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin TComboBox(Control).Canvas.FillRect(Rect); TComboBox(Control).Canvas.Font.Name := TComboBox(Control).Items[Index]; TComboBox(Control).Canvas.TextOut(Rect.Left + 2, Rect.Top, TComboBox(Control).Items[Index]); end; [add2] aha, da is ja schon wer ... warum hast du mir denn keine RedBox geschickt? |
Re: Items in ComboBox mit verschiedenen Schriften
Ah gut, danke! In dem Beispiel der Hilfe bei OnDrawItem steht, dass FillRect(Rect) das Rechteck löscht. Wieso muss man es denn löschen, um es dann wieder zu füllen?
|
Re: Items in ComboBox mit verschiedenen Schriften
Du brauchst ja nur mal mit der Maus über die einzelnen Items drüberfahren, so dass diese selektiert werden, dann kannst du selber sehen warum es so gemacht wird.
|
Re: Items in ComboBox mit verschiedenen Schriften
Dieses löscht alles was vorher an der Stelle gezeichnet wurde.
(Die Farbe womit übermal wird, wurde schon vorher von der VCL gesetzt) laß einfach mal die Zeile weg und schau nach was passiert :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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