Как автоматически расширить 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.


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

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...