| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1450 人关注过本帖
标题:(原创分享)自定制类似 Msgbox 消息框例子,代码精简。
只看楼主 加入收藏
hmj0745
Rank: 2
等 级:论坛游民
帖 子:53
专家分:83
注 册:2021-11-6
结帖率:100%
收藏
 问题点数:0 回复次数:3 
(原创分享)自定制类似 Msgbox 消息框例子,代码精简。
方法:用一个窗体做自定义的提示框,通过自定义函数调用。
思路:提示窗显示后,让代码进入循环,当窗体点击后产生变量后跳出,由此得到交互和程序挂起的效果。
效果:能得到自己像要的提示窗效果,能从自己指定位置显示,两不是永远在屏幕中间(当你程序不处于最大化显示时,可能处于桌面其它位置时,提示却显示在屏中间这一点很难忍受)
这两天在网上找资料找烦了,基本上是垃圾代码!现在解决了就分享给我一样的初学者参考吧,大神略过。。。。。。。
*******上图*******************
图片附件: 游客没有浏览图片的权限,请 登录注册

******************************
图片附件: 游客没有浏览图片的权限,请 登录注册

*******上附件****************
自定制消息提示框思路完整示例.rar (51.11 KB)

*******模块中代码******************
程序代码:
Public Msgmod, Str As String
Public MsgYN As Boolean, IsExit As Boolean
Public Frmleft As Long, Frmtop As Long
Sub Main()
Form1.Show 0
End Sub
'01函数名: Msgfrm
'函数功能: 自定义消息框,文字内容,输入模式,和边距
'*****************************************************************************************
Function Msgfrm(Str As String, Md As Byte, FrmLe As Long, FrmTo As Long)
Msgmod = Md '//窗体模式
Frmleft = FrmLe '//窗体出现的左边距
Frmtop = FrmTo '//窗体出现的顶边距
Str = Str '//窗体显示的提示文字
Rem 以上把传入的参赋值给窗体*****************************************
Msgfm.Show 0
IsExit = False '全局变量
Do While DoEvents '// 设置一个循环直到交出控制权
If IsExit = True Then Exit Do '// 当全局变量为 True 时跳出循环
Loop
Msgfrm = MsgYN
End Function

*******提示窗体中代码*******************************************************
程序代码:
Option Explicit
Private Sub Form_Deactivate() '//不在当前时主动卸载自己,避免多窗体冲突
IsExit = True
Unload Me
End Sub

Private Sub Form_Load()
Me.Move Frmleft, Frmtop ' 移动到指定位
'*****下面是窗体外观的一些调整设计
Shape1.BackColor = RGB(0, 178, 250)
Shape2.BorderColor = RGB(0, 178, 250)
Shape1.Move 0, 0, 4020, 400
Shape2.Move 0, 390, 4000, 2150
Label2.Move 0, 150, 4000, 200
'**********************************
Label1.Move 900, 900, 2900, 1200
Pic1.Move 100, 600, 600, 550
Pic2.Move 100, 600, 600, 550
'两种模式的切换,显示不同的按钮和图标*****************************
If Msgmod = 1 Then
Pic1.Visible = True
Me.确认.Visible = True
Label2.Caption = "******系统警告!******"
Else
Pic2.Visible = True
Me.是.Visible = True
Me.否.Visible = True
Label2.Caption = "******系统提示!******"
End If
Label1 = Str
End Sub
Private Sub 确认_Click()
MsgYN = True
IsExit = True
Unload Me
End Sub
Private Sub 是_Click()
IsExit = True
MsgYN = True
Unload Me
End Sub
Private Sub 否_Click()
IsExit = True
MsgYN = False
Unload Me
End Sub

搜索更多相关主题的帖子: End 代码 提示 Sub 窗体 
2021-12-10 15:21
hmj0745
Rank: 2
等 级:论坛游民
帖 子:53
专家分:83
注 册:2021-11-6
收藏
得分:0 
非常感谢 apull 版主的指导。
自定义对话框不需要这么麻烦。一句 show 1 模态化窗体就解决了。 (不过在MDI 窗体中不能用模态化窗体)

贴子里的循环和跳出思路,在特定的场景下还具备一定的参考作用。 用在定义对话框完全没有必要了
Do While DoEvents '// 设置一个循环直到交出控制权
If IsExit = True Then Exit Do '// 当全局变量为 True 时跳出循环
Loop



[此贴子已经被作者于2021-12-10 19:45编辑过]


不去做永远没有结果!
2021-12-10 16:36
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
MDI 窗体中不能用模态化窗体,这句话没看懂。

mdi 窗体中照样可以使用模态化窗体,要求窗体不能为 子窗体而以,也就是要求 MDIChild 属性为 false
你自定义窗体肯定不会设置 MDIChild 属性。


授人于鱼,不如授人于渔
早已停用QQ了
2021-12-10 22:20
hmj0745
Rank: 2
等 级:论坛游民
帖 子:53
专家分:83
注 册:2021-11-6
收藏
得分:0 
回复 3楼 风吹过b
的确我指的是不能把 MDIChild 设为True   
我是想将其局限在程序窗体内,以方便参考其它控件来控制其显示位置。
使用模态窗体做消息框,我现在是需要找 MDI窗体中 子窗体中的控件,相对于Mid窗体的Left 和 Top坐标。
这样便于控制其在程序中的显示位置控制

不去做永远没有结果!
2021-12-11 01:09
快速回复:(原创分享)自定制类似 Msgbox 消息框例子,代码精简。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.265783 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved