【发布时间】:2018-12-12 03:52:32
【问题描述】:
在表格上:
* TCategoryButtons(例如,有 3 个类别,每个类别有 10 个按钮)
* TPageControl(干净)
创建了 30 个(例如)不同的帧。
按下按钮时需要:
1. 检查是否已经创建了一个框架(一个按钮只有一个框架)。
2.在TPageControl中创建一个标签并激活它。
3.创建按钮对应的框架,放入创建的标签页中(如果标签页关闭,杀掉它和框架)。
这就是我能做的:
procedure TForm1.CategoryButtons1Categories0Items0Click(Sender: TObject);
var
Client: TTabSheet;
begin
if (not Assigned(Frame2)) then
begin
Client := TTabSheet.Create(Self);
Client.PageControl := PageControl1;
Client.Caption := CategoryButtons1.Categories[0].Items[0].Caption;
PageControl1.ActivePage := Client;
Frame2 := TFrame2.Create(nil);
Frame2.Parent := Client;
end;
end;
我试着这样做:
type
TFrameClass = class of tframe;
function GetFrClass(const aClassID: Integer): TFrameClass;
begin
case aClassID of
1:
Result := TFrame2;
2:
Result := TFrame3;
else
Result := nil;
end;
end;
procedure TForm1.CreateFrm(tags: Integer; NameTSh: string);
var
FrClass: TFrameClass;
Frame: tframe;
Client: TTabSheet;
begin
FrClass := GetFrameClass(tags);
if (FrClass <> nil) then
begin
Client := TTabSheet.Create(Self);
Client.PageControl := PageControl1;
Client.Caption := NameTSh;
Frame := FrClass.Create(Client);
Frame.Parent := Client;
end;
end;
但是这种方法不限制创建的框架实例的数量。
请告诉我解决办法!
【问题讨论】:
-
当然,您需要做的就是检查是否已添加相关框架类的实例,如果已添加则中止创建新实例?
-
@MartynA 需要检查框架是否存在,如果存在则显示消息,否则创建。以及破坏创建框架的能力
标签: delphi delphi-xe2 delphi-xe