PageControl1上放窗体(50)

  • 主题发起人 主题发起人 jialiguo
  • 开始时间 开始时间
J

jialiguo

Unregistered / Unconfirmed
GUEST, unregistred user!
var ts: TTabSheet;begin ts := TTabSheet.Create(pc); ts.PageControl := pc; ts.Caption := strCap; ts.Hint := vfrm.ClassName; vFrm.WindowState := wsMaximized; vFrm.BorderStyle := bsNone; vFrm.ParentWindow := ts.Handle; vFrm.Align := alClient; // windows.SetParent(Vfrm.Handle, ts.Handle); vfrm.Font.Name := '宋体'; vfrm.Font.Size := 10; // ts.InsertControl(vFrm); 这句要是写在这里的话,vfrm有的控件的Visible是 false但仍然能看见,请问是什么原因 vfrm.Show; ts.InsertControl(vFrm);
 
vFrm.ParentWindow := ts.Handle;ts.InsertControl(vFrm); 为啥不直接写呢:vFrm.Parent := ts;
 
如果没有 ts.InsertControl(vFrm); 你就会发现 vfrm有的控件的Visible是 false但仍然能看见
 
我一直用pagecontrol+ DLL+Form没有发现什么问题呀
 
用pagecontrol+frame
 
把vfrm上的控件的parent 都设置为 TTabSheet ,看看行不行。建议,[:D]
 
to 鳄鱼先生:请教:pagecontrol+ DLL+Form ,如果做成MDI的模式,form窗体上面的控件不可见了,何解?
 
有一个很大的疑问, 为啥放Tform, 而不是Tframe? 有特别原因吗?
 
function GetTabSheet(Name: string): TTabSheet;var i: Integer; s: string;begin Result := nil; for i := 0 to pgc.PageCount - 1 do begin s := pgc.Pages.Name; s := Copy(s, 3, Length(s)); if s=Name then begin Result := pgc.Pages; Break; end; end;end;var ts: TTabSheet; frs: TPersistentClass; frm: TForm;begin ts := GetTabSheet(Menu.Module); frs := GetClass(Menu.ModuleClass); if frs=nil then begin MsgBox(Format(GetResText(fCapCode, 'Error1'), [Menu.Caption])); Exit; end; if ts=nil then begin frm := TForm(TComponentClass(frs).Create(Application)); frm.Name := Menu.Module; frm.Caption := Menu.Caption; if frm.Tag=-1 then begin frm.Free; Exit; end; if Menu.Mode then begin frm.ShowModal; Exit; end else begin ts := TTabSheet.Create(pgc); ts.Caption := frm.Caption; ts.Name := 'ts' + frm.Name; ts.PageControl := pgc; frm.BorderStyle := bsNone; frm.Parent := ts; frm.Visible := True; ts.Controls[0].Align := alClient; end; end; pgc.ActivePage := ts; pgcChange(pgc);
 
后退
顶部