Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Procedure funktioniert nicht? (https://www.delphipraxis.net/74590-procedure-funktioniert-nicht.html)

PeterKiers 5. Aug 2006 21:15


Procedure funktioniert nicht?
 
Hallo Leute,

Mein Procedure funktioniert nicht?

Delphi-Quellcode:
procedure TChangeFont.FormCreate(Sender: TObject);
var
  i, minFontSize, maxFontSize:Integer;
begin
  minFontSize:=4;
  maxFontSize:=48;
  for i:=minFontSize to maxFontSize do
  ListBox3.Items.Add(IntToStr(i));
  Listbox1.Items := Screen.Fonts;
  ListBox2.Items.AddObject('Regular',TObject(fsNormal));
  ListBox2.Items.AddObject('Italic',TObject(fsItalic));
  ListBox2.Items.AddObject('Bold',TObject(fsBold));
  [b]ListBox2.Items.AddObject('Bold Italic',TObject(fsBold, fsItalic)); [/b]   //ERROR
end;
Fehlermeldung:

[Error] ChangeFontu.pas(94): ')' expected but ',' found

Peter Kiers

CK_CK 5. Aug 2006 21:18

Re: Procedure funktioniert nicht?
 
Es muss heißen "[fsBold, fsItalic]"...

PeterKiers 5. Aug 2006 21:23

Re: Procedure funktioniert nicht?
 
Delphi-Quellcode:
ListBox2.Items.AddObject('Bold Italic',TObject([fsBold, fsItalic]));
Fehlermeldung:

[Error] ChangeFontu.pas(94): Invalid typecast

P.

GuenterS 5. Aug 2006 21:29

Re: Procedure funktioniert nicht?
 
Du kannst dort auch nicht beides übergeben sondern nur eines davon.

ManuMF 5. Aug 2006 21:35

Re: Procedure funktioniert nicht?
 
:arrow: Kleiner Tipp am Rande: Wenn du die Zeile der Fehlermeldung (nicht im Code, sondern in der Liste) markierst und [F1] drückst, öffnet sich die Hilfe uns sagt dir, was zu der Meldung führt. :idea:

:arrow: Und: schreibe besser folgendes:
Delphi-Quellcode:
ListBox1.Items.AddStrings(Screen.Fonts);
Das fügt die Fonts der Listbox hinzu. Mit deinem Code weist du hingegen die Fonts den Strings zu, ist nicht so glücklich ;-)

:arrow: Ach so, TFontStyles = set of TFontStyle
TObject() funktioniert mit TFontStyle, aber nicht mit dem Set of, also TFontStyles. Das ist der Fehler. Eine Lösung habe ich momentan leider nicht :drunken:
Aber wozu brauchst du das denn? Sieht nach einer Auswahl von Schriftart und Schriftstil aus. Vielleicht kannst du der Listbox einfach nur einen String hinzufügen, und später per IF den entsprechenden Stil setzen:
Delphi-Quellcode:
if (Listbox2.Items[ListBox2.ItemIndex] = 'Italic') then
  ? := fsItalic
else if ...
So in der Art.

CK_CK 5. Aug 2006 21:38

Re: Procedure funktioniert nicht?
 
Mir würde jetzt spontan noch einfallen: "fsBold or fsItalic"...

...aber irgendwie bin ich mir zu dieser späten Stunde garnicht mehr so sicher...
(ich verstehe gerade noch nicht mal deine Prozedur... :drunken:)

PeterKiers 5. Aug 2006 21:50

Re: Procedure funktioniert nicht?
 
Ich Gibe auf.

Peter Kiers

Hawkeye219 5. Aug 2006 22:09

Re: Procedure funktioniert nicht?
 
Zitat:

Zitat von PeterKiers
Ich Gibe auf.

Warum? Weil es nicht auf Anhieb funktioniert?

Delphi-Quellcode:
procedure TChangeFont.FormCreate (Sender: TObject)
var
  i, minFontSize, maxFontSize: Integer;
  Styles: TFontStyles;
begin
  Listbox1.Items.Assign (Screen.Fonts);

  with ListBox2.Items do
    begin
      Styles := [];
      AddObject('Regular', TObject(Byte(Styles)));
      Styles := [fsItalic];
      AddObject('Italic', TObject(Byte(Styles)));
      Styles := [fsBold];
      AddObject('Bold', TObject(Byte(Styles)));
      Styles := [fsBold, fsItalic];
      AddObject('Bold Italic', TObject(Byte(Styles)));
    end;

  minFontSize := 4;
  maxFontSize := 48;
  for i := minFontSize to maxFontSize do
    ListBox3.Items.Add(IntToStr(i));
end;

procedure TChangeFont.ListBox2Click (Sender: TObject)
begin
  with ListBox2 do
    if (ItemIndex >= 0) then
      Label1.Font.Style := TFontStyles(Byte(Items.Objects[ItemIndex]));
end;
Gruß Hawkeye

PeterKiers 7. Aug 2006 16:36

Re: Procedure funktioniert nicht?
 
Hawkeye219, Du bist der Beste.

Danke,

Peter Kiers


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