如何将对象的宽度或高度放入变量?

时间:2017-06-25 08:49:59

标签: vbscript

我目前在Qlikview中使用VBScript,但遇到了问题。我的代码目前看起来像这样:

sub resize

     set obj = ActiveDocument.GetSheetObject("TX05")
     set fr = obj.GetFrameDef
     set pos = fr.Rect
     set WidthUser = ActiveDocument.Variables("vWidth")

'    set OriginalWidth = pos.Width
'    set OriginalHeight = pos.Height
'    Ratio is 2.5

     pos.Width = Cint(WidthUser.GetContent.String) * 2.5

'    pos.Height = vPreferredWidth/vOriginalWidth * vOriginalHeight

     pos.Height = 200 * 2.5
     obj.SetFrame fr,true,dummy
     msgbox("Changed Width to: " & pos.Width/2.5 & " " & Chr(13) & "Changed Height to: " & pos.Height/2.5)

End sub

vWidth是一个变量,用户可以在其中输入所需的宽度。

那么我想要实现的目标是什么?我希望用户能够输入他想要的对象宽度,然后按下一个名为“调整大小”的按钮。按下按钮时,对象宽度应更改为所需的宽度,对象高度也应相对于宽度的变化而变化。

例如,我们从一个宽度为120,高度为200的对象开始。然后用户输入所需的宽度60,然后按下“调整大小”按钮。对象宽度应更改为60,对象高度应更改为100(60/120 * 200 = 100)。因此,在最终结果中,比率宽度/高度仍然相同(120/200对60/100)。

我遇到的问题是尝试捕捉对象的原始宽度和高度。我尝试使用:

set OriginalWidth = pos.Width
set OriginalHeight = pos.Height

但这根本不起作用。我尝试了各种各样的变化但到目前为止没有任何工作。我不明白的是,当我输入时:

msgbox(pos.Width)

我确实得到了一个结果,但是当我使用时:

set OriginalWidth = pos.Width
msgbox(OriginalWidth)

我什么都没得到(我被扔进了我的剧本)。

任何人都可以帮我解决这个问题吗?也会喜欢对其余代码的一些反馈,因为我刚开始学习这个。

提前致谢!

在帮助后编辑我将代码更改为:

sub resize 
'   Ratio is 2.5
    set obj = ActiveDocument.GetSheetObject("TX05")
    set fr = obj.GetFrameDef
    set pos = fr.Rect
    set WidthUser = ActiveDocument.Variables("vWidth")
    set HeightUser = ActiveDocument.Variables("vHeight")

    OriginalWidth = pos.Width
    OriginalHeight = pos.Height
    DesiredUserWidth = Cint(WidthUser.GetContent.String)

    pos.Width = DesiredUserWidth * 2.5
    pos.Height = DesiredUserWidth / OriginalWidth * OriginalHeight * 2.5
    obj.SetFrame fr,true,dummy
    msgbox("Changed Width to: " & pos.Width/2.5 & " " & Chr(13) & "Changed Height to: " & pos.Height/2.5)
End sub

1 个答案:

答案 0 :(得分:1)

阅读docs for Set,从现在起,只有在将对象分配给变量时才使用它。

    set OriginalWidth = pos.Width
==>
    OriginalWidth = pos.Width