AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Items in ComboBox mit verschiedenen Schriften

Ein Thema von Infamous · begonnen am 11. Dez 2007 · letzter Beitrag vom 11. Dez 2007
Antwort Antwort
Infamous

Registriert seit: 27. Nov 2007
16 Beiträge
 
#1

Items in ComboBox mit verschiedenen Schriften

  Alt 11. Dez 2007, 11:08
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
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Items in ComboBox mit verschiedenen Schriften

  Alt 11. Dez 2007, 11:19
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;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#3

Re: Items in ComboBox mit verschiedenen Schriften

  Alt 11. Dez 2007, 11:21
Schriftarten_Edit.Style := csOwnerDrawFixed; // kann auch im OI eingestellt werden und dann im OnDrawItem-Event selber zeichnen.


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:
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;
[add3] ist übrigens auf dem Beispiel in der OH entstanden: [oh]OnDrawItem, (Delphi-Beispiel)[/oh]

[add2]
aha, da is ja schon wer ... warum hast du mir denn keine RedBox geschickt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Infamous

Registriert seit: 27. Nov 2007
16 Beiträge
 
#4

Re: Items in ComboBox mit verschiedenen Schriften

  Alt 11. Dez 2007, 11:41
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?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Items in ComboBox mit verschiedenen Schriften

  Alt 11. Dez 2007, 12:08
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#6

Re: Items in ComboBox mit verschiedenen Schriften

  Alt 11. Dez 2007, 12:26
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz