{*
单元说明 : 递归清空窗体上 所有文本框,下拉框中的文本, 封装成控件。
作者 :
笔名 : 易 一 英文名: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.