procedure Tfrmain.ShowDockForm(FormClass: TFormClass; dockCtrl: TRzPageControl); procedure ShowCaption(ParentCtrl: TWinControl; ACaption: string); begin if ParentCtrl is TRzTabSheet then TRzTabSheet(ParentCtrl).Caption := ACaption; end;
var i: Integer; TabCtrl: TRzTabSheet; Form: TForm; begin if dockCtrl = nil then begin Form := FormClass.Create(nil); Form.Position := poMainFormCenter; Form.ShowModal; Form.Free; end else begin Screen.Cursor := crHourGlass; try for i := 0 to Screen.CustomFormCount - 1 do if Screen.CustomForms[i] is FormClass then begin if (not(Screen.CustomForms[i]).Visible) then (Screen.CustomForms[i]).Visible := True; (Screen.CustomForms[i]).BringToFront; (Screen.CustomForms[i]).SetFocus; TabCtrl := TRzTabSheet(Screen.CustomForms[i].Parent); ShowCaption(TabCtrl, Screen.CustomForms[i].Caption); TRzPageControl(dockCtrl).ActivePageIndex := TabCtrl.PageIndex; Exit; end; // if RzPageControl1.PageCount > 1 then // begin // ShowMessage('请关闭当前窗口!'); // exit; // end;
Form := FormClass.Create(TabCtrl); with Form do try ManualDock(TabCtrl); ShowCaption(TabCtrl, Caption); Show; Form.WindowState := wsMaximized; Form.Align := alClient; except Free; end;