碰到一个无模式窗体的问题

gogogo 2013-08-09 10:31:26
先说一下要求,一个应用程序运行期间创建一个主窗体,然后创建一个无模式窗体,无模式窗体在windows任务栏占有一个独立的标签,要求主窗体和无模式窗体可以独立接受用户输入。
要求说完了,说说测试过程。
创建一个应用程序,建立一个窗体form1,再建立一个窗体form2,然后form1上加入2个button,1个button通过show方法启动form2,form2使用一些方法可以在任务栏显示标签,在另外一个button里showmessage一个模式消息框。
测试过程很简单,但是有个问题很麻烦,就是不显示消息框时,form1和form2都能接收用户点击消息,都能操作,但是显示了消息框以后,按道理消息框是模式对话框,form1不能接收用户输入,form2应该还能接收用户输入,但是实际情况是form1、form2都不能接收用户输入了,有没有什么办法让form2还能接收用户输入。

另在vc和c#上都测试过,MFC的窗口就没问题,但是C#效果和delphi一样。
...全文
238 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2013-08-18
  • 打赏
  • 举报
回复
建议生成两个执行程序,由两相互调用打开。两个都是Application,都在任务栏有图标,都可以激活录入数据。完全符合你的要求。
reverzeng 2013-08-17
  • 打赏
  • 举报
回复
看高手之间的谈话...
gogogo 2013-08-09
  • 打赏
  • 举报
回复
当然程序中模式对话框只能使用继承自重载过ShowModal方法的窗体类,其他的都不能用,当然包括ShowMessage这种函数
gogogo 2013-08-09
  • 打赏
  • 举报
回复
ShowModal方法会把本线程内所有非最新弹出的窗口都禁掉,这样随便其他什么正常的方法都不行,只能重载ShowModal方法,把不想让他禁掉的窗口恢复回来就可以了。 不过这样要求程序中所有的模式对话框都要继承自这个重载过ShowModal方法的类才行
feiba7288 2013-08-09
  • 打赏
  • 举报
回复
应该是不行的,这是Delphi模式窗口的一个机制,ShowMessage弹出的也是一个模式窗口,Application弹出模式窗口后,其后面的所有窗口都无法获得焦点。
gogogo 2013-08-09
  • 打赏
  • 举报
回复
找到解决方法了,不过局限性还是比较大,重载ShowDoModal方法
gogogo 2013-08-09
  • 打赏
  • 举报
回复
引用 9 楼 truexf 的回复:
Form2 := TForm2.Create(self); 改成 Form2 := TForm2.Create(Application);
试过,没用
「已注销」 2013-08-09
  • 打赏
  • 举报
回复
Form2 := TForm2.Create(self); 改成 Form2 := TForm2.Create(Application);
浩南_哥 2013-08-09
  • 打赏
  • 举报
回复
窗口创建无非就是CreateWindow和CreateWindowEx,你可以跟进去看看TForm.Create调用的这两个函数时候的参数
gogogo 2013-08-09
  • 打赏
  • 举报
回复
自己感觉还是DoModal实现不一样,vcl把本程序的所有消息都接收了,MFC仅仅接收了父对象窗口范围内的消息,本程序其他窗口的消息还是正常派发了,C#和delphi是一个效果,估计同一个设计师把vcl机制带过去了。
gogogo 2013-08-09
  • 打赏
  • 举报
回复
这个父子关系无所谓的,我试过非父子关系,把owner\parent都改为其他对象或者窗口,但是效果都一样 MFC里无模式窗口就试了一种,没有父对象的窗口类,效果很自然就行
浩南_哥 2013-08-09
  • 打赏
  • 举报
回复
Form2 与 Form1 是父子关系 你的VC代码怎么写的,应该不是父子关系吧
gogogo 2013-08-09
  • 打赏
  • 举报
回复
引用 3 楼 feiba7288 的回复:
好像没办法,Form1和Form2是共用的一个Application。
但是我很奇怪MFC的类似例子就是没有这个问题的 难道vcl的ShowModal和MFC的Domodal实现不一样,要重载自己写ShowModal?
feiba7288 2013-08-09
  • 打赏
  • 举报
回复
好像没办法,Form1和Form2是共用的一个Application。
gogogo 2013-08-09
  • 打赏
  • 举报
回复
unit1:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2 := TForm2.Create(self);
  Form2.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage('sdfs');
end;
unit2就是基本窗口,没有额外代码
浩南_哥 2013-08-09
  • 打赏
  • 举报
回复
有具体的代码示例吗?
彩色数独是一款集数独游戏、组合数独、求解数独于一身的益智游戏,老少皆宜。 一个数独是由一个9×9的方阵组成,该方阵中又有9个小方阵,玩家需要在其中填入1~9中的数字,使得每一行、每一列、每个小方阵中含有数字1~9,且没有重复。 组合数独的规则与普通数独基本相同,只不过处于边界上的方格要同时满足相邻方阵的要求。 彩色数独是本游戏的独到之处,借助不同的颜色,提示玩家该格数字求解的难易,利用人眼对颜色的敏感来帮助玩家确定要从哪里下手。颜色越深代表求出该格的数字越容易,颜色越浅代表求出该格的数字越困难。 如果某个格子的颜色变成黑色,那么说明该格中的待求数字只有一种可能,玩家可以安然求出而不会犯错;如果某个格子的颜色变成白色,那么说明该格已经不可能找到答案,必须更改之前作出的判断。 彩色数独为了方便初学者入门,在任务模式的前50关中,数独可能存在多种解,以降低难度。在任务模式的51关及之后关卡,所有数独均为唯一解。玩家可根据自己的实际情况进行游戏。 求解数独也是本程序的一大特色。利用本程序,玩家可以轻松求解一阶、二阶、三阶数独,最快只需几十毫秒(依据CPU性能而定)。如果玩家平时碰到过一些比较难解的数独,现在可以顺利求解。 游戏利用数独的特性,求解数独时可以依次求解出每一种解,方便玩家找到数独的全部解。 如果您有诸如640001000003000051000080700900010080080090040010020005001030000520000300000400017之类的数字需要利用本程序求解时,可以在本程序的"solve"文件夹下建立名为“sk1.txt”,“sk2.txt”,“sk3.txt”……的文件,利用本程序求解时可从“游戏”菜单中选择载入该文件,然后即可方便求解。 游戏的背景可以依据玩家喜好自由更换。玩家只要将图片拖拽到设置界面的背景一栏的文本框中即可。同时,游戏支持自定义LOGO图标。玩家只要在游戏所在文件夹中放置logo.jpg或者logo.bmp或者logo.ico文件即可被程序识别并在游戏中显示。 单个数独起始数量是指,在随机模式下,每个数独开始时显示的数字的数量。玩家可根据自己的水平设置11到75中间的任何一个数字。 游戏带有老板键功能,默认开启,键位ESC。玩家只要在游戏主界面按下ESC键,游戏便会最小化到任务栏右下角的通知栏中。默认图标为游戏所在目录下的HIDE.ico,默认提示文本为System Tray,提示文本玩家可以在选项界面的中更改。 本程序运行在Windows Vista、Windows 7中时,由于窗体边界的大小定义与Windows XP不同,因此可能会出现错位现象。如果出现错位现象,玩家可按下Ctrl + Alt + 7的组合键进行修正。修正将于下次运行游戏时生效。
浅析VB程序数据库学生管理系统 摘要 随着计算机技术的飞速发展,应用范围也越来越广泛,在教学工作中,运用VB程序数据 库学生管理系统可以更方便的对教学信息进行管理,提高工作效率。此外,使用管理系 统软件还具有检索快递,容易查找、存储加大,寿命加长,成本降低等特点,有助于实 现学校的企业化管理,与世界先进教学模式顺利接轨。 关键词 VB程序;数据库;学生管理系统 随着计算机技术的飞速发展,应用范围也越来越广泛,在教学工作中,运用VB程序数 据库学生管理系统可以更方便的对教学信息进行管理,提高工作效率。此外,使用管理 系统软件还具有检索快递,容易查找、存储加大,寿命加长,成本降低等特点,有助于 实现学校的企业化管理,与世界先进教学模式顺利接轨。 1用计算机管理学生与教学系统的意义 1)可以存储历届的学生对老师的测评成绩的汇总情况,安全、高效; 2)可以迅速查到所需信息:例如,我们可以通过学生基本信息表查询某学生的班级 、学号等有关基本信息,还有家庭成员的有关信息等等,当然同理可以从教师基本信息 表中查询教师的相关信息。 这对我们学校节约办公经费,提高办事效率,方便学生家长及学校合作伙伴,给主管 部门、用人单位等相关单位都提供了极大的方便,有着深刻的意义。 随着网络技术的日新月异,我国信息产业有了巨大的发展。根据2002年12月份中国电 信的调查报告显示,我国的上网人数已达到9 857万,而且主要集中在18~40岁的年龄段。互联网的大面积普及,使得学校的教育信息 网络化成为必要,它是时代发展的必然产物。本系统为我校将来的网络化作了先期工作 ,可以减少后期数据库的建立过程中的大量工作。 我们在查阅大量书籍的基础上根据具体情况,使用原型法(Rapid Prototyping)仅仅以少量的代价就构建了一个可执行的软件系统模型,使用户可以根据 系统显示迅速确定客户需求,然后运用循环进化的方式,连续的精化系统模型,将系统 需具备的性质逐渐增加上去,直到所有的性质全部满足。 2 开发学生与教学管理系统的技术实现 2.1编程环境的选择 我们目前使用的微软公司Visual Basic 6.0是Windows应用程序,是目前使用最广泛的开发工具,Visual Basic提供了大量的控件,这些控件具备设计界面和实现各种功能的能力,不仅仅减少了 编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和 可靠性。因此,实现本系统VB是一个比较好的选择方式。 2.2关系型数据库的实现 我们选择Access数据库来作为关系数据库管理系统,Access数据库软件是WORD文字处 理系统的七大组件之一,它为广大的用户提供了一个数据库管理的工具包和应用程序的 开发环境。数据库能汇集各种信息以供查询、存储和检索。 Access的优点在于它能够使用数据表示图或自定义窗体收集信息。数据表示图提供了 一种类似于Excel的电子表格,可以使数据库一目了然。和其他Office系列产品一样,A ccess的最大特点是易用,用户可以在很短的时间内掌握Access的开发,并利用它的向导 功能方便快速简便地设计出一个数据库系统。而且可以利用导入、导出和连接数据库的 功能、方便地在Access数据和Word、Excel、文本文件和其他OLE的数据文件之间互相转 换,实现数据共享,从而大大提高工作效率。另外,Access允许创建自定义报表用于打 印或输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数 据库文件置于网络文件服务器,与其他网络用户共享数据库。Access还可以利用宏和Vi sual Basic for Application编写出具有强大功能的数据库应用程序,创建超级链接和Web页实现网上访 问。 在现实中,我们往往碰到如何对大量数据进行分类,组织、编码、存储、检索和维护 的问题。这时候,正是Access大显身手的大好时机。简单地说,Access软件的用途是设 计、开发和管理数据库。具体来说有以下几种功能: 对于跟踪的每一类信息创建一个表存储数据,还可以将多个表中的数据组织到一起, 定义表之间的关系。 查找和检索仅满足指定条件来自一个或多个表中的数据,查询也可以一次更新或删除 多个记录,并对数据执行预定义或自定义计算。 创建窗体更方便、直接和安全地查看、输入和更改数据,还可以利用窗体设计出友好 的界面。 创建报表以一定的方式分析数据或显示数据。而且,我们还可以将报表直接输出到 Word或Excel中进一步分析,或者作为电子邮件发送出去。 若要在Internet或Intranet上实现交互方式的报表、输入数据或分析数据,可以使 用数据访问页(Web页)。 可以利用宏和Visual Basic for Application语言编写出

5,378

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧