Как мне добавить эту функцию???
Для наглядности выкладываю весь скрол в HiAsm:
Add(MainForm,2953706,21,105)
{
Height=244
}
Add(ChildPanel,14104928,196,126)
{
link(onEvent1,14859384:doText,[])
}
BEGIN_SDK
Add(EditMulti,8243273,21,21)
{
EventCount=2
WorkCount=5
VarCount=1
Width=874
Height=473
link(doWork1,1395917:doWork1,[(103,27)(103,48)])
link(doWork2,1395917:doWork4,[(61,34)(61,69)])
link(doWork3,1395917:doWork5,[(51,41)(51,76)])
link(doWork4,13055297:doWork1,[(100,48)(100,41)(333,41)])
link(doWork5,1395917:doWork6,[(41,55)(41,83)])
link(Var1,1395917:Var1,[(27,290)(125,290)])
}
Add(Panel,8819185,42,175)
{
Left=95
Top=105
Width=155
Height=13
Color=-16777211
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(ChildPanel,1395917,119,42)
{
link(onEvent1,13055297:doWork2,[])
link(onEvent3,8243273:onEvent2,[(534,62)(534,34)])
}
BEGIN_SDK
Add(EditMulti,14455976,21,21)
{
EventCount=3
WorkCount=6
VarCount=1
Width=881
Height=515
link(doWork1,8384556:doWork4,[(95,27)(161,146)(161,153)])
link(doWork2,11454786:doMax,[(128,34)(128,223)])
link(doWork3,11454786:doMouseWheel,[(118,41)(118,230)])
link(doWork4,8384556:doWork2,[(95,48)(95,139)])
link(doWork5,8384556:doWork3,[(86,55)(86,146)])
link(doWork6,15346739:doWork2,[(77,62)(77,160)])
link(Var1,8384556:Var5,[(27,171)(202,171)])
}
Add(Panel,12825937,245,77)
{
Width=155
Height=13
Align=2
Color=-16777211
Font=[MS Sans Serif,8,0,32896,1]
BorderWidth=0
BevelInner=0
BevelWidth=0
}
Add(VBJScript,11454786,168,196)
{
WorkPoints=#6:doMove|8:doResize|10:doPosition|5:doMax|12:doMouseWheel|4:doUp|6:doDown|
EventPoints=#5:onTop|10:onPosition|13:onSetPosition|13:onApplication|17:onPositionMouseUp|
DataPoints=#8:WidthBtn|3:Top|6:Height|6:MouseX|6:arrKey|8:MousePos|4:SpBt|
Script=#49:Dim Position, MaxPos, MousePos, Pos, kn1, kn2, Sp|54:Position = CLng(0) : MaxPos = CLng(255) ' по умолчанию|0:|23:Sub doWork(Data, Index)|20:On Error Resume Next|13:Sp = sys.SpBt|23:kn1 = sys.WidthBtn + Sp|28:kn2 = CInt(sys.WidthBtn / 2)|0:|19: Select Case Index|22: Case "doMove"|32: Set arrKey = sys.arrKey|40: If (sys.MouseX - Sp) < kn2 Then|24: sys.onTop Sp|57: Else If sys.MouseX > sys.Height - kn2 - Sp Then|38: sys.onTop sys.Height - kn1|74: Else If sys.MouseX > kn2 and sys.MouseX < (sys.Height - kn2) Then|38: sys.onTop sys.MouseX - kn2|33: End If : End If : End If|0:|48: MousePos = sys.MousePos : Pos = sys.Top|0:|38: Do While arrkey.get(1) = 1|45: If MousePos > sys.MousePos Then|44: tmp = MousePos-sys.MousePos|42: If (Pos - tmp) >= Sp Then|41: sys.onTop (Pos - tmp)|21: Else|32: sys.onTop Sp|23: End if|18: Else|44: tmp = sys.MousePos-MousePos|58: If (Pos + tmp) <= (sys.Height - kn1) Then|41: sys.onTop (Pos + tmp)|21: Else|46: sys.onTop sys.Height - kn1|23: End if|20: End If|35: sys.onApplication nil|74: Position = CLng((sys.Top-Sp)/(((sys.Height-Sp)-kn1)/MaxPos))|37: sys.onPosition Position|16: Loop|42: sys.onPositionMouseUp Position|0:|26: Case "doPosition"|36: Set arrKey = sys.arrKey|62: If CLng(Data) <= MaxPos and arrkey.get(1)<>1 Then|36: Position = CLng(Data)|70: sys.onTop Int(Data*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|41: sys.onSetPosition Position|19: End If|0:|21: Case "doMax"|37: If Position > Data Then|32: Position = Data|36: MaxPos = CLng(Data)|76: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|18: Else|35: MaxPos = CLng(Data)|75: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|20: End If|0:|20: Case "doUp"|35: If Position > 0 Then|36: Position=Position-1|76: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|40: sys.onPosition Position|21: End If|0:|22: Case "doDown"|40: If Position < MaxPos Then|36: Position=Position+1|76: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|40: sys.onPosition Position|21: End If|0:|23: Case "doResize"|72: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|0:|27: Case "doMouseWheel"|31: If Data = 120 Then|34: If Position >0 Then|37: Position=Position-10|76: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|40: sys.onPosition Position|21: End If|17: Else|40: If Position < MaxPos Then|37: Position=Position+10|76: sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp|40: sys.onPosition Position|21: End If|18: End If|12: End Select|7:End Sub|
UseName=0
link(onTop,15346739:doWork3,[(232,202)(232,167)(156,167)])
link(onPosition,8293707:doWork2,[])
link(onSetPosition,8293707:doWork3,[(228,216)])
link(onApplication,13440338:doWork1,[])
link(onPositionMouseUp,14455976:onEvent2,[(346,230)(346,34)])
link(WidthBtn,8384556:Var1,[])
link(Top,8384556:Var2,[])
link(Height,8384556:Var3,[])
link(MouseX,8384556:Var4,[])
link(arrKey,1353392:Keys,[(202,179)(216,179)])
link(MousePos,14374737:MouseX,[])
link(SpBt,6057438:Value,[(216,189)(251,189)])
}
Add(ChildPanel,8384556,168,126)
{
link(onEvent1,11454786:doMove,[(227,132)(227,185)(158,185)(158,202)])
link(onEvent2,11454786:doResize,[(219,139)(219,176)(150,176)(150,209)])
link(onEvent3,14455976:onEvent3,[(554,146)(554,41)])
}
BEGIN_SDK
Add(EditMulti,5456159,49,28)
{
EventCount=3
WorkCount=4
VarCount=5
Width=881
Height=529
link(doWork1,11411431:doEvent1,[(221,34)(221,258)])
link(doWork2,3383225:doLoad,[(154,41)(154,43)])
link(doWork3,3256936:doLoad,[(206,48)(206,293)])
link(Var1,7703943:Width,[(55,439)(510,439)])
link(Var2,7703943:Left,[(62,451)(517,451)])
link(Var3,5057005:Width,[(69,119)(321,119)])
link(Var4,5057005:MouseX,[(76,130)(328,130)])
link(Var5,3256936:Width,[(83,464)(741,464)])
}
Add(Panel,5057005,315,70)
{
Width=155
Height=13
Align=5
Color=-16777211
Font=[Arial,6,0,32896,204]
Cursor=2
BorderWidth=0
BevelInner=0
BevelWidth=0
Point(onResize)
Point(Width)
Point(MouseX)
link(onClick,2870887:doWork2,[(355,76)(355,34)])
link(onResize,5456159:onEvent2,[(361,83)(361,41)])
}
Add(Image,3383225,252,37)
{
Width=155
Height=13
Color=0
Enabled=1
ColorSp=-16777215
AutoSize=0
HalfTone=1
Point(doLeft)
Point(Width)
Point(Left)
}
Add(Image,3256936,728,287)
{
Left=4
Top=6
Width=0
Height=3
ViewStyle=1
Point(doWidth)
Point(Width)
link(onClick,2870887:doWork3,[(795,293)])
}
Add(Hub,11411431,392,252)
{
OutCount=3
link(onEvent1,7703943:doLeft,[(444,258)(444,225)])
link(onEvent2,3256936:doWidth,[(444,265)(444,307)])
link(onEvent3,5456159:onEvent3,[(668,272)(668,48)])
}
Add(Image,7703943,497,205)
{
Left=85
Top=5
Width=10
Height=4
Color=0
Visible=1
Enabled=1
Cursor=2
ColorSp=-16777215
AutoSize=0
HalfTone=1
Point(doLeft)
Point(Width)
Point(Left)
Point(Handle)
}
Add(HubEx,2870887,791,28)
{
link(onEvent,5456159:onEvent1,[])
}
Add(InfoTip,9051722,700,245)
{
Info=#11:Прогресбар |
Width=85
Height=109
}
END_SDK
Add(Keyboard,1353392,210,77)
{
}
Add(Memory,14547252,287,203)
{
Default=Integer(0)
link(onData,14455976:onEvent1,[(333,209)(333,27)])
}
Add(HubEx,8293707,224,203)
{
link(onEvent,14547252:doValue,[])
}
Add(MouseEvent,14374737,203,35)
{
}
Add(MultiElement,13440338,238,217)
{
}
BEGIN_SDK
Add(EditMulti,12396403,21,21)
{
WorkCount=1
Width=174
Height=123
link(doWork1,4353218:doEvent1,[(28,27)(28,41)])
}
Add(Application,11729162,133,35)
{
Wait=1
}
Add(Beep,9443488,84,56)
{
Freq=0
Duration=10
}
Add(Hub,4353218,35,35)
{
link(onEvent1,11729162:doProcessMessages,[])
link(onEvent2,9443488:doBeep,[(70,48)(70,62)])
}
Add(InfoTip,3436654,35,105)
{
Info=#30:это снимет загрузку процессора|
Width=134
}
END_SDK
Add(Memory,6057438,245,126)
{
Default=Integer(2)
}
Add(InfoTip,2115702,238,112)
{
Info=#6:Отступ|
Width=71
Height=53
}
Add(HubEx,15346739,152,154)
{
Angle=3
link(onEvent,8384556:doWork1,[(156,132)])
}
END_SDK
Add(HubEx,13055297,329,42)
{
link(onEvent,8243273:onEvent1,[(510,48)(510,27)])
}
END_SDK
Add(Edit,14859384,266,126)
{
Left=155
Top=35
}
ну и сам код VBS:
Dim Position, MaxPos, MousePos, Pos, kn1, kn2, Sp
Position = CLng(0) : MaxPos = CLng(255) ' по умолчанию
Sub doWork(Data, Index)
On Error Resume Next
Sp = sys.SpBt
kn1 = sys.WidthBtn + Sp
kn2 = CInt(sys.WidthBtn / 2)
Select Case Index
Case "doMove"
Set arrKey = sys.arrKey
If (sys.MouseX - Sp) < kn2 Then
sys.onTop Sp
Else If sys.MouseX > sys.Height - kn2 - Sp Then
sys.onTop sys.Height - kn1
Else If sys.MouseX > kn2 and sys.MouseX < (sys.Height - kn2) Then
sys.onTop sys.MouseX - kn2
End If : End If : End If
MousePos = sys.MousePos : Pos = sys.Top
Do While arrkey.get(1) = 1
If MousePos > sys.MousePos Then
tmp = MousePos-sys.MousePos
If (Pos - tmp) >= Sp Then
sys.onTop (Pos - tmp)
Else
sys.onTop Sp
End if
Else
tmp = sys.MousePos-MousePos
If (Pos + tmp) <= (sys.Height - kn1) Then
sys.onTop (Pos + tmp)
Else
sys.onTop sys.Height - kn1
End if
End If
sys.onApplication nil
Position = CLng((sys.Top-Sp)/(((sys.Height-Sp)-kn1)/MaxPos))
sys.onPosition Position
Loop
sys.onPositionMouseUp Position
Case "doPosition"
Set arrKey = sys.arrKey
If CLng(Data) <= MaxPos and arrkey.get(1)<>1 Then
Position = CLng(Data)
sys.onTop Int(Data*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
sys.onSetPosition Position
End If
Case "doMax"
If Position > Data Then
Position = Data
MaxPos = CLng(Data)
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
Else
MaxPos = CLng(Data)
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
End If
Case "doUp"
If Position > 0 Then
Position=Position-1
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
sys.onPosition Position
End If
Case "doDown"
If Position < MaxPos Then
Position=Position+1
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
sys.onPosition Position
End If
Case "doResize"
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
Case "doMouseWheel"
If Data = 120 Then
If Position >0 Then
Position=Position-10
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
sys.onPosition Position
End If
Else
If Position < MaxPos Then
Position=Position+10
sys.onTop Int(Position*((((sys.Height-Sp)-kn1)/MaxPos)))+Sp
sys.onPosition Position
End If
End If
End Select
End Sub