社区
Delphi
帖子详情
我想在主窗体显示后,不点击其他按钮或其他操作就显示另外一个窗体,不知如何做到?
zzyyxxjc
2003-08-19 11:01:03
我想在主窗体显示后,不点击其他按钮或其他操作就显示另外一个窗体,不知如何做到?重分悬赏!
...全文
52
14
打赏
收藏
我想在主窗体显示后,不点击其他按钮或其他操作就显示另外一个窗体,不知如何做到?
我想在主窗体显示后,不点击其他按钮或其他操作就显示另外一个窗体,不知如何做到?重分悬赏!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zzyyxxjc
2003-08-23
打赏
举报
回复
可能我没说清楚,我的意思是:做一个像SplashForm窗口一样的效果,只是这个窗口一直保留到主程序结束。这个问题我已经解决了,很感谢大家的关注,来者有分啊!
ZyxIp
2003-08-22
打赏
举报
回复
我觉得 dyzg(地藏) 的方法不错,将时间设的短一点,这样比较好看,如果第二个窗体显示时要读入的数据比较多更需要这样做。
fhuibo
2003-08-22
打赏
举报
回复
OnShow 事件中写
kejian
2003-08-22
打赏
举报
回复
program Project2;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
form2.Show; //不知道是不是你想要的?
Application.Run;
end.
====================================================================
像和尚的唐僧。。。
====================================================================
大地精灵
2003-08-21
打赏
举报
回复
在OnShow里面写代码就行了,
Form2.show;
或者用Timer控件可以控制多长时间显示
to GetWindowPos(阿汪)
DELPHI中有这个写法吗?那好象是VB的吧
xtao
2003-08-21
打赏
举报
回复
我是这样的:
在Form1的OnCreate中给自己发PostMessage,比如MSGID = WM_USER + $0100
在Form1的处理MSG的消息处理中创建第二个Form
kuan
2003-08-20
打赏
举报
回复
在工程文件中:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
……
Form2.show; //你要显示的窗体
……
Application.Run;
vchoushen6
2003-08-20
打赏
举报
回复
如果是在显示FORM1之后,随即显示FORM2,应该是在FORM1的ACTIVE事件里吧。
zjj_horse
2003-08-20
打赏
举报
回复
同意GetWindowPos(阿汪)的说法。
duxin
2003-08-20
打赏
举报
回复
上面的方法 很全了 要是不是立即显示 建议用 dyzg(地藏) 的方法
GetWindowPos
2003-08-20
打赏
举报
回复
不是吧,这种问题也要做得这么复杂
Private Sub Form_Load()
form2.Show '显示第二个窗体
End Sub
dyzg
2003-08-20
打赏
举报
回复
呵呵,有个苯办法,在第一个窗体上加一个Timer,然后在第一个窗体on_show时间中激活Timer,在Timer的代码就上显示第二个窗体,最后将Timer关闭.这样的好处就是可以控制二个窗体显示的间隔
fuyifan
2003-08-19
打赏
举报
回复
在OnShow 事件中 ****(窗体).show;
不好用吗?
或者在OnCreate事件中
****.create(selft);
****.show;
samcrm
2003-08-19
打赏
举报
回复
设置为自动创建窗体
VB6.0动态加载ActiveX控件漫谈
VB6.0动态加载ActiveX控件漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程, 但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在
窗体
上。 VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功 能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语句中用 New 关键字、CreateObject 或 GetObject 从部件外面将对象引用赋予变 量。 如果对象是从属对象,则需使用高层对象的方法,在 Set 语句中指定
一个
对象引 用: Dim xlApp1 As Excel.Application Set xlApp1 = New Excel.Application 或 Dim xlApp As Object '定义存放引用对象的变量。 Set xlApp = CreateObject("excel.application") xlApp.Visible = True ---- 这些语法很容易造成误导,以为动态加载ActiveX控件也是此方法,可能有朋 友也象我一样利用CreateObject尝试了无数次,却无功而返,
不知
微软公司是出于何种 考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如 何实现动态ActiveX控件找出了一条切实可行的方法,下面以
一个
具体的实例来详细说 明。 一、ActiveX控件 ---- ActiveX 控件是 Visual Basic 工具箱的扩充部分。使用 ActiveX 控件的方 法与使用其它标准内装的控件,如 CheckBox 控件,完全一样。在程序中加入 ActiveX 控件后,它将成为开发和运行环境的一部分,并为应用程序提供新的功能。 ---- ActiveX 部件通过客户端/服务器关系与应用程序— 及与部件相互之间— 交 互作用。客户端是使用部件功能的应用程序代码或部件。服务器是部件及其关联的对象。 例如,假设应用程序使用 ActiveX 控件来提供
一个
标准的雇员
窗体
,供公司的多种 应用程序使用。提供雇员
窗体
的 ActiveX 控件就是服务器,使用这个控件的应用程序 就是服务器的客户端。 二、加载方法 ---- VB6.0中对Controls 集合进行了扩展,以前版本中Controls 集合在
窗体
上列 举出已加载的控件,这在迭代过程中是很有用的。Controls 集合标识
一个
叫做 Controls的内在
窗体
级变量。如果忽略可选的 object 所在处的整数,则关键字 Controls 必须包括在内。我们通常在窗口中使用如下代码: Text1.Text="Hello, world" 其实也可以使用如下代码达到同一目的: Controls(1).Text="Hello, world" ---- 在VB6.0中除了原来的Clear、Remove 方法外(很奇怪,为什么微软在VB5.0中 只提供这两种方法,而没有提供Add方法,因为没有Add,这两种方法也就没什么用处), 增加了Add方法,该方法就是用于动态加载控件的: Controls.Add(progid as String, Name as String); progid: ActiveX部件的ProgID,如:"VB.CheckBox"; Name:ActiveX部件加载后的名称,如: "MyCheckBox"; 若要在
窗体
上添加
一个
名为MyButton的
按钮
,可以使用: dim oControl as Object '
窗体
级变量 注意:这里声明为Object对象类型 Private Sub LoadControl() Set oControl = Controls.Add ("VB.CommandButton", "MyButton") oControl.Left = 10 oControl.Top = 10 oControl.Visible = True '使控件可见 End Sub ---- 这是VB6.0的标准语法,它在例程中也是如此演示的,不过该方法虽然现实了 控件的动态加载,
按钮
显示
在
窗体
上,可以象普通
按钮
一样按下去,但加载的控件不能 预先设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要 响应的事件封装在控件内部。就编程的观点来看该方法没什么大的用处,开发ActiveX 控件的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口, 显然利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象 与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特 别有用,它提供了一套通用的属性、方法、事件给开发人员,它的
一个
突出特点是能编 程设计控件的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生: ---- Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的 语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对 象使用RaiseEvent产生的所有事件,EventInfo数据结构映射了事件的名称、参数个数 和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先 将不同类对象的事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click 事件了: ---- Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您 就可以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了 事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus , ObjectEvent和Validate,其中ObjectEvent是通用的事件捕捉。 Private Sub LoadControl() Set oControl = Controls.Add ("VB. CommandButton", "MyButton") oControl.Visible = True End Sub Private Sub oControl_ObjectEvent(Info As EventInfo) Select Case Info.Name Case "Click" 'Click事件 '您可以添加处理Click事件代码 MsgBox "您按了MyButton!" Case Else ' 其他事件 ' Handle unknown events here. End Select End Sub ---- 当然对微软提供的标准控件能采用该方法添加,大家都不会怀疑,但自己开 发的控件也能吗?答案是肯定的,我们可以用
一个
实际的例子进行说明。 三、实例描述 ---- 假设
一个
本地网络的监控系统,需要在原理图与实物示意图间切换,原理图 包括组网结构、传输资源、监控
主
机等,而实物示意图包括路由器、设备、采集器等, 当然两种图的事件要一致,如双击某个设备图形将
显示
给设备的实时数据等,为了简化 维护,将原理图与实物示意图封装成ActiveX控件,由于每种图需要加载许多图形控 件,消耗资源较大,不能同时加载,需要将其分解为两个控件,在切换时首先卸载
一个
控件,然后加载另
一个
控件,所以要实现动态加载ActiveX控件。 ---- 原理图控件为--Theory.ocx ,对应工程为CTheory; ---- 实物图控件为---Fact.ocx ,对应工程为CFact; ---- 注意:为了简化,在设计控件时不设置许可证关键字。 ---- 实物图控件上的图形对象可以被拖动,拖动后的位置信息通过事件 ChangePosition来通知拥有该控件的
窗体
,以便下次加载能
显示
在最后位置,实物 图和原理图控件都有双击事件完成的工作相同,其他事件此处忽略。 ---- 四、具体示例 ---- 1、准备工作 ---- 对控件Theory.ocx 、Fact.ocx 进行注册(利用Regsvr32.exe注册); ---- 建立
窗体
frmTest.frm ,在
窗体
上放置
按钮
cmdLoadOcx—“原理图” ---- 2、声明
窗体
级变量与加载函数LoadControl Dim WithEvents oControl As VBControlExtender '地图仿真控件对象 Dim mblnTheory As Boolean '是否
显示
原理图 Private Function LoadControl(intType As Integer) If Not oControl Is Nothing Then '首先判断对象是否存在,若存在则卸载 Controls.Remove("MapView") '卸载控件,此
操作
非常重要 End If If intType = 0 Then Set oControl = Controls.Add ("CTheory. Theory", "MapView") Else Set oControl = Controls.Add ("CFact.Fact", "MapView") End If oControl.Height = 3500 oControl.Width = 6500 oControl.Top = 100 oControl.Visible = True End Function Private Sub Form_Load() mblnTheory = True End Sub ---- 3、为
按钮
cmdLoadOcx编写代码 Private Sub cmdLoadOCX_Click() If mblnTheory Then Call LoadControl(0) mblnTheory = False cmdLoadOCX.Caption = "实物图" Else Call LoadControl(1) mblnTheory = True cmdLoadOCX.Caption = "原理图" End If End Sub ---- 4、为事件ChangePosition编写代码 Private Sub oControl_ObjectEvent (Info As EventInfo) Select Case Info.Name Case "ChangePosition" MsgBox CStr(Info.EventParamters.Item( 1).Value) + ":" + _ CStr(Info.EventParamters.Item(2).Value) Case "DbClick" '双击处理代码 Case Else ' End Select End Sub ---- 注意: EventInfo的参数EventParamters集合中是以1开始的,一般来说,微 软新的集合一般是以1开始的,而旧的是以0开始的,如RdoErrors.Item(0)。 ---- 5、关闭窗口前卸载控件 Private Sub Form_Unload(Cancel As Integer) Controls.Remove("MapView") Set oControl = Nothing End Sub ---- 6、特别注意 ---- 通过Controls.Add方法添加的ActiveX控件一定不能在该工程中有该控件的任 何引用,否则系统将出错。 四、小结 ---- 通过使用动态加载ActiveX控件使用庞大的应用程序变得很小,将不同的 ActiveX控件进行各种组合,使应用程序更加灵活多变,如您的应用系统要处理三十种门禁, 而某个具体的用户可能只有一种或两种门禁,根本没必要首先将所有门禁包含到应用 中,可将各个门禁独立封装,只安装注册需要的组件,就象Windows的自定义安装一样。 微软的未来技术基础是分布式的组件技术(DCOM),将会把代码的重用发挥得淋漓尽致。 您不妨试一试动态加载,也许会产生令您惊喜的效果! ---- 本代码在Win98、VB6.0(英文版)上编译、运行。
Access
主
窗体
刷新其子
窗体
的代码
一个
主
窗体
A,A中有
一个
子
窗体
b,b已指定数据源(本地数据表t01) 需求描述: A
主
窗体
的打开时,b的数据源本地表t01无记录,在A中设置几个筛选条件,通过查询
按钮
从MSSQL数据库中读取到了本地表t01中,此时需要b子
窗体
同步刷新
显示
出。 代码实现: Forms![A
主
窗体
名称]![b子
窗体
名称].requery (此问题代码简单,但纠结我好久,最终...
Python Tkinter
窗体
讲解
Python作为自立门户的语言,除了学习它的基础编程之外,它还提供了
窗体
的学习,这样相对来说,它就完整了,如果大家学习过C#
窗体
实现或者Java,MFC等等吧,再学习它就会简单的多。当然大家也不用担心,即使没学过,在学习了该教程提供的Python的Tkinter
窗体
后,也会让你快速的掌握。这样我们就可以使用Python做一些小游戏,或者做一些小系统。
pythonqt设置了
按钮
但是不
显示
怎么办,PyQt:
按钮
在。运行时UI不
显示
已解决我改了:self.ui = base_class()进入:self.ui = form_class()self.ui.setupUi(self)现在它起作用了!在我正在尝试让一些代码工作,这样我就可以动态地使用.ui文件。这样,当我运行python代码时,立即使用Qt Designer进行更新。在在修改和使用代码片段之后,我得到了以下代码。但
不知
何故.ui中的
按钮
没有
显示
。有什么
主
意吗?在i...
怎样在
窗体
的关闭
按钮
中关闭系统
在完善机房收费系统时,突然发现了
一个
小功能还未实现,就是
点击
主
窗体
的关闭
按钮
时给出提示: 这个问题虽小,但却
不知
从何入手,
不知
用到
窗体
的什么事件,然后在百度中各
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章