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

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

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
.




туры по италии рим шкаф-купе угловой. заказать такси в аэропорт домодедово.