Да есть такое, найди блок Case "doKey" и замени на код с проверкой
есть наверно ещё баги к сожелению.
------------ Дoбавленo в 20.50:
вот кот где ещё и страничный баг убрал
Add(MainForm,2953706,196,182) { Width=632 Height=477 Point(onKeyDown) Point(onMouseWheel) link(onKeyDown,8197709:doWork2,[]) link(onMouseWheel,8197709:doWork3,[(242,216)]) } Add(Button,8978389,147,112) { Left=400 Top=5 Width=130 Caption="Open Folder MP3" link(onClick,12634172:doBrowse,[]) } Add(Browse,12634172,196,112) { Title="Выбрать каталог с MP3" NewStyle=0 NewDirButton=1 link(onBrowse,5377037:doWork1,[]) } Add(HubEx,8197709,238,196) { link(onEvent,5377037:doWork2,[(263,209)(263,125)]) } Add(MediaPlayer,418585,371,112) { } Add(Hub,8071676,329,112) { link(onEvent1,418585:doPlay,[]) link(onEvent2,2953706:doCaption,[(356,125)(356,170)(184,170)(184,188)]) } Add(ChildPanel,5377037,280,112) { link(onEvent1,8071676:doEvent1,[]) } BEGIN_SDK Add(EditMulti,13029655,21,21) { EventCount=1 WorkCount=2 Width=146 Height=137 link(doWork1,11448945:doWork1,[(50,27)(50,62)]) link(doWork2,11448945:doWork2,[(40,34)(40,69)]) } Add(Panel,2712341,70,98) { Width=305 Height=443 Align=1 Color=0 ModeSp=1 ColorSp=8421504 BevelInner=1 } Add(ChildPanel,11448945,70,56) { link(onEvent1,13029655:onEvent1,[(123,62)(123,27)]) } BEGIN_SDK Add(EditMulti,8772874,21,21) { EventCount=1 WorkCount=2 Width=433 Height=291 link(doWork1,4914594:doWork,[(61,27)(61,55)]) link(doWork2,12837547:doKey,[(49,34)(49,167)]) } Add(Panel,13188709,189,91) { Width=345 Height=423 Align=5 Color=0 Visible=1 ColorSp=8421504 BorderWidth=0 BevelInner=0 BevelWidth=0 Point(onResize) Point(Height) Point(doVisible) link(onResize,6651658:doTimer,[]) } Add(ChildPanelEx,7618098,273,231) { link(onAdd,12837547:doPath,[(332,237)(332,279)(170,279)(170,181)]) link(Index,12837547:doIndex,[(325,244)(325,272)(180,272)(180,188)]) } BEGIN_SDK Add(EditMultiEx,13200607,21,21) { WorkCount=#6:Create|7:doSplit|8:doSplit1|7:doFocus| EventCount=#5:onAdd|5:Index| Width=230 Height=186 link(Create,8836188:##add,[(91,27)(91,104)]) link(doSplit,8836188:##select,[(76,34)(76,111)]) link(doSplit1,8836188:doSplit,[(63,41)(63,118)]) link(doFocus,8836188:doSplit1,[(52,48)(52,125)]) } Add(ChildPanelEx,8836188,105,98) { Mode=1 link(onAdd,9362387:doWork1,[]) link(Out,13200607:Index,[(150,111)(150,34)]) } BEGIN_SDK Add(EditMultiEx,13549711,21,21) { WorkCount=#5:##add|8:##select|7:doSplit|8:doSplit1| EventCount=#5:onAdd|3:Out| Width=419 Height=256 Point(##add) Point(##select) link(##add,15635633:doValue,[(90,27)(90,90)]) link(doSplit,16643441:doSplit,[]) link(doSplit1,10368454:doWork2,[(46,48)(46,237)]) } Add(Memory,15319080,217,175) { Default=Integer(1) } Add(Panel,11002107,203,182) { Left=2 Top=22 Width=335 Height=12 Align=2 Color=0 Font=[MS Sans Serif,8,0,65280,1] BorderWidth=0 BevelInner=0 BevelWidth=0 Point(Top) Point(Width) } Add(Label,8903551,238,35) { Left=304 Width=31 Height=12 Align=3 Color=0 Font=[MS Sans Serif,8,0,65535,1] Caption="" AutoSize=1 link(onClick,15607541:doWork1,[(298,41)]) } Add(Label,3784947,231,77) { Left=33 Width=271 Height=12 Align=5 Color=0 Font=[MS Sans Serif,8,0,65280,1] Caption="" link(onClick,15607541:doWork2,[]) } Add(MT_AddData,177168,203,231) { Count=6 link(onAdd,13549711:onAdd,[(357,237)(357,27)]) link(Data1,11002107:Top,[]) link(Data2,11002107:Width,[]) link(Data3,15319080:Value,[]) link(Data4,3744433:Caption,[]) link(Data5,3784947:Caption,[]) link(Data6,8903551:Caption,[]) } Add(StrPart,5471821,168,35) { Char=";" link(onSplit,8903551:doText,[]) link(onPart,3784947:doText,[(216,48)(216,83)]) } Add(Label,3744433,224,126) { Width=33 Height=12 Align=1 Color=0 Font=[MS Sans Serif,8,0,16776960,1] Caption="" AutoSize=1 link(onClick,603388:doWork2,[]) } Add(StrPart,16643441,112,35) { Char=";" link(onSplit,5471821:doSplit,[]) link(onPart,3744433:doText,[(156,48)(156,132)]) } Add(HubEx,603388,315,119) { link(onEvent,14786354:doEvent1,[(339,132)(339,163)(65,163)(65,181)]) } Add(HubEx,15607541,294,70) { link(onEvent,603388:doWork1,[(319,83)]) } Add(HubEx,10368454,98,224) { link(onEvent,177168:doAdd,[]) } Add(Memory,15635633,112,84) { } Add(DoData,13953331,112,175) { link(onEventData,8014450:In,[]) link(Data,15635633:Value,[]) } Add(Hub,14786354,77,175) { link(onEvent1,13953331:doData,[]) link(onEvent2,10368454:doWork1,[(102,188)]) } Add(LineBreak,1598498,385,42) { link(Out,13549711:Out,[(427,48)(427,34)]) Primary=[8014450,-224,133] } END_SDK Add(Panel,8610394,105,147) { Width=329 Height=423 Align=5 Color=0 BevelInner=1 } Add(ChildPanel,9362387,168,98) { link(onEvent1,13200607:onAdd,[(217,104)(217,27)]) } BEGIN_SDK Add(EditMulti,12366684,21,21) { EventCount=1 WorkCount=1 Width=531 Height=256 link(doWork1,11375772:doSeparateMT,[(42,27)(42,69)]) } Add(Panel,13472751,126,56) { Left=2 Top=-35 Width=235 Height=12 Color=0 BorderWidth=0 BevelInner=0 BevelWidth=0 Point(doTop) Point(doWidth) Point(doBringToFront) Point(onDblClick) } Add(MT_MultiData,11375772,63,63) { Count=6 link(onData1,13472751:doTop,[]) link(onData2,13472751:doWidth,[]) link(onData3,13472751:doBringToFront,[]) link(onData4,3744433:doText,[(117,90)(117,104)]) link(onData5,3784947:doText,[(111,97)(111,160)]) link(onData6,8903551:doText,[(104,104)(104,216)]) } Add(Label,8903551,126,210) { Left=204 Width=31 Height=12 Align=3 Color=32896 Font=[MS Sans Serif,8,0,65535,1] Caption="" AutoSize=1 Point(onMouseUp) link(onMouseUp,15958650:doWork3,[(186,223)]) } Add(Label,3784947,126,154) { Left=33 Width=171 Height=12 Align=5 Color=32896 Font=[MS Sans Serif,8,0,65535,1] Caption="" Point(onMouseUp) link(onMouseUp,15958650:doWork2,[]) } Add(Timer,9897518,238,168) { Interval=300 Enable=1 AutoStop=1 Point(onStop) link(onStop,14618156:doEvent1,[(285,181)(285,216)]) } Add(Counter,6058509,329,161) { Max=5 } Add(HubEx,15958650,182,154) { link(onEvent,2073897:doEvent1,[]) } Add(If_else,4717620,329,210) { Type=4 Op2=Integer(2) link(onTrue,4290654:doOperation,[]) link(Op1,6058509:Count,[]) } Add(Hub,14618156,294,210) { link(onEvent1,4717620:doCompare,[]) link(onEvent2,6058509:doReset,[(318,223)(318,181)]) } Add(Hub,2073897,203,161) { link(onEvent1,6058509:doNext,[]) link(onEvent2,9897518:doTimer,[]) } Add(Label,3744433,126,98) { Width=33 Height=12 Align=1 Color=32896 Font=[MS Sans Serif,8,0,65535,1] Caption="" AutoSize=1 link(onClick,15958650:doWork1,[(186,104)]) } Add(Math,4290654,385,210) { OpType=1 Op2=1 ResultType=0 link(onResult,12366684:onEvent1,[(488,216)(488,27)]) link(Op1,3744433:Caption,[(391,141)(132,141)]) } END_SDK Add(ChildPanel,12557871,168,147) { } BEGIN_SDK Add(EditMulti,11710259,21,21) { } Add(Panel,11004767,35,105) { Left=2 Top=2 Width=335 Height=20 Align=2 Color=0 BorderWidth=0 BevelInner=0 BevelWidth=0 } Add(ChildPanelEx,14467469,196,112) { } BEGIN_SDK Add(EditMultiEx,7047679,21,21) { } Add(Panel,9132518,35,105) { Left=245 Width=40 Height=19 Align=3 Color=0 Font=[MS Sans Serif,8,0,12632256,1] Caption="Time" BevelInner=1 BevelOuter=2 } END_SDK Add(ChildPanelEx,8523905,140,112) { } BEGIN_SDK Add(EditMultiEx,7047679,21,21) { } Add(Panel,9132518,35,105) { Left=30 Width=265 Height=20 Align=5 Color=0 Font=[MS Sans Serif,8,0,12632256,1] Caption="Name:" BevelInner=1 BevelOuter=2 } END_SDK Add(ChildPanelEx,7683616,245,112) { } BEGIN_SDK Add(EditMultiEx,7047679,21,21) { } Add(Panel,9132518,35,105) { Width=30 Height=20 Align=1 Color=0 Font=[MS Sans Serif,8,0,12632256,1] Caption="№" BevelInner=1 BevelOuter=2 } END_SDK END_SDK END_SDK Add(VBJScript,4914594,98,49) { WorkPoints=#6:doWork| EventPoints=#7:onStart|6:onPath|8:onPlList|6:onStop| Script=#24:Dim strPath, strFilename|14:Dim tmpTime, i|0:|51:Set objShellApp = CreateObject("Shell.Application")|55:Set objFSO = CreateObject("Scripting.FileSystemObject")|1: |25:Sub FindAudioFile(Folder)|33: For Each File In Folder.Files|65: If (LCase(objFSO.GetExtensionName(File.Path))) = "mp3" Then|53: strPath = objFSO.GetParentFolderName(File.Path)|49: strFilename = objFSO.GetFileName(File.Path)|52: Set objFolder = objShellApp.NameSpace(strPath)|52: Set objItem = objFolder.ParseName(strFilename)|0:|51: tmpTime = objFolder.GetDetailsOf(objItem, 21)|89: sys.onPlList i & ";" &objFolder.GetDetailsOf(objItem, 0) & "; " & Right(tmpTime, 5)|26: sys.onPath File.Path|23: i = i + 1 |17: End If |9: Next |46: For Each SubFolder In Folder.SubFolders |34: FindAudioFile SubFolder |9: Next |7:End Sub|0:|23:Sub doWork (Data,Index)|27: i = 1 : sys.onStart nil|39: Set Folder = objFSO.GetFolder(Data)|24: FindAudioFile Folder|16: sys.onStop 1|7:End Sub| UseName=0 link(onStart,387512:doWork1,[]) link(onPath,387512:doWork2,[]) link(onPlList,387512:doWork3,[]) link(onStop,12837547:doCreate,[(160,76)(160,160)]) } Add(VBJScript,12837547,189,147) { WorkPoints=#8:doResize|8:doCreate|5:doKey|10:doPosition|6:doPath|7:doIndex| EventPoints=#9:onVisible|6:onPath|10:onPosition|5:onMax|8:onCreate|8:onSelect|9:onDataStr|7:onFocus| DataPoints=#9:intHeight|9:arrPlList|7:arrPath|8:Position| Script=#43:Dim CountDt, HeightSize, arrPlList, arrPath|12:Dim intFocus|0:|24:Sub doWork (Data, Index)|17:Select Case Index|18: Case "doResize"|23: On Error Resume Next|47: CountDt = Fix((sys.intHeight - 21) / 14)|30: For i = 0 to CountDt-1|23: sys.onSelect i|54: sys.onDataStr arrPlList.get(sys.Position + i)|12: Next|30: For i = CountDt to 100|46: sys.onSelect i ' затираем|43: sys.onDataStr " ; ; " ' старые|12: Next|45: sys.onMax arrPlList.Count - (CountDt)|59: sys.onSelect intFocus : sys.onFocus nil |8: |19: Case "doCreate"|48: CountDt = Fix((sys.intHeight - 22) / 14)|56: For i = 0 to 100 ' максимальное кол-во в списке|26: sys.onCreate i |32: Next |40: Set arrPlList = sys.arrPlList |33: Set arrPath = sys.arrPath|34: sys.onMax arrPlList.Count |30: For i = 0 to CountDt-1|23: sys.onSelect i|39: sys.onDataStr arrPlList.get(i)|12: Next|23: sys.onVisible 1|55: intFocus = 0 : sys.onSelect 0 : sys.onFocus nil|0:|16: Case "doKey"|23: Select Case Data|50: Case 38, 37, 120 ' - назад|29: If intFocus > 0 Then|75: intFocus = intFocus - 1 : sys.onSelect intFocus : sys.onFocus nil|14: Else|35: If sys.Position > 0 Then|78: sys.onPosition sys.Position - 1 : sys.onSelect 0 : sys.onFocus nil|17: End If|15: End If|0:|51: Case 39, 40, -120 ' - вперёд|39: If intFocus < CountDt - 1 Then|75: intFocus = intFocus + 1 : sys.onSelect intFocus : sys.onFocus nil|15: Else |86: sys.onPosition sys.Position + 1 : sys.onSelect CountDt - 1 : sys.onFocus nil|15: End If|9: |72: Case 34 sys.onPosition sys.Position + CountDt ' стр. вперёд|57: sys.onSelect intFocus : sys.onFocus nil|18: |32: Case 33 ' стр. назад|52: If sys.Position - CountDt > CountDt Then|57: sys.onPosition sys.Position - CountDt |55: sys.onSelect intFocus : sys.onFocus nil|19: Else |36: sys.onPosition 0 |72: sys.onSelect intFocus : sys.onFocus nil |18: End If|18: |73: Case 36 sys.onPosition 0 ' начало списка |65: sys.onSelect 0 : sys.onFocus nil : intFocus = 0|18: |82: Case 35 sys.onPosition arrPlList.Count - (CountDt) ' конец списка |58: sys.onSelect CountDt-1 : sys.onFocus nil|38: intFocus = CountDt-1|18: |79: Case 13 sys.onPath arrPath.get (sys.Position + intFocus) ' Enter |18: |18: End Select |21: Case "doPosition"|44: sys.onMax arrPlList.Count - (CountDt)|30: For i = 0 to CountDt-1|23: sys.onSelect i|54: sys.onDataStr arrPlList.get(i + sys.Position)|18: Next |48: sys.onSelect intFocus : sys.onFocus nil |4: |46: Case "doPath" sys.onPath arrPath.get(Data)|4: |42: Case "doIndex" intFocus = Cint(Data) |14: |11: |10:End Select|7:End Sub| UseName=0 link(onVisible,13188709:doVisible,[(233,153)(233,129)(177,129)(177,104)]) link(onPath,8772874:onEvent1,[(328,160)(328,27)]) link(onPosition,12788442:doWork2,[]) link(onMax,15627537:doValue,[]) link(onCreate,7618098:Create,[(258,181)(258,237)]) link(onSelect,7618098:doSplit,[(250,188)(250,244)]) link(onDataStr,7618098:doSplit1,[(241,195)(241,251)]) link(onFocus,7618098:doFocus,[(233,202)(233,258)]) link(intHeight,13188709:Height,[]) link(arrPlList,387512:Var1,[]) link(arrPath,387512:Var2,[]) link(Position,510209:Position,[(216,138)(360,138)(360,199)(377,199)]) } Add(MultiElement,387512,196,49) { } BEGIN_SDK Add(EditMulti,10674276,21,21) { WorkCount=3 VarCount=2 Height=130 link(doWork1,6429873:doEvent1,[(39,27)(39,62)]) link(doWork2,15091731:doAdd,[(160,34)(160,55)]) link(doWork3,15297933:doAdd,[(126,41)(126,76)]) link(Var1,15297933:Array,[(27,133)(160,133)]) link(Var2,15091731:Array,[(34,138)(209,138)]) } Add(StrList,15091731,189,49) { } Add(Hub,6429873,56,56) { link(onEvent1,15091731:doClear,[]) link(onEvent2,15297933:doClear,[(91,69)(91,83)]) } Add(StrList,15297933,140,70) { } END_SDK Add(Timer,6651658,245,98) { Interval=10 Enable=1 AutoStop=1 OverCall=1 link(onTimer,13904972:In,[]) } Add(LineBreak,1902035,91,147) { link(Out,12837547:doResize,[]) Primary=[13904972,203,-49] } Add(ScrollBarEx,510209,371,161) { Left=329 Width=16 Height=423 Align=3 Color=0 LightColor=8421504 DarkColor=8421504 FaceColor=0 ArrowColor=65535 Kind=1 Point(doMax) Point(Height) Point(MouseY) Point(onMouseUp) link(onPosition,12837547:doPosition,[(431,167)(431,288)(160,288)(160,174)]) link(onMouseUp,13634621:doCalc,[(413,174)(413,220)(359,220)(359,237)]) } Add(Memory,15627537,273,168) { link(onData,510209:doMax,[]) } Add(HubEx,12788442,343,154) { link(onEvent,510209:doPosition,[]) } Add(MathParse,13634621,371,231) { DataCount=3 MathStr="(%3 - 9) / ((%2 - 18) / %1)" ResultType=0 link(onResult,12788442:doWork1,[(423,237)(423,150)(347,150)]) link(X1,15627537:Value,[(377,209)(279,209)]) link(X2,510209:Height,[]) link(X3,510209:MouseY,[]) } END_SDK END_SDK
------------ Дoбавленo в 21.25:
кстати при добавлении клика по скролбару получили новую багу, на этот счёт придётся делать дополнительную проверку, короче геморой это всё полный я наигрался пока, возвращаюсь к работе. Когда HiAsm начнёт работать со скинами тогда можно ещё продолжить, пока могу предложить увидеть разницу в этом плане, моя заготовка в Delphi для новой проги, 3 скина из 55 зацепил для пробы http://slil.ru/28344409
|