技术论坛

 回复:利用vb弥补vbs的不足

返回主题列表
作者 主题
塞上雁
游侠

经验值:432
发帖数:182
精华帖:1
楼主    2009-12-25 17:00:30
主题:利用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楼    2009-12-25 18:17:44
精华帖  主题:回复:利用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楼    2010-06-11 19:23:41
精华帖  主题:回复:利用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子对象都可通过它来访问

未上机测试,如有疏漏请见谅
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。