回复:请问怎么在运行系统的时候在一个画面中加入控件? 比如加入一个按钮

liwenqun

  • 帖子

    5293
  • 精华

    25
  • 被关注

    8

论坛等级:奇侠

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2005-10-10 17:22:30

0楼

问题基本得到解决
参考了无数次帮助 终于差不多可以实现了
主要是想有很多控件要添加而且比较有规律 因此想用VBA实现比较有重复利用的价值
代码如下(比较简单 所以没有注释,请有需要的自行研究)

Public Sub addObject()
Dim objCircle As HMICircle
Dim objRectangle As HMIRectangle
Dim objEllipse As HMIEllipse
Dim objText As HMIStaticText
Dim objText_Dyn As HMIStaticText

Set objCircle = ActiveDocument.HMIObjects.AddHMIObject("sCircle", "HMICircle")
Set objRectangle = ActiveDocument.HMIObjects.AddHMIObject("sRectangle", "HMIRectangle")
Set objEllipse = ActiveDocument.HMIObjects.AddHMIObject("sEllipse", "HMIEllipse")
Set objText = ActiveDocument.HMIObjects.AddHMIObject("sText", "HMIStaticText")
Set objText_Dyn = ActiveDocument.HMIObjects.AddHMIObject("sTextDyn", "HMIStaticText")

With objCircle
.Top = 30: .Left = 0: .Width = 15: .Selected = True
End With

With objRectangle
.Top = 80: .Left = 42: .Width = 40: .Selected = True
End With

With objEllipse
.Top = 48: .Left = 162: .Width = 120: .Selected = True
End With

With objText
.Top = 200: .Left = 200: .Width = 100: .Height = 50
.BackColor = RGB(255, 255, 0): .Text = "test"
End With

With objText_Dyn
.Top = 300: .Left = 300: .Width = 100: .Height = 50
.BackColor = RGB(255, 255, 0): .Text = "DYNTest"
End With

Dim objDyn As HMIVariableTrigger
Dim t
t = "@LocalMachineName"
Set objDyn = objText_Dyn.Text.CreateDynamic(hmiDynamicCreationTypeVariableIndirect, "@LocalMachineName")
objDyn.CycleType = hmiVariableCycleTypeOnChange
Call AddDynamicAsVariableIndirectToProperty

End Sub
Sub AddDynamicAsVariableIndirectToProperty()
'VBA59
Dim objVariableTrigger As HMIVariableTrigger
Dim objCommand As HMIButton
Dim objCircle As HMICircle
Set objCircle = ActiveDocument.HMIObjects.AddHMIObject("Circle2", "HMICircle")
With objCircle
.Top = 400: .Left = 400: .Width = 50: .Selected = True
End With
Set objCommand = ActiveDocument.HMIObjects.AddHMIObject("command", "HMIButton")
With objCommand
.Top = 450: .Left = 450: .Width = 100: .Height = 50: .Text = "set"
End With
'Create dynamic on property "Left":
Set objVariableTrigger = objCircle.Left.CreateDynamic(hmiDynamicCreationTypeVariableDirect, "@RedundantServerState")

Dim objVBs cript As HMIs criptInfo
Dim txtVBS As String
Set objVBs cript = objCommand.Events(1).Actions.AddAction(hmiActionCreationTypeVBs cript)
txtVBS = "dim str" & vbCrLf & "set str=hmiruntime.tags(""LI"")" & vbCrLf & "str.write ""liwenqun333"""
objVBs cript.SourceCode = txtVBS
'Define cycle-time
With objVariableTrigger
.CycleType = hmiVariableCycleTypeOnChange
End With

End Sub

Private Sub Document_BeforeSave(Cancel As Boolean, CancelForwarding As Boolean)
Dim iMaxMembers As Integer
iMaxMembers = ActiveDocument.HMIObjects.Count
If iMaxMembers = 0 Then Call addObject

End Sub

怎么论坛改成这样了??
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32654条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。