Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit.Width dynamisch vergrössern (https://www.delphipraxis.net/71553-tedit-width-dynamisch-vergroessern.html)

heri 16. Jun 2006 22:12


TEdit.Width dynamisch vergrössern
 
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?! :gruebel:

toms 16. Jun 2006 22:28

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 18:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz