Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi schriftstile in einer Combobox (https://www.delphipraxis.net/120781-schriftstile-einer-combobox.html)

chrio89 16. Sep 2008 15:57


schriftstile in einer Combobox
 
Hi ich hab gleich mal 2 Fragen:

1. kann man in einer Combobox für Items verschiedene Schriftstile verwenden (Ich würde gern bestimmte einträge gesondert hervorheben)

[edit=SirThornberry]zweite Frage entfernt - Mfg, SirThornberry[/edit]

toms 16. Sep 2008 16:06

Re: schriftstile in einer Combobox
 
Zitat:

Zitat von chrio89
Hi ich hab gleich mal 2 Fragen:

1. kann man in einer Combobox für Items verschiedene Schriftstile verwenden (Ich würde gern bestimmte einträge gesondert hervorheben)

Hallo, das gesuchte Stichwort heißt OwnerDraw

Namenloser 16. Sep 2008 16:12

Re: schriftstile in einer Combobox
 
Es gab bei Delphi imemr so ein Beispiel-Projekt, wo alle verfügbaren Schriftarten eingelesen wurden und in eienr Combobox in der jeweiligen Schriftart dargestellt wurden (so wie man das von Word etc kennt). Guck dir das mal an.

mkinzler 16. Sep 2008 16:14

Re: schriftstile in einer Combobox
 
Delphi-Quellcode:
ComboBox.Items.Assign( Screen.Fonts);

toms 16. Sep 2008 16:15

Re: schriftstile in einer Combobox
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
ComboBox.Items.Assign( Screen.Fonts);

Das zeigt nur alle Schriften in der ComboBox an, ändert jedoch nicht die Schriftstile

Zitat:

(Ich würde gern bestimmte einträge gesondert hervorheben)

shmia 16. Sep 2008 17:14

Re: schriftstile in einer Combobox
 
Mal so ganz auf die Schnelle könntest du auch einen TFontDialog nehmen, um eine Schriftart auszuwählen.
Im Event OnDoubleClick einbauen.

Die ComboBox, die gleich den Schriftstil anzeigt hat nämlich auch zwei entscheidende Nachteile:
1.) es müssen ALLE Schriftarten auf dem Rechner geladen werden. Das dauert seine Zeit und hat einen hohen Resourcenverbrauch zu Folge. Es soll ja Leute geben, die sich über 1000 Fonts auf ihrem Rechner installiert haben... :wall:
2.) Bei Spezialfonts (z.B. Barcode-Fonts, Wingdings, WebDings,...) wird der Fontname nicht vernünftig angezeigt. Das ist vielleicht nicht so schlimm, weil man gerade die Spezialfonts eh nicht benützen möchte, sieht aber unfein aus.

Die Schriftart wird ja wohl relativ selten ausgewählt. Der TFontDialog mag für manche vielleicht etwas altmodisch aussehen, ist aber vom Kosten/Nutzen-Verhältnis genau richtig.

toms 16. Sep 2008 17:28

Re: schriftstile in einer Combobox
 
@shima: So wie Chris es beschrieben hat, möchte er einfach bei einigen Items ein anderer Schriftstil verwenden.
Er hat nichts geschrieben von (alle) Schriftarten in die ComboBox laden

Zitat:

kann man in einer Combobox für Items verschiedene Schriftstile verwenden (Ich würde gern bestimmte einträge gesondert hervorheben)

roga 16. Sep 2008 19:43

Re: schriftstile in einer Combobox
 
Hallo,

ein kleines Beispiel als Anregung:

Delphi-Quellcode:
procedure TFormEditor.ComboLetterDrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
  with ComboLetter.Canvas do
  begin
    FillRect(Rect);
    Font.Name := ComboLetter.Items[Index];
    Font.Size := 10;
    TextOut(Rect.Left + 1, Rect.Top, ComboLetter.Items[Index]);
  end;
end;

procedure TFormLetterEditor.ComboLetterMeasureItem(Control: TWinControl;
  Index: Integer; var Height: Integer);
begin
  if Index = -1 then exit;
  with ComboLetter.Canvas do
  begin
    Font.Name := ComboLetter.Items[Index];
    Font.Size := 10;
    Height := TextHeight('Xx') + 2;
  end;
end;
In den Eigenschaften muss Style auf csOwnerDrawVariable stehen!

Gruß RoGa

SirThornberry 16. Sep 2008 20:14

Re: schriftstile in einer Combobox
 
könntest du bitte für deine zweite Frage ein neues Thema erstellen damit es nicht ein riesen Durcheinander wird. Zudem kannst du dann entsprechend der zweiten Frage auch einen dafür entsprechenden Titel wählen. Danke :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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