Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как автоматически расширить TEdit?

01.01.2007

Следующий компонент автоматически подстраивается под текст, вводимый в него:

unit ExpandingEdit; 
 
interface
 
uses
 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 
StdCtrls;
 
type
 
TExpandingEdit = class(TEdit)
 
private
   
FCanvas: TControlCanvas;
 
protected
    procedure
Change; override;
 
public
   
constructor Create(AOwner: TComponent); override;
    destructor
Destroy; override;
 
end;
 
procedure
Register;
 
implementation
 
constructor TExpandingEdit.Create(AOwner: TComponent);
begin
  inherited
Create(AOwner);
 
FCanvas := TControlCanvas.Create;
 
FCanvas.Control := Self;
end;
 
destructor
TExpandingEdit.Destroy;
begin
 
FCanvas.Free;
  inherited
Destroy;
end;
 
procedure
TExpandingEdit.Change;
const
 
EditMargin = 8;
var
  W
: Integer;
begin
  inherited
Change;
 
if not HandleAllocated then Exit;
 
FCanvas.Font := Font;
  W
:= FCanvas.TextWidth(Text) + (2 * EditMargin);
 
if (Width < W) then Width := W;
end;
 
procedure
Register;
begin
 
RegisterComponents('Samples', [TExpandingEdit]);
end;
 
end.

Взято из https://forum.sources.ru