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?!