捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
关于主窗体与子窗体之间的调用一点技巧
关键字:主窗体 子窗体 MID CreateForm
来 自:原创
平 台:Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2006/11/6
发布者:tp26021340 发布时间:2006/11/6
编辑器:DELPHI7 语  种:简体中文
分 类:窗体 下载浏览:0/19832
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
这个是在书看到的一个例子,但是有一些不全,所以本人就在上加以修改.
可以用来判断子窗体是否创建,还是最小化,还是关闭,让我们更好的了在多个窗体之间交换数据.

function createform(cform:tform):boolean; //调用判断是否创建窗件函数
var
  NO:integer;
  formexist:boolean;
begin
  formexist:=false;
  if cform=NIl then   
  begin
    createform:=false;
    exit;
  end;
  for NO:=0 to screen.FormCount -1 do
  begin
    if screen.Forms[NO].ClassType =cform.ClassType then
       formexist:=true;
  end;
  if formexist=false then
  begin
    createform:=false;
    exit;
  end;
  if cform.WindowState =wsminimized then
    showwindow(cform.Handle ,sw_shownormal)
  else
    showwindow(cform.Handle ,sw_showNA);
  if not cform.Visible then
    cform.Visible :=true;
  cform.BringToFront ;
  cform.SetFocus ;
  createform:=true;
end;

在主窗体里用以下代码调用:

if createform(f_dept)=false then //判断是否创建,有就显示
  f_dept:=tf_dept.Create(application); //没有则创建
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
Dll 封装导出类演示
notblack 2007/5/19 下+2946/浏+19513 评+17
关于主窗体与子窗体之间的调用一点技巧
tp26021340 2006/11/6 下+0/浏+19833 评+8
无闪烁 MDI 子窗口
vvyang 2006/4/27 下+3487/浏+18141 评+14
调用DLL中窗体相关演示源码
msgsnd 2004/4/13 下+4457/浏+21196 评+12
MDI程序相关演示 (更新版)
hebiziyu 2004/3/17 下+3784/浏+19155 评+11
MDI程序调用dll中的mdiChildForm例子
hebiziyu 2004/1/31 下+2870/浏+18038 评+9
相关评论
共有评论8条 当前显示最后6条评论
shugeng 2006/11/18 10:04:21
兄弟不错,我正愁这个事情怎么解决,以前的思路和你这个一样,但总出问题谢谢了!
sutao 2006/11/18 13:40:27
初级
xinhua 2006/11/23 16:36:52
为什么我通过主菜单来打开要点两次才能打开呀!
stuwe 2006/12/27 10:20:26
确属初级
iamdream 2007/1/10 21:16:03
看看偶自己用的函数:
function FindFormFromScreen(const sFormName: String): TCustomForm;
var          //通过名称查找窗体
  I: Integer;
begin
  Result := nil;
  for I := 0 to Screen.CustomFormCount-1 do
    if Screen.CustomForms[I].Name = sFormName then begin
      Result := Screen.CustomForms[I];
      Break;
    end;
end;

function CreateForm(const sFormName: String; AFormClass: TCustomFormClass;
    var AForm: TCustomForm; bShow: Boolean): Boolean;
begin          //创建窗体 MDIChild 不需要 AForm.Show, 即 bShow 应 = False.
  Result := False;
  AForm  := FindFormFromScreen(sFormName);
  if AForm = nil then begin
    AForm  := AFormClass.Create(Application);
    Result := True;
  end;
  if bShow and Assigned(AForm) then  AForm.Show;
end;

调用:   CreateForm('JobListForm', TJobListForm, TCustomForm(JobListForm));
zh2000 2007/6/9 15:54:29
为什么我通过主菜单来打开要点两次才能打开呀!

将...上面代码 修改为以下试试...我试了可以了,不知道长期有没有问题...:)

 if createform(Form1)=false then //判断是否创建,有就显示
  begin
  Form1:=tForm1.Create(application); //没有则创建
  Form1.Show ;
  end;
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表