发信人: finlove (荒野之狼), 信区: BorlandDev
标 题: 限制在各种组件容器中放入某类组件数量的方法
发信站: 哈工大紫丁香 (Tue Jan 22 12:27:18 2002) , 转信
一般情况下,程序设计者可以在Form中加入不限数量的构件,但某些构件只需要或只
能加入一个,例如前例“防止重复执行”的构件就属于这种情况,此时可以在构件的源代
码中加入一个静态变量来记录已建立的个数,这个变量在构件的Create方法中被递增,而
在构件的Destroy方法中被递减,而在Create方法中若发现数量已超过限制即可提出一个异
常来中止构件的构造(在类的构造函数中出现异常将自动调用该类的析构函数)。
下例代码段示例如果只允许设计者在Project中加入一个某类构件:
unit MyTest
interface
uses
Windows, Classes, SysUtils, Forms;
type
TMyTest = class(TComponent)
public
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
end;
procedure Register;
implementation
var
SelfCounts: Integer = 0; // 记录建立个数的静态变量
procedure Register;
begin
RegisterComponents('Test', [TMyTest]);
end;
constructor TMyTest.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Inc(SelfCounts); // 计数器递增
if SelfCounts>1 then begin
// 当超过限制时提出一个异常
raise Exception.Create('最多只能建立一个这样的构件!');
end;
end;
destructor TSWOnlyOne.Destroy;
begin
Dec(SelfCounts); // 计数器递减
inherited Destroy;
end;
end.
--
※ 来源:.哈工大紫丁香 http://bbs.hit.edu.cn [FROM: 211.97.214.52]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.970毫秒