Make(delphi) ver(4.04 build 185) Add(TrackBarRush,268062,756,196) { Left=369 Top=28 Width=62 Height=272 Visible=1 Name="TBR" TickColor=-16777201 Kind=1 DotsCount=3 Point(doMin) Point(doMax) Point(onMouseDown) Point(doThumbWidth) Point(Height) Point(Width) Point(doVisible) link(onPosition,5926494:doWork1,[(802,202)]) link(onMouseDown,4393585:doEvent1,[]) } Add(MainForm,2953706,56,182) { Width=436 Height=395 Position=1 link(onCreate,1793119:doEvent1,[]) } Add(ListBox,6199211,371,126) { Left=10 Top=10 Width=375 Height=310 Name="lbx" Point(PHandle) Point(onKeyUp) Point(onKeyDown) link(onChange,3849521:doWork1,[(410,132)(410,118)(319,118)]) } Add(InlineCode,8771271,392,203) { WorkPoints=#8:sDisable|11:sScrollInfo|5:UPSCR|7:DOWNSCR|9:PAGEUPSCR|11:PAGEDOWNSCR|11:POSITIONSCR| EventPoints=#10:onPosition|12:onScrollInfo| DataPoints=#7:PHandle| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug, Windows, Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|24: sControl: PControl;|21: si: TScrollInfo;|9: public|14: onPosition,|19: onScrollInfo,|25: PHandle: THI_Event;|54: procedure sDisable(var _Data:TData; Index:word);|63: procedure sScrollInfo(var _Data:TData; Index:word); |51: procedure UPSCR(var _Data:TData; Index:word);|53: procedure DOWNSCR(var _Data:TData; Index:word);|55: procedure PAGEUPSCR(var _Data:TData; Index:word);|57: procedure PAGEDOWNSCR(var _Data:TData; Index:word);|67: procedure POSITIONSCR(var _Data:TData; Index:word); |5: end;|0:|14:implementation|0:|81:function WndProcSCR(Sender: PControl; var Msg: TMsg; var Rslt: Integer): Boolean;|3:var|22: fClass: THiAsmClass;|5:begin|18: Result := false;|36: fClass := THiAsmClass(Sender.Tag);|16: with fClass do|9: begin |23: case Msg.message of|20: WM_NCCALCSIZE:|53: ShowScrollBar(Sender.Handle, SB_VERT, false);|39: WM_KEYUP, WM_KEYDOWN, WM_MOUSEWHEEL:|89: _hi_onEvent(fClass.onPosition, SendMessage(Sender.Handle, LB_GETTOPINDEX, 0, 0));|8: end;|8: end; |4:end;|0:|30:procedure THiAsmUnit.sDisable;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|40: if not Assigned(sControl) then exit; |33: sControl.Tag := Cardinal(Self);|34: sControl.AttachProc(WndProcSCR);|49: ShowScrollBar(sControl.Handle, SB_VERT, false);|4:end;|0:|33:procedure THiAsmUnit.sScrollInfo;|3:var|12: dt: TData;|11: mt:PMT; |5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|40: if not Assigned(sControl) then exit; |22: si.fMask := SIF_ALL;|46: GetScrollInfo(sControl.Handle, SB_VERT, si);|25: dtInteger(dt, si.nMin);|20: mt := mt_make(dt);|22: mt_int(mt, si.nMax);|23: mt_int(mt, si.nPage);|22: mt_int(mt, si.nPos);|33: _hi_OnEvent_(onScrollInfo, dt);|14: mt_free(mt);|4:end;|0:|27:procedure THiAsmUnit.UPSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|57: SendMessage(sControl.Handle, WM_VSCROLL, SB_LINEUP, 0);|22: sControl.Invalidate;|24: sScrollInfo(_Data, 0);|4:end;|0:|29:procedure THiAsmUnit.DOWNSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|59: SendMessage(sControl.Handle, WM_VSCROLL, SB_LINEDOWN, 0);|22: sControl.Invalidate;|24: sScrollInfo(_Data, 0);|4:end;|0:|31:procedure THiAsmUnit.PAGEUPSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|57: SendMessage(sControl.Handle, WM_VSCROLL, SB_PAGEUP, 0);|22: sControl.Invalidate;|26: sScrollInfo(_Data, 0); |4:end;|0:|33:procedure THiAsmUnit.PAGEDOWNSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|59: SendMessage(sControl.Handle, WM_VSCROLL, SB_PAGEDOWN, 0);|22: sControl.Invalidate;|26: sScrollInfo(_Data, 0); |4:end;|0:|33:procedure THiAsmUnit.POSITIONSCR;|5:begin|48: sControl := PControl(ToIntegerEvent(PHandle));|38: if not Assigned(sControl) then exit;|23: sControl.BeginUpdate;|22: si.fMask := SIF_ALL;|46: GetScrollInfo(sControl.Handle, SB_VERT, si);|30: si.nPos := ToInteger(_Data);|54: SetScrollInfo(sControl.Handle, SB_VERT, si, true); |85: SendMessage(sControl.Handle, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, si.nPos), 0);|61:// SendMessage(sControl.Handle, LB_SETTOPINDEX, si.nPos, 0);|21: sControl.EndUpdate;|5:end; |17: |4:end.| link(onPosition,14433224:doWork2,[(431,209)(431,202)]) link(onScrollInfo,3914989:doEvent1,[]) link(PHandle,6199211:PHandle,[]) } Add(Hub,1793119,105,196) { OutCount=4 link(onEvent1,3849521:doWork2,[]) link(onEvent2,8771271:sDisable,[]) link(onEvent3,3525883:doData,[(151,216)(151,286)]) link(onEvent4,12655402:doData,[(144,223)(144,328)]) } Add(ButtonRush,9753586,280,280) { Left=390 Top=10 Width=20 Height=20 Font=[Wingdings 3,8,0,0,2] Caption="" Glyphs=[] Point(doCaption) Point(doVisible) link(onClick,8771271:UPSCR,[(354,286)(354,223)]) } Add(DoData,3525883,161,280) { Data=Integer(129) link(onEventData,8290152:doConvert,[]) } Add(Convertor,8290152,210,280) { Mode=4 link(onResult,9753586:doCaption,[]) } Add(ButtonRush,21397,280,322) { Left=390 Top=299 Width=20 Height=20 Font=[Wingdings 3,8,0,0,2] Caption="" Glyphs=[] Point(doCaption) Point(doVisible) link(onClick,8771271:DOWNSCR,[(361,328)(361,230)]) } Add(DoData,12655402,161,322) { Data=Integer(130) link(onEventData,2096792:doConvert,[]) } Add(Convertor,2096792,210,322) { Mode=4 link(onResult,21397:doCaption,[]) } Add(MT_MultiData,5353039,483,210) { Count=1 Point(RemaindData) link(onData1,268062:doMin,[]) } Add(MathParse,5460482,483,315) { MathStr="%1 - %2 + 1" link(onResult,268062:doMax,[(522,321)(522,223)]) link(X1,6294834:Var2,[]) link(X2,7522774:Var2,[]) } Add(Hub,3914989,434,210) { OutCount=4 link(onEvent1,5353039:doSeparateMT,[]) link(onEvent2,4585351:doValue,[(473,223)(473,265)]) link(onEvent3,5460482:doCalc,[(466,230)(466,321)]) link(onEvent4,1201366:doCompare,[(459,237)(459,356)]) } Add(MT_MultiMem,4585351,483,259) { Point(Data) link(onData,3179209:doSeparateMT,[]) link(Data,5353039:RemaindData,[]) } Add(MT_MultiData,3179209,539,259) { From=2 Count=1 link(onData1,14433224:doWork3,[(578,265)]) } Add(HubEx,14433224,574,196) { link(onEvent,268062:doPosition,[]) } Add(GetDataEx,6294834,483,301) { link(Data,4585351:Value1,[]) } Add(GetDataEx,7522774,490,294) { link(Data,4585351:Value2,[]) } Add(MathParse,4910229,630,350) { DataCount=3 MathStr="max(10, (%3 * %2) / %1)" ResultType=0 link(onResult,268062:doThumbWidth,[(676,356)(676,230)]) link(X1,7543427:Var3,[(636,306)]) link(X2,7522774:Var3,[(643,299)]) link(X3,268062:Height,[(650,257)(769,257)]) } Add(If_else,1201366,546,350) { Type=2 Op2=Integer(0) link(onTrue,16741202:doEvent1,[]) link(onFalse,2799933:doWork1,[(585,363)(585,398)]) link(Op1,7543427:Var2,[]) } Add(ChanelToIndex,2799933,630,392) { link(onIndex,13304512:doEvent1,[]) } Add(Hub,16741202,595,350) { link(onEvent1,4910229:doCalc,[]) link(onEvent2,2799933:doWork2,[(620,363)(620,405)]) } Add(Hub,13304512,679,392) { OutCount=3 link(onEvent1,268062:doVisible,[(704,398)(704,237)]) link(onEvent2,9753586:doVisible,[(711,405)(711,468)(263,468)(263,293)]) link(onEvent3,21397:doVisible,[(704,412)(704,440)(270,440)(270,335)]) } Add(Button,7427802,182,154) { Left=180 Top=330 TabOrder=-1 Caption="Load" link(onClick,16465050:doExecute,[]) } Add(ODialog,16465050,231,154) { Filter="*.txt|*.txt" link(onExecute,6199211:doLoad,[]) } Add(HubEx,3849521,315,196) { Angle=1 link(onEvent,8771271:sScrollInfo,[(319,216)]) } Add(Memory,11768701,756,287) { Point(Data) link(onData,8771271:POSITIONSCR,[(795,293)(795,433)(382,433)(382,251)]) link(Data,7032217:Var2,[]) } Add(If_else,5769764,854,210) { Type=1 link(onTrue,8771271:PAGEUPSCR,[(900,216)(900,461)(368,461)(368,237)]) link(onFalse,8771271:PAGEDOWNSCR,[(893,223)(893,454)(375,454)(375,244)]) link(Op1,7032217:Var3,[(860,194)(811,194)(811,264)]) link(Op2,11768701:Value,[(867,194)(909,194)(909,327)(762,327)]) } Add(GetDataEx,7032217,756,259) { link(Data,268062:Position,[]) } Add(HubEx,5926494,798,266) { Angle=2 link(onEvent,11768701:doValue,[(746,272)(746,293)]) } Add(GetDataEx,7543427,546,301) { Angle=3 link(Data,6294834:Var3,[]) } Add(Hub,4393585,819,203) { OutCount=4 link(onEvent1,16567682:doBeginUpdate,[(844,209)(844,202)]) link(onEvent2,5769764:doCompare,[]) link(onEvent3,5926494:doWork2,[(844,223)(844,272)]) link(onEvent4,16567682:doEndUpdate,[(914,230)(914,209)]) } Add(RedrawManager,16567682,931,189) { ControlManager="TBR" Point(doBeginUpdate) Point(doEndUpdate) }