这个问题我遇到过,和frame没有关系。是因为你在frame上放了太多的控件,导致
句柄不够了。win98不像win2000,2000是纯32位的,句柄数量没有限制,而98下句柄
的数量是有限制的,好像是16k。
解决的方法就是每个frame都动态创建,用完就free。
我写了一个类名做参数的procedure来动态创建和free。
procedure TForm_ClerkMain.CreateFrame(frame: TFrame;FormClass: String);
var
formClass: TFormClass;
begin
if frame<>nil then
frame.Free;
frame := TFormClass(GetClass(FormClass)).Create(self);
frame.Parent := self;
frame.Align := alClient;
frame.Show;
end;
在使用之前要在initialiaziton里注册你所用到的类名。
initialization
//注册窗体类,作为参数传递。
RegisterClass(Tframe_PC_Module);
RegisterClass(Tframe_PC_Authority);
RegisterClass(Tframe_PC_WageMap);
RegisterClass(Tframe_PC_Wage);