Delphi - база знаний


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


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

Взято с Исходников.ru





Начало  Назад  Вперед