Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

TCanvas für TextWidth in Komponente verwenden

  Alt 12. Jun 2007, 14:34
Hallo,

ich muss die Breite eines Textes in einem Panel wissen.
Das ganze passiert in einer Komponente.

Meine erste Version war so:
Delphi-Quellcode:
var
  Text_Width: Integer;

begin
  Text_Width := Application.MainForm.Canvas.TextWidth(S); //In "S" ist der String
end;
Da ich aber die Unit "Forms" in meiner Komponente nicht brauch und will, dacht ich mir, ich könnte ja ein Canvas erzeugen:
Delphi-Quellcode:
var
  Canvas : TCanvas;

begin
  //Canvas ereugen
  Canvas := TCanvas.Create;

  try
    Text_Width := Canvas.TextWidth(S);
  finally
    FreeAndNil(Canvas);
  end;
end;
Wenn ich aber nun diesen Code ausführe, erhalte ich die Fehlermeldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: 'Leinwand/Bild erlaubt kein Zeichnen'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Also muss ich irgendwas falsch machen mit dem Canvas. Kann mir da jemand helfen?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat