发信人: 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毫秒