AGB  ·  Datenschutz  ·  Impressum  







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

Wegen TFontDialog das TFont Objekt Klonen

Ein Thema von gibb · begonnen am 23. Okt 2008 · letzter Beitrag vom 23. Okt 2008
Antwort Antwort
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#1

Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 11:23
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:
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.
Nun Folgendes Problem:

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:
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.
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 11:31
Hast Du evtl. zu wenig Assigned?
Delphi-Quellcode:
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;
Geht bei mir einwandfrei.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 11:32
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 =?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 11:34
Das hab ich jetzt nicht verstanden. Wie sieht der Source denn aus?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 11:40
Zitat von DeddyH:
Hast Du evtl. zu wenig Assigned?
Delphi-Quellcode:
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;
Geht bei mir einwandfrei.
Ich danke dir du bist mein Held... so geht es... komisch ist aber immernoch das es der eine weg ging der andere nicht...

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...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 11:44
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Wegen TFontDialog das TFont Objekt Klonen

  Alt 23. Okt 2008, 12:34
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....

Danke jedenfalls
  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 22:38 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