递归清空窗体上 所有文本框,下拉框中的文本。(修改封装成控件)

{*
单元说明    :  递归清空窗体上 所有文本框,下拉框中的文本, 封装成控件。
作者        :   
笔名        :  易  一    英文名:yeeyee
E-Mail      :  jane1437@163.com
My Blog     :   http://blog.csdn.net/yeeyee/
QQ          :   282624758

创建时间:          2005年3月24日
及最后修改时间:2005年5月28日
修改人修改时间及:
修改说明:         将其封装成控件
版权声明:      版权所有,转载请注明本人邮箱,笔名,
                并保证文章的完整性。
调用说明:
   将控件放到 Form 中, 按 ESC 键 就可以调用。

优缺点说明:
   不能对控件再增加检验性代码。
*}
unit ESCDispose;

interface

uses
  SysUtils, Classes, Forms, Controls, StdCtrls, Windows;

type
  TESCDispose = class(TComponent)
  private
    { Private declarations }

    FForm:TForm;
    //函数单元。
    procedure ClearText(AControl:TWinControl);
    //函数调用
    procedure MyKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
    //设置键盘事件
    procedure SetKeyDown(AControl:TWinControl);

  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); virtual;
    destructor Destroy; override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TESCDispose]);
end;

constructor TESCDispose.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FForm:=(AOwner As TForm);
  SetKeyDown(FForm);
end;

destructor TESCDispose.Destroy;
begin
  inherited Destroy;
end;

//函数单元。
procedure TESCDispose.ClearText(AControl:TWinControl);
var
  I: Integer;
begin
  for I := 0 to AControl.ControlCount - 1 do    // Iterate
  begin
    //需清空处理控件
    if AControl.Controls[i] is TEdit then
    begin
      (AControl.Controls[i] as TEdit).Text:='';
    end;
    if AControl.Controls[i] is TComboBox then
    begin
      (AControl.Controls[i] as TComboBox).ClearSelection;
    end;
    //可以 作为 父亲的控件处理事件。
    if AControl.Controls[i] is TCustomControl  then
    begin
      ClearText(AControl.Controls[i] as TCustomControl);
    end;
  end;
end;

//函数调用
procedure TESCDispose.MyKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // ESC 键处理事件。
  if (Key = VK_ESCAPE)  then
  begin
    ClearText(FForm);
  end;
end;

//设置键盘事件
procedure TESCDispose.SetKeyDown(AControl:TWinControl);
var
  I: Integer;
begin
  for I := 0 to AControl.ControlCount - 1 do    // Iterate
  begin
    //需清空处理控件
    if AControl.Controls[i] is TEdit then
    begin
      (AControl.Controls[i] as TEdit).OnKeyDown:=MyKeyDown;
    end;
    if AControl.Controls[i] is TComboBox then
    begin
      (AControl.Controls[i] as TComboBox).onKeyDown:=MyKeyDown;
    end;
    //可以 作为 父亲的控件处理事件。
    if AControl.Controls[i] is TCustomControl  then
    begin
      SetKeyDown(AControl.Controls[i] as TCustomControl);
    end;
  end;
end;

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值