| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5899 人关注过本帖
标题:如何调用另一个窗体中控件的方法
只看楼主 加入收藏
lvmingaivb
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
如何调用另一个窗体中控件的方法
比如:我建了一个窗体form1,在里面添加了一个视频捕捉控件ThplateDsp_WinTone1,然后在command1_click事情中调用它的方法:

ThplateDsp_WinTone1.SetBitmapSave (True)  '是否保存捕获
ThplateDsp_WinTone1.SetFileDiskPath ("E:\lvming\picture\\")'设置保存图片路径
ThplateDsp_WinTone1.SetVideoPath ("E:\lvming\\video.avi")'设置保存视频路径
...开始视频播放
...等等

在另一个窗体form2(参数设置)中,我想通过调用form1中的ThplateDsp_WinTone1.SetFileDiskPath 来修改图片保存路径(就是说可以让使用者自己设置图片保存的路径) ,怎么实现,请教各位高手
搜索更多相关主题的帖子: 窗体 控件 
2010-09-10 14:13
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
窗体名.控件名.属性= XXXx
注:控件放在窗体上,就自动是 public 的,所以可以直接访问,本窗体访问该控件,可以省写窗体名.
外部访问(本工程内),就必须加上窗体名.
如果你使用 public 声明的变量\结构变量(非结构定义) ,均可以使用这种方法来访问.

call 窗体名.全局过程名
注:过程或函数,必须使用 public 声明.

-------------------
public 关键在窗体中声明的变量,就相当于给这个窗体额外定义了一个属性,只是这个属性不会引发任何事件罢了.
 如果需要对某个变量进行修改时,窗体需要相应的操作,那么应该 声明为 public 的函数. 使用这个函数来操作.

授人于鱼,不如授人于渔
早已停用QQ了
2010-09-10 16:28
lvmingaivb
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-13
收藏
得分:0 
回复 2楼 风吹过b
版主,你好,谢谢你的建议。
你的方法在之前我也试过了,还是不能实现的

我把部分代码贴上,你帮忙看下

form1部分代码:
'暂停播放/继续播放
Private Sub Command2_Click()
If Command2.Caption = "继续播放" Then
    Command2.Caption = "暂停播放"
Else
    Command2.Caption = "继续播放"
End If
ThplateDsp_WinTone1.PauseVideoCatch '暂停视频播放
End Sub
'手动抓图
Private Sub Command3_Click()
'ThplateDsp_WinTone1.SetBitmapSave (True)  是否保存抓图图片   想通过FORM2参数进行设置
'ThplateDsp_WinTone1.SetFileDiskPath ("E:\lvming\picture\\")  设置保存图片路径
ThplateDsp_WinTone1.HandCatch
Dim str As String
str = ThplateDsp_WinTone1.GetLicense + "       " + ThplateDsp_WinTone1.GetColor + "        " + ThplateDsp_WinTone1.GetType + "         " + CStr(ThplateDsp_WinTone1.GetCredibility) + "          " + CStr(ThplateDsp_WinTone1.GetRecognise)
List1.AddItem (str)
End Sub
'停止播放
Private Sub Command4_Click()
ThplateDsp_WinTone1.StopVideoCatch
End Sub
'打开文件
Public Sub Command5_Click()
    Dim fstr As String
    ThplateDsp_WinTone1.StopVideoCatch
    CommonDialog1.Filter = "(*.mpg)|*.mpg|视频文件(*.avi)|*.avi|所有文件(*.*)|*.*|"
    CommonDialog1.ShowOpen
    fstr = CommonDialog1.FileName
        If fstr <> "" Then
        ThplateDsp_WinTone1.SetPlayFileName (fstr)
       ’ThplateDsp_WinTone1.SetBitmapSave (True)   我就是想把这的保存图片,及路径放在下面form2的参数设置里
        ’ThplateDsp_WinTone1.SetFileDiskPath ("E:\lvming\picture\\")  我就是想把这的保存图片,及路径放在下面form2的参数设置里

        ThplateDsp_WinTone1.StartFromFile  
        End If
        
   
        
End Sub
'单帧播放
Private Sub Command6_Click()
ThplateDsp_WinTone1.SingleFramePlay
End Sub
'快进
Public Sub Command7_Click()
ThplateDsp_WinTone1.SetTimeIntervalValue (1)
ThplateDsp_WinTone1.SetTimeType (True)
ThplateDsp_WinTone1.ForwardPlay
End Sub
'快退
Public Sub Command8_Click()
ThplateDsp_WinTone1.SetTimeIntervalValue (1)
ThplateDsp_WinTone1.SetTimeType (True)
ThplateDsp_WinTone1.BackwardPlay
End Sub

...
...

form2 部分代码
Private Sub Command1_Click()’选择保存文件路径按钮

    CommonDialog1.Filter = "抓图图片(*.bmp)|*.bmp|文本文件(*.jpg)|*.jpg|ALL File(*.*)|*.*"

    CommonDialog1.FileName = "抓图图片" + Format(Now, "yyyyMMdd") + ".bmp" ' 默认一个文件名
    CommonDialog1.ShowSave
    Text1.Text = CommonDialog1.FileName
 
End Sub
' 参数设定完确定
Private Sub Command2_Click()
  Dim dt As Date
  Dim sql As String
  Dim rs As New ADODB.Recordset
  Dim cnn As New ADODB.Connection
      cnn.Open "provider=sqloledb.1;persist security info = false;data source=test;initial catalog=v_catch;user id=sa;password=159753"
      sql = "select * from 视频捕捉"
      rs.CursorLocation = adUseClient
      rs.Open sql, cnn, 1, 3
   
  If Check1.Value = 1 Then
  
     
      Call Form1.ThplateDsp_WinTone1.SetBitmapSave(True)          就是按你说的那个方法,但是还是无法事项
   
      Call Form1.ThplateDsp_WinTone1.SetFileDiskPath("Text1.Text")   '设置保存图片路径
      
  Else
      Call Form1.ThplateDsp_WinTone1.SetBitmapSave(False)

   
  End If



 If Check2.Value = 1 Then
     Call SetAutoRun(True)      '设为开机自动运行
   
 ElseIf Check2.Value = 0 Then
     Call SetAutoRun(False)     '取消开机自动运行
   
 End If

.....
.......
2010-09-13 10:34
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
      Call Form1.ThplateDsp_WinTone1.SetBitmapSave(True)          就是按你说的那个方法,但是还是无法事项
   
      Call Form1.ThplateDsp_WinTone1.SetFileDiskPath("Text1.Text")   '设置保存图片路径


因为 这个 SetBitmapSave 事件是 是 Private 的响应函数,自然无法调用,你需要自己用 public 函数封装一下.

如 这个过程放到 Form1 窗体代码中.
Public Sub wintonelsetbitmapsace(CS As Boolean)
   Call ThplateDsp_WinTone1.SetBitmapSave(cs)
End Sub

那么你才可以在 Form2 中调用
 Call Form1.wintonelsetbitmapsace(True)

授人于鱼,不如授人于渔
早已停用QQ了
2010-09-13 13:13
lvmingaivb
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-8-13
收藏
得分:0 
回复 4楼 风吹过b
谢谢版主,不过还是不行
2010-09-13 14:13
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
4楼的方法,我测试过.有效啊.

如果你还是调用无效,那么你在
ThplateDsp_WinTone1.SetBitmapSave 这个响应过程中测试,看看调用堆栈是怎么样的.
看看程序会不会执行到这一步去.


授人于鱼,不如授人于渔
早已停用QQ了
2010-09-13 15:16
快速回复:如何调用另一个窗体中控件的方法
数据加载中...
 
   



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

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