DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sunlumin2024
今日帖子: 25
在线用户: 19
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 hebiziyu (hebiziyu) ★☆☆☆☆ -
盒子活跃会员
2004/4/21 0:01:30
标题:
关于代码的封装,高手请进 浏览:1108
加入我的收藏
楼主: 我过去在菜单项的单击事件中使用这样的代码:
procedure TForm1.childform1Click(Sender: TObject);
var
  fm:tbase;
begin
 fm:=tbase(Application.FindComponent('frmoney'));
 if not(Assigned(fm)) then
   begin
     fm:=tbase.create(Application);
     fm.name:='frmoney';
   end;
 fm.show;
 fm.WindowState:=wsnormal;
end;
这样当使用的窗体比较多的时候,类似的代码将有很多重复部分的.现在我想把上面的代码封装一下,这样就需要在封装的过程中传递两个参数:一个是子窗体类,一个是子窗体的caption,我用下面的代码做不成功,查了DFW论坛也找不到合适的答案.只好求救于大侠了.

type
 TMyClass=Class of Tform;

procedure TForm1.Exefrm(MyClass:tform;FrmName:string);
var
  fm:tMyClass;
begin
 fm:=tMyClass(Application.FindComponent(FrmName));
 if not(Assigned(fm)) then
   begin
     fm:=MyClass.create(Application);
     fm.name:=FrmName;
   end;
 fm.show;
 fm.WindowState:=wsnormal;
end;
----------------------------------------------
-
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2004/4/21 0:10:26
1楼: procedure Tfrm_main.OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent; iTag: Integer);
var
  i: integer;
  Child:TForm;
begin
  for i := 0 to Screen.FormCount -1 do
  begin
    if Screen.Forms[i].ClassType=FormClass then
    begin
      Child:=Screen.Forms[i];
      Child.Tag:=iTag;
      if Child.WindowState=wsMinimized then
         ShowWindow(Child.handle,SW_SHOWNORMAL)
      else
         ShowWindow(Child.handle,SW_SHOWNA);
      if (not Child.Visible) then Child.Visible:=True;
      Child.BringToFront;
      Child.Setfocus;
      TForm(fm):=Child;
      Exit;
    end;
  end;
  Child:=TForm(FormClass.NewInstance);
  Child.Tag:=iTag;
  TForm(fm):=Child;
  Child.Create(AOwner);
end;

procedure Tfrm_main.TreeView1DblClick(Sender: TObject);
begin
  Case TreeView1.Selected.Index of
    0: OpenForm(Tfrm_db1,frm_db1,self,0);
    1: OpenForm(Tfrm_db2,frm_db2,self,0);
    2: OpenForm(Tfrm_db3,frm_db3,self,0);
    3: begin
         if admin_rights[1]<>0 then
            OpenForm(Tfrm_manager,frm_manager,self,0) else
            MessageBox(handle,'没有管理权限','信息',0);
       end;
  end;
end;
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 hebiziyu (hebiziyu) ★☆☆☆☆ -
盒子活跃会员
2004/4/21 0:27:40
2楼: 多谢zizi,我用你的代码已经可以实现.
不过有些地方还不是很明白,继续学习中.有问题我会继续在这里请教的.

----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行82.03125毫秒 RSS