vhLISTE ;Lijst edit hulproutines [ 01/05/2000 4:59 PM ] Q ; SWAP(L,sSwap) Set %SC=0 If sSwap="UP" Set sSwap=-1 If sSwap="DO" Set sSwap=1 If sSwap<0,L("SELECT")+sSwap<1 Quit If 'sSwap Quit If sSwap>0,L("SELECT")+sSwap>L("MAX") Quit Do LSWAP(L("SELECT"),(L("SELECT")+sSwap),$P(L("F"),"`")) Do MOVE^vhLIST(.L,$S(sSwap<0:"UP",1:"DO"),1) Set %SC=1 Quit ; NIEUW(L,sValue) Set L("MAX")=L("MAX")+1 Do LNIEUW(L("MAX"),$P(L("F"),"`"),$G(sValue)) If L("MAX")=1 Do ENABLE^vhLIST(.L,1,1) Quit If L("MAX")-1=L("SELECT") Do .Do MOVE^vhLIST(.L,"DO",1) Else Do MOVE^vhLIST(.L,"EN",1) If $G(sValue)="&S" Do .New D,sSelect,sOffset,sMax,sOldSel,sTop,sLeft,sBot,sRight,sLen .New sDefFmt,sFetch,sSelAttr,sBGAttr,sMemAttr .Do INITPAR^vhLIST .Do WSEPAR^vhLIST2(L("MAX"),"",1) Quit ; DUPLI(L,sWhere) ; sWhere : 0 of Leeg = Nieuw, -1 = Before, 1 = After New sValue Set sValue=@$P(L("F"),"`")@(L("SELECT")) If 'sValue Do NIEUW(.L,sValue) Quit Do INSERT(.L,sValue,sWhere) Quit ; INSERT(L,sValue,sWhere) ;sWhere : -1, 0 of Leeg = Before , 1 = After New D,sSelect,sOffset,sMax,sOldSel,sTop,sLeft,sBot,sRight,sLen New sDefFmt,sFetch,sSelAtr If L("SELECT")=0!(sWhere=1&(L("SELECT")=L("MAX"))) Do NIEUW(.L,sValue) Quit Do LINSERT(L("SELECT")+$S(sWhere=1:1,1:0),L("MAX"),$P(L("F"),"`"),$G(sValue)) Do INITPAR^vhLIST,CALCSEL^vhLIST,INITFMT^vhLIST Do DISABLE^vhLIST(.L) Set sFrom=sSelect-sOffset+$S(sWhere=1:1,1:0) If sFromL("MAX") Set L("SELECT")=L("MAX") Do ENABLE^vhLIST(.L,sSelect) Quit ; COPY(L) Merge sClipB=@$P(L("F"),"`")@(L("SELECT")) Quit ; PASTE(L,sWhere) ; sWhere : 0 of Leeg = Nieuw, -1 = Before, 1 = After Do INSERT(.L,sClipB,sWhere) Kill sClipB Quit ; LSWAP(FromNr,ToNr,Ref) Kill @Ref@("Z~Z~Z~") Merge @Ref@("Z~Z~Z~")=@Ref@(ToNr) Kill @Ref@(ToNr) Merge @Ref@(ToNr)=@Ref@(FromNr) Kill @Ref@(FromNr) Merge @Ref@(FromNr)=@Ref@("Z~Z~Z~") Kill @Ref@("Z~Z~Z~") Quit ; LNIEUW(LineNr,Ref,sValue) Set @Ref@(LineNr)=$G(sValue) Quit ; LDUPLI(FromNr,ToNr,Ref) Merge @Ref@(ToNr)=@Ref@(FromNr) Quit ; LINSERT(LineNr,MaxNr,Ref,sValue) New LNr For LNr=MaxNr:-1:LineNr Do .Merge @Ref@(LNr+1)=@Ref@(LNr) .Kill @Ref@(LNr) Set @Ref@(LineNr)=$G(sValue) Quit ; LDELETE(LineNr,MaxNr,Ref) Kill @Ref@(LineNr) For LineNr=LineNr+1:1:MaxNr Do .Merge @Ref@(LineNr-1)=@Ref@(LineNr) .Kill @Ref@(LineNr) Quit ;