![]() |
Wegen TFontDialog das TFont Objekt Klonen
Hallo zusammen,
Folgendes Problem: Ich habe ein tFontDialog welcher im gesamten Zeitraum nicht freigegeben werden soll und auch nicht wird. Nun kann ich ja mit dem
Delphi-Quellcode:
Nun Folgendes Problem:
FontDialog.Font := MyFont1; <- Setze den Wert zum Öffnen
FontDialog.execute <- Ausführen und Prüffen (hier einfachheitshalber nicht da) MyFont1 := fontDialog.font <- setzen des neu ausgewählten Fonts. Ich habe ein 2 tes Font Property das ich gerne setzen würde. Dabei möchte ich den selben Dialog aufrufen... ALso mach ich folgendes:
Delphi-Quellcode:
Nun hab ich aber das Problem das ich damit ich das MyFont1 Objekt überschreibe wenn ich beim FontDialog.Font := MyFont2 Setze da die Referenz noch auf MyFont1 steht.
FontDialog.Font := MyFont2; <- Setze den Wert zum Öffnen
FontDialog.execute <- Ausführen und Prüffen (hier einfachheitshalber nicht da) MyFont2 := fontDialog.font <- setzen des neu ausgewählten Fonts. Jetzt dachte ich, ich sei ein gewitzer Kerl und löse das Problem mit Assign. FontDialog.Font.Assing(MyFont1/MyFont2); schade nur das dass nicht funktioniert und der Effekt der Selbe bleibt. Gibts jetzt ne einfache möglichkeit einen Klon von meinen MyFont Objekten zu übergeben und diese anschliessend wieder Freizugeben nachdem ich diese Auf MyFont gesetzt habe. Oder gibt es für das Problem sonst nen Hack ? lg Gibb |
Re: Wegen TFontDialog das TFont Objekt Klonen
Hast Du evtl. zu wenig Assigned?
Delphi-Quellcode:
Geht bei mir einwandfrei.
procedure TForm1.Button1Click(Sender: TObject);
begin FD.Font.Assign(Font1); if FD.Execute then Font1.Assign(FD.Font); end; procedure TForm1.Button2Click(Sender: TObject); begin FD.Font.Assign(Font2); if FD.Execute then Font2.Assign(FD.Font); end; |
Re: Wegen TFontDialog das TFont Objekt Klonen
Hab gerade noch was bemerkt...
Komisch ist: Der Source erscheint mir zumindest gleich, und ich weiss nicht was ich anders programmiert habe, AAABER: Wenn ich zuersst den MyFont2 Auswähle und setze... und anschliessend den MyFont1 Eingebe wird MyFont2 NICHT überschrieben.... ideen woran das liegen könnte =? |
Re: Wegen TFontDialog das TFont Objekt Klonen
Das hab ich jetzt nicht verstanden. Wie sieht der Source denn aus?
|
Re: Wegen TFontDialog das TFont Objekt Klonen
Zitat:
aber mal noch ne Frage... wieso ist das 2 te assign notwendig ? der FD sollte ja schon eine Eigene Kopie haben und sollte daher auch nicht mehr überschrieben werden... |
Re: Wegen TFontDialog das TFont Objekt Klonen
Ich weiß nicht, ob wir dasselbe gemeint haben, aber ich hatte mir das so gedacht:
- will ich Font1 ändern, belege ich den FontDialog mit dessen Eigenschaften und rufe ihn auf, anschließend wird Font1 mit den Eigenschaften des zurückgegebenen Fonts belegt. - bei Font2 ist das äquivalent. - Es sollen nur die Eigenschaften des jeweiligen Fonts geändert werden, daher ist Assign notwendig, da man sonst die Referenzen ändern würde. Führt im blödesten Fall dann zum Speicherleck. |
Re: Wegen TFontDialog das TFont Objekt Klonen
So ich habs rausgefunden...
FontDlg.Font braucht kein Assing da es bereits in der Setter Metode gemacht wird. Worauf man sich aber beim Lesen achten sollte!!!! und was mir zum verhängniss wurde -.-' mann Sollte sich nicht den Pointer vom FontDlg.Font in die Variable abspeichern... Weil sonst ist ja klar das beim überschreiben dieses Pointers auch die eigene Variable überschrieben wird. Arg ich Idiot.... :wall: :wall: :wall: :wall: :wall: :kotz: :glaskugel: Danke jedenfalls :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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 by Thomas Breitkreuz