小弟初学VB ,请高手帮忙解决两个问题,谢谢!

likeacting 2005-01-15 02:04:50
1. vb子窗体右上角的关闭(叉子)按钮能否屏蔽? 怎么实现?
2. 我的菜单按钮里有一删除按钮, 想针对两个不同的查询窗体进行操作 , 例如,当窗体一打开
时,这个删除按钮可以删除窗体一里查询的一条记录,同样,窗体二打开时,就可以删除窗体二
里查询的一条记录.
3.我用Data Environment 和 Data Report 做了一个报表 只能打印所有的数据,能否根据SQL 查
询出的记录打印报表 例如:查询到一条满足条件的记录,就打印这条记录的报表.
请高手指点, 谢谢!!! 见笑了

...全文
211 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ask999 2005-01-15
  • 打赏
  • 举报
回复
2. 我的菜单按钮里有一删除按钮, 想针对两个不同的查询窗体进行操作 , 例如,当窗体一打开
时,这个删除按钮可以删除窗体一里查询的一条记录,同样,窗体二打开时,就可以删除窗体二
里查询的一条记录.
--------------------------------------------------------------------------------------
这个功能可以实现,方法可能有很多种。我说说我的想法:设置全局变量DeleteFlag,在窗体激活时如果是Form1则DeleteFlag="Form1",Form2则DeleteFlag="Form2",按钮再根据DeleteFlag的值来确定是打开的那个窗口,再来确定删除那个表的记录。
ask999 2005-01-15
  • 打赏
  • 举报
回复
3.我用Data Environment 和 Data Report 做了一个报表 只能打印所有的数据,能否根据SQL 查
询出的记录打印报表 例如:查询到一条满足条件的记录,就打印这条记录的报表.
---------------------------------------------------------------------------------------
可以使用后期数据绑定:
Private Sub Command1_Click()
Dim strReport As String
strReport = "SELECT * FROM 申请表 " '可以根据SQL语句动态获得数据集RSshenqing
OpenBase.Open_RSshenqing strReport
Set RPshenqing.DataSource = RSshenqing
RPshenqing.Sections("Section1").Controls("Text1").DataField = RSshenqing.Fields.Item(1).Name
RPshenqing.Sections("Section4").Controls("Label2").Caption = RSshenqing.RecordCount
RPshenqing.Show
End Sub

xjdcxm 2005-01-15
  • 打赏
  • 举报
回复
属性里可以设的,窗体风格.
好吃的肥牛 2005-01-15
  • 打赏
  • 举报
回复
[使窗体右上角的X按钮失效]

窗体右上角的X按钮通常用来关闭一个程序,这个小X按钮实际上是和系统菜单的“关闭”菜单项关联在一起的,什么?不知道什么是系统菜单,系统菜单是指我们点击窗体左上角的小图标时所弹出的菜单,其中好象有“恢复”、“移动”、“最大化”、“最小化”、“关闭”这么几个按钮。这个菜单用普通的方法是不能编辑和改变的,但是我们可以通过API函数GetSystemMenu来得到它的句柄,然后通过菜单相关的API函数就能改变它了,下面一起看看怎么做吧。

  为了学习方便,下面先给出源码,并且已经作了详细的中文注释:

-------------------------------------------
使窗体右上角的X按钮失效
-------------------------------------------
程序说明:
本例利用API函数GetSystemMenu得到系统菜单的句柄
X按钮是系统菜单的一菜单项,然后用RemoveMenu函数
删去这一菜单项,也就是使X按钮失效了。
-------------------------------------------
【VB声明】

Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long


【说明】
取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单

【返回值】
Long,如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会返回零(简单的恢复原始的系统菜单)

【备注】
在vb里使用:系统菜单会向窗口发送一条WM_SYSCOMMAND消息,而不是WM_COMMAND消息

【参数表】
hwnd ----------- Long,窗口的句柄

bRevert -------- Long,如设为TRUE,表示接收原始的系统菜单

Private Declare Function GetSystemMenu Lib "user32" ( _
ByVal hwnd As Integer, _
ByVal bRevert As Integer _
) As Integer

【VB声明】

Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
【说明】
删除指定的菜单条目。如删除的条目属于一个弹出式菜单,那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄,再在以后将其删除

【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError

【备注】
强烈建议大家使用vb菜单的visible属性从菜单中删除条目,而不要用这个函数,否则会造成指定菜单中其他菜单条目的visible属性对错误的菜单条目产生影响

【参数表】
hMenu ---------- Long,菜单的句柄

nPosition ------ Long,欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)

wFlags --------- Long,常数MF_BYCOMMAND或MF_BYPOSITION,取决于nPosition参数



Private Declare Function RemoveMenu Lib "user32" ( _
ByVal hMenu As Integer, _
ByVal nPosition As Integer, _
ByVal wFlags As Integer _
) As Integer

Private Sub Command1_Click()
Unload Me
End Sub

Private Sub Form_Load()
Dim R As Integer
MyMenu = GetSystemMenu(Me.hwnd, 0)
RemoveMenu MyMenu, &HF060, R
End Sub


  程序中用到了两个API函数GetSystemMenu、RemoveMenu,其中GetSystemMenu函数用来得到系统菜单的句柄,RemoveMenu用来删除指定的菜单条目,我们先来看看这个函数的声明和参数:



   Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long

   Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long

其中各GetSystemMenu参数的意义如下表:

参数 意义
hwnd Long 系统菜单所在窗口的句柄
bRevert Long 如设为TRUE,表示恢复原始的系统菜单
返回值 Long 如执行成功,返回系统菜单的句柄;零意味着出错。如bRevert设为TRUE,也会返回零(简单的恢复原始的系统菜单)

  而RemoveMenu参数的意义如下表:

参数 意义
hMenu Long 菜单的句柄
nPosition Long 欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND,这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION,这个参数就代表菜单条目在菜单中的位置(第一个条目的位置为零)
wFlags Long 常数MF_BYCOMMAND=&H0&或MF_BYPOSITION=&H400&,取决于nPosition参数
返回值 Long,非零表示成功,零表示失败

  然后就可以在程序中使用这两个函数了,我们在窗体的Form_Load()过程中加入如下代码:

   MyMenu = GetSystemMenu(Me.hwnd,0)    得到系统菜单的句柄,Me.hwnd表示当前窗体的句柄

   RemoveMenu MyMenu, &HF060, MF_BYCOMMAND 移去“关闭”菜单项,&HF060“关闭”菜单项的命令ID

  接着我们运行程序,看看窗体右上角的X按钮是不是已经不可点击了,系统菜单中的“关闭”项也消失了,很有趣,不过一定记着为程序留一个“退出”按钮哦!
kmzs 2005-01-15
  • 打赏
  • 举报
回复
1. vb子窗体右上角的关闭(叉子)按钮能否屏蔽? 怎么实现?
2000/XP困难些
sworddx 2005-01-15
  • 打赏
  • 举报
回复
还有,你说了只问两个问题的……
jekexys2004 2005-01-15
  • 打赏
  • 举报
回复
up
junki 2005-01-15
  • 打赏
  • 举报
回复
楼上的都已经说的很清楚了

不清楚再问吧
ZWB_ZYN 2005-01-15
  • 打赏
  • 举报
回复
1
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel =true
End Sub


2
加上窗体名字,如form1和morm2,两个窗体都有一个text1.text,就用form1.text1.text来控制form1里面的控件

临摹 2005-01-15
  • 打赏
  • 举报
回复
1,有一个Private Sub Form_Unload(Cancel As Integer)
自己找,最后一个,设置一下cancel的值
2,加上窗体名字,如form1和morm2,两个窗体都有一个text1.text,就用form1.text1.text来控制form1里面的控件

zhaojunliang 2005-01-15
  • 打赏
  • 举报
回复
问题3。
Dim txtSQL As String

txtSQL = "select * from khfw where gdh='" & Trim(Text1.Text) & "'order by khqc"
DataEnvironment1.rsCommand2.Open txtSQL, connectstring, adOpenKeyset, adLockBatchOptimistic
DataReport2.Show
sworddx 2005-01-15
  • 打赏
  • 举报
回复
第一个问题,如果你同时可以不要最大化最小化按钮,可以设置窗体的ControlBox属性为False。
tmd007 2005-01-15
  • 打赏
  • 举报
回复
UP
viena 2005-01-15
  • 打赏
  • 举报
回复
1.在关闭事件里Cancel
2.在模块里操作窗体,窗体打开时,把自身传递到模块里面
3.Data Environment 和 Data Report没用过,但是我想应该可以设成按SQL语句查询的
一如当初 2005-01-15
  • 打赏
  • 举报
回复
1.这个早就有贴说过了,搜吧,最简单的办法就是把cancel参数设1,好象是1吧

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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