![]() |
Konstruktor direkt aufrufen
Hallo!
Der Benutzer meines Programmes soll die Schriftart und -farbe der Hints selbst wählen können. Dazu benutze ich folgenden Code:
Delphi-Quellcode:
und
Type
TMyHintWindow = Class (THintWindow) Constructor Create (AOwner: TComponent) ; override ; end;
Delphi-Quellcode:
Das funktioniert.
Constructor TMyHintWindow.Create(AOwner:TComponent) ;
begin Inherited Create (AOwner); Canvas.Font:=form1.fontdialog1.font; end; Beim Programmstart muss ich dann folgendes machen:
Delphi-Quellcode:
damit das übernommen wird.
procedure TForm1.FormCreate(Sender: TObject);
{ ... } HintWindowClass := TMyHintWindow; Application.ShowHint := false; Application.ShowHint := True; { ... } Was mache ich, wenn ich das während des Programmablaufes noch ändern will? nochmal dasselbe aufrufen, nützt nichts. Kann man den Konstruktor direkt aufrufen? Wenn ja, was muss ich als AOwner übergeben? Thx; Tubos |
Re: Konstruktor direkt aufrufen
Deine Form?
|
Re: Konstruktor direkt aufrufen
Jetzt lässt es sich kompilieren und läuft ohne Absturz, die Schriftart der Hints ist aber immer noch die, die beim Programmstart festgelegt wurde.
|
Re: Konstruktor direkt aufrufen
Moin Tubos,
wann wird denn das HintWindow erzeugt, bzw. wann wird der Font abgefragt? Beim Programmstart ist mir zu ungenau. |
Re: Konstruktor direkt aufrufen
onformcreate - siehe erstes posting.
|
Re: Konstruktor direkt aufrufen
Ich habe das gerade ausprobiert und bei mir funktioniert der Wechsel mit folgendem Code ohne Probleme:
Delphi-Quellcode:
if FontDialog1.Execute then
begin Application.ShowHint := false; Application.ShowHint := true; end; |
Re: Konstruktor direkt aufrufen
wo gehört das rein?
if fontdialog1.execute then ... <-- if execute, was heißt das? |
Re: Konstruktor direkt aufrufen
Moin Tubos,
Du könntest im TMyHintWindow.Create direkt die gewünschten Daten des Fonts eintragen. Ich habe es gerade mal ausprobiert, und hatte den Effekt, dass es zuerst mit FontDialog.Font nicht funktioniert hat. Erst nachdem ich einmal Canvas.Font.Name direkt zugewiesen hatte (ohne FontDialog im Create) ging es immer mit der Zuweisung von FontDialog.Font :gruebel: |
Re: Konstruktor direkt aufrufen
Zitat:
@Tubos: Der Code sollte dahin, wo du dem Benutzer die Möglichkeit geben willst, einen neuen Font auszusuchen - also z.B. in ein Button.OnClick. Fontdialog.Execute zeigt den Dialog an und gibt true zurück, falls der Benutzer OK gedrückt hat, sonst false. Wenn also der Font geändert wurde setze ich Application.ShowHint auf false und gleich wieder auf true, damit das HintWindow neu erzeugt und damit auch über TMyHintWindow.Create die neue Schrift eingesetzt wird. |
Re: Konstruktor direkt aufrufen
achso, execute hat einen rückgabewert ;)
danke, mein programm muss übermorgen fertig sein und ich hab jetzt im moment keine zeit, aber ich werde das dann nächste woche ausprobieren und mich hier nochmal melden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 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