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

Previous  Top  Next

    
 

 

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

Code:

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.

 

 

 

©Drkb::00533

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