Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Canvas.getTextWidth(Text) funzt nicht richtig!


JRegier - Sa 30.07.05 10:43
Titel: Canvas.getTextWidth(Text) funzt nicht richtig!
Hi, ich habe eine Function geschrieben um StringLänge in Pixel zu ermitteln aber es funzt nicht richtig!
Was mache ich falsch siehe Code;


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
// String länge in Pix ermitteln
function TWhereManager.GetStrLenInPix(Text : String; Font : TFont) : Integer;
begin
   Canvas.Font := Font;  // Assign(Font) habe ich auch versucht
   Result := Canvas.TextWidth(Text);
end;


Ich will hiermit die Länge einer TEdit componente einstellen damit ganzer Text zu sehen ist! Ich addiere auch 8 dazu aber bei einer
Schriftart funzte es und bei anderer nicht!


GTA-Place - Sa 30.07.05 11:07

Schonmal so versucht?:


Delphi-Quelltext
1:
2:
Edit1.Canvas.Font := ...;
Edit1.Canvas.TextWidth(...);


Keldorn - Sa 30.07.05 11:09

user profile iconGTA-Place hat folgendes geschrieben:
Schonmal so versucht?:

ein edit hat kein canvas als eigenschaft ;-)


GTA-Place - Sa 30.07.05 11:19

Oh... ^^
Naja, dann halt nicht...


Sprint - Sa 30.07.05 11:34

user profile iconKeldorn hat folgendes geschrieben:
user profile iconGTA-Place hat folgendes geschrieben:
Schonmal so versucht?:
ein edit hat kein canvas als eigenschaft

Das kann man ja schnell ändern:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  with TControlCanvas.Create do
    try
      Control := Edit1;
      Font := Edit1.Font;
      Edit1.ClientWidth := TextWidth(Edit1.Text) + 4;
    finally
      Free;
    end;


JRegier - Sa 30.07.05 11:49

Vielen Dank schonmal, Delpher! :wink: