Einzelnen Beitrag anzeigen

heri

Registriert seit: 20. Mär 2006
81 Beiträge
 
Delphi 2006 Enterprise
 
#1

TEdit.Width dynamisch vergrössern

  Alt 16. Jun 2006, 22:12
Gibts was einfachers als:

Delphi-Quellcode:
procedure TForm.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
l: Integer;

  function TextWidth(AText: string; AFont: TFont): Integer;
  var
    MyHand: HWND;
    MyDc: HDC;
    MyCanvas: TCanvas;
  begin
    MyHand := GetDesktopWindow;
    MyDc := GetWindowDC(MyHand);
    MyCanvas := TCanvas.Create;
    MyCanvas.Handle := MyDC;
    MyCanvas.Font := AFont;
    Result := MyCanvas.TextWidth(AText)+16;
    MyCanvas.Free;
  end;

begin

  if (length(Edit1key.Text)>10) then
  begin
     l := TextWidth(Edit1key.Text, Edit1key.Font);
     if (l>Edit1key.Tag) AND(l>Edit1key.Width) then
     begin
       Edit1key.Width := l;
       Edit1key.Tag := Edit1key.Width;
     end;
  end;

end;
meine Variante - die zwar funktioniert - kommt mir etwas seltsam vor.
Bestimmt hat jemand eine bessere Idee?!
  Mit Zitat antworten Zitat