vhMenuPop ;Verwerking Menu [ 10/25/2001 9:19 AM ] ;Input XX = te selekteren item _ auto selekt (vb 1 - A* - z) ; Y = zie cyber cuypop ($ = volgend char als selektie) ;Local Menu(XX) = ItemNaam\LijnNr\KolomNr\CharNr voor alfa selektie\Selekteerbaar (1 = neen)\Shortcut ; YB = tijdelijke bewaring menubalk ;Output XX = geselekteerde menuitem New MenuB,BarIt,SelIt,Enter,Type,K,R,YB,S,T,sPage,ZMode Do STORE^vhTERMINA() Set sPage=sScr("PAGE") Set ZMode=$ZMode Use 0:(:"+U") ; uppercase Use 0:(:"+S") ; silent (no feedback) Write @FCH MenuSel Set SelIt=XX ;Selektie menu volgens type Set REFRESH="1:1" Set XX=$P(Y,"\",6) For R=1:1:$G(Y(0)) Set $P(Y(R),"`",2)=$$TRANS^vhTERMINA($P(Y(R),"`",2)) If '$L(XX) For R=1:1:$G(Y(0)) Set XX=XX_Y(R) Set:RsScr("ROW") sTop=sScr("ROW")-Cnt-2 Set %R=sTop-1 Set HAlign=$P(sPos,";",4) Set:HAlign="" HAlign=$S($P(sPos,";",2):"L",1:"C") Set %C=$P(sPos,";",2) Set:'%C %C=sScr("KOL")\2 Do MenuLst Goto Quit Quit Use 0:(:$S($P(ZMode,"\")["U":"+",1:"-")_"U":$C(13)) ; herzetten uppercase Use 0:(:"-S") Write @FCS Clean ;Opkuis scherm (clear screen of refresh) Do REFRESH^vhTERMINA(1,$P(REFRESH,":",2)) Quit MenuBar New Menu,S,T ;Verwerking menubar Set YB=Y For R=0:1 Quit:'$D(Y(R)) Set YB(R)=Y(R) For R=1:1:$L(XX,",") Do .Do PrepIt .Set $P(Menu(R),"\",2,3)="1\"_($L($P(XX,",",1,R))-$L($P(XX,",",R))+R+1) .Set MenuB(R)=Menu(R) If $D(K),"\67\68\"[("\"_$P(K,",",3)_"\") Set XX=$P(BarIt,"\") Do Move Goto MB1 If $D(K),K=13,$D(Enter),Enter="" Set XX=$P(BarIt,"\") Kill BarIt Goto MB1 Kill BarIt Set (%C,%R)=1,FP=%R*100+%C Write @F,@FMTI For R=1:1:80 Write " " Write @F8 Do SelIt,Menu If $O(Menu($O(Menu(""))))="",SelIt'["*" Set SelIt=SelIt_"*" Set XX=$E(SelIt) MB1 Do MenuIt If K'=27,$P(K,",",2)'=13 Set BarIt=XX_"\"_Menu(XX) Set:$$FuncKey(K) XX=K_"\"_(Type["M")_"\"_XX Write @FMTi,@FMTb,@FMTk Quit MenuLst New Menu,X,L1,L2 ;Verwerking menulijst Set (L1,L2)=0,T=$P($P(Y,"\",4),"*"),T=$P(T,"$")_$P("T","$",2) For R=1:1:$L(XX,",") Do .Do PrepIt .Set $P(Menu(R),"\",2,3)=(%R+R+1)_"\"_%C .Set X=$P(XX,",",R) .Set:L1<$L($P(X,"`")) L1=$L($P(X,"`")) Set:L2<$L($P(X,"`",2)) L2=$L($P(X,"`",2)) Set:L2 L1=L1+2 If Type="S" Do .Set:HAlign="C" %C=%C-(L1+L2\2)-1 .Set:HAlign="B"!(HAlign="R") %C=%C-L1-L2-1 .Set:%C<2 %C=2 Set:%C+L1+L2+1>sScr("KOL") %C=sScr("KOL")-L1-L2 .For R=1:1:$L(XX,",") Set $P(Menu(R),"\",3)=%C If Type'="S",%C+L1+L2+1>80 Do .Set T=$P($P(BarIt,"\",2),"*"),T=$P(T,"$")_$P("T","$",2) .Set %C=%C+$L(T)-L1-L2 For R=1:1:$L(XX,",") Set $P(Menu(R),"\",3)=%C Set %C=%C-1,%R=%R+R+2 Do Rect(%R-R-1,%C,%R,%C+L1+L2+1) Do SelIt,Menu Set XX=$E(SelIt) Do MenuIt Set:$$FuncKey(K) XX=K_"\"_(Type["M")_"\"_XX Write @FMTi,@FMTb,@FMTk Quit PrepIt New X ;Opbouw local Menu Set X=$P(XX,",",R),$P(Menu(R),"\",6)=$P(X,"`",2),X=$P(X,"`") If X'["$" Set X="$"_X Set $P(Menu(R),"\",4)=$L($P(X,"$"))+1 Set $P(Menu(R),"\",5)=$S($E(X,$L(X))="*":1,$E(X,$L(X)-1,$L(X))="&S":2,1:0) Set X=$P(X,"$")_$P(X,"$",2) Set X=$S($P(Menu(R),"\",5):$E(X,1,$L(X)-1),1:X) If $P(Menu(R),"\",5) S X=$P(X,"$")_$P(X,"$",2),$P(Menu(R),"\",4)=0 Set $P(Menu(R),"\")=X Quit Menu For XX=1:1 Quit:'$D(Menu(XX)) Do ;Tonen van de menu .Do @$S(XX=SelIt:"Enable",1:$S($P(Menu(XX),"\",5)=2:"Separate",1:"Disable")) .If %R<$P(REFRESH,":") Set $P(REFRESH,":")=%R .If %R>$P(REFRESH,":",2) Set $P(REFRESH,":",2)=%R Quit SelIt If $D(Menu(+SelIt)),$P(Menu(+SelIt),"\",5) Set SelIt=SelIt+1 Goto SelIt ;Bepalen te selekteren item If $D(Menu(+SelIt)) Quit Set K=$E(SelIt) If $A(K)>96,$A(K)<123 Set SelIt=$C($A(K)-32)_$E(SelIt,2,99) For XX=1:1 Quit:'$D(Menu(XX))!(+SelIt) Do .Set K=$E($P(Menu(XX),"\"),$P(Menu(XX),"\",4)) .If $A(K)>96,$A(K)<123 Set K=$C($A(K)-32) .If '$P(Menu(XX),"\",5),K=$E(SelIt) Set SelIt=XX_$E(SelIt,2,99) If '$D(Menu(+SelIt)) Set SelIt=1 SelIt1 If $D(Menu(+SelIt)),$P(Menu(+SelIt),"\",5) Set SelIt=SelIt+1 Goto SelIt1 Quit MenuIt Set %R=$P(Menu(XX),"\",2),%C=$P(Menu(XX),"\",3) ;Verwerking menulijn Set FP=%R*100+%C+$P(Menu(XX),"\",4)-1 Write @F Write @FCS Do Read Write @FCH If Type["M","\65\66\67\68\"[("\"_$P(K,",",3)_"\") Do Move Goto MenuIt If "\65\66\"[("\"_$P(K,",",3)_"\") Do Move Goto MenuIt ;If K>48,K<58 Do Num Goto MenuIt:K="" Quit If K>96,K<123 Set K=K-32 Quit:$$FuncKey(K) If K'=13,$P(K,",")'=27,$C(K)'?.C Do Alfa Goto MenuIt:K="" Quit If K'=13,$P(K,",")'=27 Goto MenuIt If K=27 Set XX="" Quit Read If Type["M",$D(BarIt) Set K=13 Quit ;Bar -> auto select item If SelIt["*" Set K=13 Quit ;Auto select item Read *K If K=$A(" ") Set K=13 If K=13 Set Enter=K If K=$A("-")!(K=$A(".")) Set K=27 Goto:K'=27 R2 Set K=$$TRANSZB^vhINP If Type["S","\20\19\"[("\"_K_"\") Set K=17+(K=19) If Type["M","\17\18\"[("\"_K_"\") Set (K,Enter)=13 Goto R2 If "\17\18\19\20\"'[("\"_K_"\") Goto R2 Set K="27,91,"_(K+48) R2 Quit Move Set K=$P(K,",",3) ;Cursorbesturing If K=65!(K=68) do Up If K=66!(K=67) do Down Quit MoveBar Do REFRESH^vhTERMINA(2,$P(REFRESH,":",2)) Set sScr("PAGE")=sPage Set Enter="" Kill Y Set Y=YB For R=0:1 Quit:'$D(YB(R)) Set Y(R)=YB(R) Quit Alfa New Quit ;Opzoeken item via alfabetische input Do Disable For R=1:1 Do Quit:$D(Quit) .If '$D(Menu(R)) Set Quit=0 Quit .Set S=$$UPCASE^vhRtn1($P(Menu(R),"\")) .If $E(S,$P(Menu(R),"\",4))=$C(K),'$P(Menu(R),"\",5) Set XX=R,Quit=1 If 'Quit Do .Kill Quit .Set S=$C(K) .For R=1:1 Do Quit:$D(Quit) ..If '$D(Menu(R)) Set Quit=0 Quit ..If $L(S),S=$P(Menu(R),"\",6),'$P(Menu(R),"\",5) Set XX=R,Quit=1 If 'Quit Do .Kill Quit .For R=1:1 Do Quit:$D(Quit) ..If '$D(MenuB(R)) Set Quit=0 Quit ..Set S=$$UPCASE^vhRtn1($P(MenuB(R),"\")) ..If $E(S,$P(MenuB(R),"\",4))=$C(K),'$P(MenuB(R),"\",5) Do ...Quit:R=$P(BarIt,"\") ...Set XX=R,Quit=1 ...Kill Y,Menu ...Merge Y=YB,Menu=MenuB ...Set Type=$P(Y,"\",2),XX=$P(BarIt,"\") ...Do Disable,REFRESH^vhTERMINA(2,$P(REFRESH,":",2)) Set sScr("PAGE")=sPage ...Set XX=R,BarIt=XX_"\"_Menu(R) Set:'Quit K="" Do Enable Quit Num Do Disable ;Opzoeken item via numerische input Set R=$C(K) If '$D(Menu(R)) Set K="" Quit If $P(Menu(R),"\",5) Set K="" Quit Set XX=R Do Enable If '$D(Menu(R_0)) Quit Read *R:1 If R=-1 Quit Set K=K_","_R Xecute "Set R=$C("_K_")" If '$D(Menu(R)) Set K="" Quit If $P(Menu(R),"\",5) Set K="" Quit Set XX=R Do Enable Quit Enable Set %R=$P(Menu(XX),"\",2),%C=$P(Menu(XX),"\",3) ;Enable menuitem Set FP=%R*100+%C Write @F,@FMTi,@FMTb,@FMTk,$P(Menu(XX),"\") If Type'["M" Write $J("",L1-$L($P(Menu(XX),"\"))),$J($P(Menu(XX),"\",6),L2) Set %C=%C+$P(Menu(XX),"\",4)-1 Write @F Quit Disable Set %R=$P(Menu(XX),"\",2),%C=$P(Menu(XX),"\",3) ;Disable menuitem Set FP=%R*100+%C Write @F,@FMTI,$E($P(Menu(XX),"\"),1,$P(Menu(XX),"\",4)-1) Write @FMTB,$E($P(Menu(XX),"\"),$P(Menu(XX),"\",4)),@FMTb Write $E($P(Menu(XX),"\"),$P(Menu(XX),"\",4)+1,99) If Type'["M" Write $J("",L1-$L($P(Menu(XX),"\"))),$J($P(Menu(XX),"\",6),L2) Quit Separate Set %R=$P(Menu(XX),"\",2),%C=$P(Menu(XX),"\",3) ;Separate menuitem Write @FMTI Do HLIJN^vhTERMINA(%R,%C-1,%C+L1+L2,"M","M",0) Quit Up Do Disable ;Cursor up Prev Set XX=$ZP(Menu(XX)) If XX="" Goto Prev If $P(Menu(XX),"\",5) Goto Prev Do Enable Quit Down Do Disable ;Cursor down Next Set XX=$O(Menu(XX)) If XX="" Goto Next If $P(Menu(XX),"\",5) Goto Next Do Enable Quit Rect(T,L,B,R) Set %R=B,%C=L If %R<$P(REFRESH,":") Set $P(REFRESH,":")=%R If %R>$P(REFRESH,":",2) Set $P(REFRESH,":",2)=%R Do RECT^vhTERMINA(T,L,B,R) Quit FuncKey(K) Quit "\32\33\34\35\37\38\39\40\41\43\44\45\46\48\49\51\52\53\54\59\60\61\62\63\0\1\2\3\4\5\6\7\8\9\"[("\"_K_"\")