完美實現tabsheet中融合窗體,不重複建立,並自動切換到已經建立的sheet
阿新 • • 發佈:2018-12-07
procedure TForm1.btn1Click(Sender: TObject);
//功能說明 點選時,建立視窗並顯示到sheet中,再並點選時如果已經有則不再建立;
//如果已經有開啟的則要切換成當前活動的。專案設定中取消指定窗體的自動建立
var
i:Integer;
begin
if Application.FindComponent('form2') = nil then //沒有建立測開始
begin
Application.CreateForm(TForm2,Form2);
form2.ManualDock(rzpgcntrl1);
Form2.Visible:=true;
rzpgcntrl1.ActivePageIndex :=rzpgcntrl1.PageCount-1;
end
else
begin
for i:=0 to rzpgcntrl1.PageCount-1 do //檢索已經開啟的sheet並顯示
begin
//ShowMessage(form2.caption); //測試可以取到值
if rzpgcntrl1.Pages[i].caption=form2.caption then
begin
rzpgcntrl1.ActivePage:=rzpgcntrl1.Pages[i];
end;
end;
end;
//功能說明 點選時,建立視窗並顯示到sheet中,再並點選時如果已經有則不再建立;
//如果已經有開啟的則要切換成當前活動的。專案設定中取消指定窗體的自動建立
var
i:Integer;
begin
if Application.FindComponent('form2') = nil then //沒有建立測開始
begin
form2.ManualDock(rzpgcntrl1);
Form2.Visible:=true;
rzpgcntrl1.ActivePageIndex :=rzpgcntrl1.PageCount-1;
end
else
begin
for i:=0 to rzpgcntrl1.PageCount-1 do //檢索已經開啟的sheet並顯示
begin
//ShowMessage(form2.caption); //測試可以取到值
if rzpgcntrl1.Pages[i].caption=form2.caption then
begin
rzpgcntrl1.ActivePage:=rzpgcntrl1.Pages[i];
end;
end;
end;
end;
如果把這個改成函式呼叫就更方法了,我改了幾次不成功 ,希望高手能將這段改成函式,方法呼叫