![]() |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Versuch es mal mit
Delphi-Quellcode:
Canvas.Font.Assign(FFont);
|
Re: Benötige Hilfe beim Entwickeln einer Komponente
Oje da kommt es zu folgender Fehlermeldung:
Format '%p' ungültig oder nicht kompatibel mit Argument. Probiert hatte ich das auch schon mit Assign(Font); Nach der Fehlermeldung wird auch nichts mehr gezeichnet...Scheint was schlimmeres zu sein... |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hä? Hast Du eine Format-Anweisung irgendwo? :gruebel:
|
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hier nochmal alles, was ich zum Thema Font in meiner Komponente drin habe:
Delphi-Quellcode:
private
... FFont: TFont; published property Font: TFont read FFont write FFont; constructor TmyPanel.Create(AOwner: TComponent); begin inherited Create(AOwner); FFont:=TFont.Create; ... destructor TmyPanel.Destroy; begin FFont.Free; ... procedure TmyPanel.Paint; begin ... Canvas.Font := Font; |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Delphi-Quellcode:
So sollte es eigentlich gehen.
private
... FFont: TFont; published property Font: TFont read FFont write FFont; constructor TmyPanel.Create(AOwner: TComponent); begin inherited Create(AOwner); FFont:=TFont.Create; ... destructor TmyPanel.Destroy; begin FFont.Free; ... procedure TmyPanel.Paint; begin ... self.Canvas.Font.Assign(FFont); |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hallo torud,
du brauchst keinen eigenen Font creieren. TCanvas besitzt schon einen. Es ist nur so, dass der Font des Controls nicht der Font des Canvas ist (zwei seperate Fonts). Da reicht es aber, wenn du den Font des Controls dem Font des Canvas zuweist.
Delphi-Quellcode:
Alle Änderungen auf den Font des Controls (im OI) wirken sich dann automatisch auf den Canvas aus und werden somit beim DrawTest berücksichtigt.
procedure TMyPanel.Paint;
begin Canvas.Font.assign(self.Font); .... Irgentwo war auch noch eine Methode FontChange oder so. in der ruft man inhereitet auf, damit das Control bei Änderung des Fonts neu gezeichnet wird. Ob das jetzt mit deiner Textausrichtung geklappt hat, hab ich jetzt nicht so richtig verstanden. Gruß oki |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Ich hab grad noch mal nachgeschaut, ich glaub das mit FontChange war Käse. Wenn du den Font des Controls änderst, wird glaub ich das Control automatisch neu gezeichnet.
Gruß oki |
Re: Benötige Hilfe beim Entwickeln einer Komponente
:-D FAST!
Aber nur fast, denn wenn ich die Farbe oder die Schriftart ändere bekomme ich wieder ne böse Fehlermeldung. Zugriffsverletzung bei Adresse 4000596E in Modul 'rtl60.bpl'. Lesen von Adresse 00000001. Danach wird natürlich auch wieder nix mehr auf dem Canvas gezeichnet... |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hm, kann ich jetzt also die Variablendeklaration FFont löschen oder was soll ich tun?
Habe gerade mal folgendes im OI getan. Font aufgeklappt und dort dann alles einzeln geändert => Schriftart, Grösse, Farbe usw. Es hat sich nichts in der Kompo getan. Erst als ich ein Resize ausgelöst habe, wurde es neu gezeichnet und dann war alles schön - ohne Fehlermeldung. Gehe ich aber den Weg über den FontDialog erhalte ich die Fehlermeldungen: Format '%p' ungültig oder nicht kompatibel mit Argument. und danach: Kein Expandieren möglich und danach: Zugriffsverletzung bei Adresse 40005974 in Modul 'rtl60.bpl'. Lesen von Adresse FFFFFFDD. |
Re: Benötige Hilfe beim Entwickeln einer Komponente
Hi,
wie gesagt, keinen eigenen Font creieren. Schmeiss deine Deklaration (property Font ...), FFont, Create und Free komplett raus. gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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