| 作者 | 主题 |
|---|---|
|
塞上雁 游侠 经验值:432 发帖数:182 精华帖:1 |
楼主
主题:利用vb弥补vbs的不足
wincc中vbs脚本编程对我们新手而言多少有些陌生,但是vb相对熟悉一些,那么在一些场合利用VB的强大功能就能弥补vbs的不足。比如,需要在画面中能浏览本地硬盘,需要添加comdialog控件利用VBS脚本写程序,但是VBS脚本中对控件的操作语句或函数我并不知道怎么办呢?其实既然我要添加comdialog控件并且还要编程,那么我为什么不要VB写一个浏览硬盘的“ACTIVEX控件”呢。
可以这样做: 1.打开vb,选择'ACTIVEX控件'。 2.在窗口上放置一个按钮和一个ComDialog控件。 3.双击按钮,写程序: Private Sub Command1_Click() On Error GoTo Err_Handle Dim i As Integer 'i存储空格位置 Dim z As Integer 'z存储查找的起始位置 Dim FileNames() As String 'FileNames存储划分后的文件目录和文件名称 CommonDialog1.FileName = "" CommonDialog1.Filter = "RTF Files*.*" CommonDialog1.Flags = cdlOFNAllowMultiselect '设置CommonDialog1控件属性 CommonDialog1.ShowOpen '显示打开对话框 CommonDialog1.FileName = CommonDialog1.FileName & Chr(32) '在CommonDialog1的FileName属性值后面添加空格 For i = 1 To Len(CommonDialog1.FileName) i = InStr(z, CommonDialog1.FileName, Chr(32)) '设置i为FileName属性值中空格的位置 If i = 0 Then Exit For ReDim Preserve FileNames(y) FileNames(y) = Mid(CommonDialog1.FileName, z, i - z) '将FileName属性以空格作为划分标志 '分成若干部分存储到FileNames数组 z = i + 1 Next Form1.RichTextBox1.LoadFile (FileNames(0)) Exit Sub Err_Handle: MsgBox Err.Des cription Exit Sub End Sub 4.生成工程。 5.在wincc画面编辑器里插入一个“插入控件”,选择“注册”,选择刚刚生成的vb工程文件。 到此一个新的硬盘浏览ACTIVEX控件就添加进wincc了。运行时直接点击按钮就可以以文件方式浏览硬盘了。 VBS的功能毕竟比VB少了许多,在组态时我们可以灵活的运用,取长补短,“山不过来,我就过去”能解决问题的办法就是好办法。
美哉德乎!姚姚者乎
|
|
youhm 至圣 经验值:13572 发帖数:4924 精华帖:81 |
1楼
主题:回复:利用vb弥补vbs的不足
像对话框这类对象在VBS里可以直接操控甚至不用添加控件,就不用再走弯路了
Dim CDG Set CDG=CreateObject("MSCOMDLG.CommonDialog.1") CDG.MaxFileSize=260 CDG.ShowOpen Msgbox CDG.FileName '显示完整路径和文件名 Msgbox CDG.FileTitle '显示文件名 Set CDG=Nothing 我觉得在VBS里熟练掌握各种对象的使用是很有用的 |
|
youhm 至圣 经验值:13572 发帖数:4924 精华帖:81 |
5楼
主题:回复:利用vb弥补vbs的不足
版主发话了,那我就顺便说一下C脚本里对象的访问
WinCC在C脚本里提供了对象这个类型__object使我们可以像VBS里一样方便的使用对象 这里我就拿1楼的代码转换成C脚本里对照 红色字体为C脚本 —————————————————————————————————— Dim CDG '__object * CDG=NULL; //定义对象指针 Set CDG=CreateObject("MSCOMDLG.CommonDialog.1") 'CDG=__object_create("MSCOMDLG.CommonDialog.1"); //创建对话框对象 CDG.MaxFileSize=260 'CDG->MaxFileSize=260; //设置对象属性 CDG.ShowOpen 'CDG->ShowOpen(); //执行对象方法 Msgbox CDG.FileName '显示完整路径和文件名 'MessageBox(NULL,CDG->FileName,"信息",MB_YESNOMB_ICONQUESTIONMB_SETFOREGROUNDMB_SYSTEMMODAL); Msgbox CDG.FileTitle '显示文件名 'MessageBox(NULL,CDG->FileTitle,"信息",MB_YESNOMB_ICONQUESTIONMB_SETFOREGROUNDMB_SYSTEMMODAL); Set CDG=Nothing '__object_delete(CDG); //释放对象 —————————————————————————————————— 其他对象都可这样转换 另外VBS里默认HMIRuntime对象,在C脚本里不能直接使用,可按如下方法创建 __object * HMI=NULL; HMI=__object_create("CCHMIRuntime.HMIRuntime"); 其他HMIRuntime子对象都可通过它来访问 未上机测试,如有疏漏请见谅 |