procedure TFrmMain.mniDataQueryClick(Sender: TObject);
var
frm: TFrm;
begin
frm := TFrm(FrmQueryData);
OpenForm(pgcForm, TFrmQueryData, frm);
end;
创建窗体
procedure TFrmMain.OpenForm(PGC: TPageControl; Tfrm: TComponentClass; _form: TFrm);
begin
if not Assigned(_form) then
begin
Application.CreateForm(Tfrm, _form);
_form.Show;
end;
FormToSheet(PGC, _form, _form.Name, _form.Caption);
end;
在pagecontrol中显示窗体
function FindTab(pagecontrol: TPageControl; tabName: string): integer;
var
i: integer;
begin
Result := -1;
for i := 0 to pagecontrol.PageCount - 1 do
begin
if pagecontrol.Pages[i].Name = tabName then
begin
Result := i;
Break;
end;
end;
end;
procedure FormToSheet(pagecontrol: TPageControl; frm: TForm; tabName, tabCaption: string);
var
i: integer;
tab: TTabSheet;
begin
i := FindTab(pagecontrol, tabName);
if i >= 0 then
begin
pagecontrol.Pages[i].TabVisible := True;
pagecontrol.ActivePageIndex := i;
end
else
begin
tab := TTabSheet.Create(pagecontrol);
tab.Name := tabName;
tab.Caption := tabCaption;
tab.PageControl := pagecontrol;
pagecontrol.ActivePage := tab;
frm.ParentWindow := tab.Handle;
frm.Tag := tab.TabIndex;
tab.InsertControl(frm);
frm.Show;
end;
frm.Show;
end;