Entwickler-Ecke
Multimedia / Grafik - FontChaos...
FriFra - So 30.06.02 12:00
Titel: FontChaos...
Ich habe in meinem Programm ein Image, auf welches eingelesene Werte in einem eingestellten Intervall geschrieben werden. Ich benötige dafür mehrere verschiedene Schriftarten und habe deshalb für die jeweiligen Textelemente Variablen vom Typ TFont angelegt.
Ändere ich nun zur Laufzeit die Eigenschaften einer TFont Variable werden machmal auch die Werte beliebiger anderer Font-Varialben mit geändert... dann hilft nur noch ein Programmneustart um die Werte wieder zu "entkoppeln".
Ausgaberoutine (Beispiel):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| //Text1 Image1.Canvas.Lock; Image1.Canvas.Font:=T1Font; Image1.Canvas.TextOut(0,0, 'Text1'); Image1.Canvas.Unlock; //Text1
//Text2 Image1.Canvas.Lock; Image1.Canvas.Font:=T2Font; Image1.Canvas.TextOut(0,10, 'Text2'); Image1.Canvas.Unlock; //Text2
//Text3 Image1.Canvas.Lock; Image1.Canvas.Font:=T3Font; Image1.Canvas.TextOut(0,30, 'Text3'); Image1.Canvas.Unlock; //Text3 |
Fonteinstellung (Beispiel):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure TfrmLabel.BitBtn1Click(Sender: TObject); begin with FontDialog1 do begin Font := Main.T1Font; if Execute then begin Main.T1Font := Font; //Neu schreiben... ChangeProp(Sender); end; end;
procedure TfrmLabel.BitBtn2Click(Sender: TObject); begin with FontDialog1 do begin Font := Main.T2Font; if Execute then begin Main.T2Font := Font; //Neu schreiben... ChangeProp(Sender); end; end;
procedure TfrmLabel.BitBtn3Click(Sender: TObject); begin with FontDialog1 do begin Font := Main.T3Font; if Execute then begin Main.T3Font := Font; //Neu schreiben... ChangeProp(Sender); end; end; |
Maverick - Di 02.07.02 11:02
Auf jeden fall sind TFont wie alle Instanzen von Klassen immer Pointer,
wenn du
Main.T3Font := Font ausführst, zeigen beide Fonts auf den gleichen Speicherbereich, änderst du danach einen Wert, ändert sich auch der andere
FriFra - Di 02.07.02 11:25
Über Font.Assign(...) habe ich das Problem in den Griff bekommen....
Tino - Di 02.07.02 11:27
Maverick hat folgendes geschrieben: |
...zeigen beide Fonts auf den gleichen Speicherbereich, änderst du danach einen Wert, ändert sich auch der andere |
Nicht unbedingt. In den meisten Fällen handelt es sich um ein Property und wenn Du diesen Properties einen Wert zuweist sieht die Zuweisung dann meistens intern so aus:
Quelltext
1: 2: 3: 4:
| Procedure tMyClass.SetFont (aValue: tFont); Begin fFont.Assign (aValue) End; |
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!