![]() |
TEdit.Width dynamisch vergrössern
Gibts was einfachers als:
Delphi-Quellcode:
meine Variante - die zwar funktioniert - kommt mir etwas seltsam vor.
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; Bestimmt hat jemand eine bessere Idee?! :gruebel: |
Re: TEdit.Width dynamisch vergrössern
Habe keine bessere Idee, wuerde es aber so machen:
Delphi-Quellcode:
procedure AdjustTextSize(AControl: TEdit);
var l: Integer; begin with TControlCanvas.Create do try Control := AControl; Font.Assign(AControl.Font); l := TextWidth(AControl.Text) + 16; finally Free; end; if (Length(AControl.Text) > 10) then begin if (l > AControl.Tag) and (l > AControl.Width) then begin AControl.Width := l; AControl.Tag := AControl.Width; end; end; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin AdjustTextSize(TEdit(Sender)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz