conversie van de storage value naar een display value {Set Value=xxxToDisplay(Value)} onPaint -> voordat de control wordt gedisplayed {Do xxxOnPaint}]]> 1 TControl 0 %Integer %String Cursor %Integer Cursor die de actieve paragraaf aanduidt %Integer Cursor met betrekking tot de abosolute rij positie in ..Rows, voor de display moet er de Offset nog afgetrokken worden %Integer Cursor met betrekking tot de kolom positie in ..Rows %Integer TContextMenu %String Als verschillende lijnen verschillende breedte hebben (bv. Kortekst eerste 26, de rest 44) met ";" gescheiden %String %String $$$moAllowTab = T = Indent allow - tijdelijke insprong $$$moShowParaSign = S = Show paragraaf sign $$$moAllowBold = B = Bold allow $$$moAllowUnderline = U = Underline allow $$$moAllowParameter = P = ParameterMarker allow %String %String 1 %String 1 %String 1 Bevat de memo-inhoud adhv CR/LF %String OldText prop voor IsChanged value in te vullen %String %Boolean 1 Wanneer de memo-inhoud wordt ingelezen/weggeschreven moet volgende string instaan voor indeling van de paragraphs %String $C(13,10) %String $$$fsEdit 1 %String ;HO;WIS;EN;LE;RI;UP;NP;PP;DO;BSP;DEL;EOL;ENTER; Events Method OnChanged(Sender As %String) Wordt bij elke keypres opgeroepen %String Method OnDisplay(Sender As %String, Value As %String) Omvormen van Value naar de display value Wordt elke keer opgeroepen bij OnPaint %String Method OnEdit(Sender As %String, Value As %String) Omvormen van Value naar een editdisplay value Wordt elke keer opgeroepen als het veld de focus krijgt en de EditWaarde wordt getoond, deze kan verschillend zijn van de DisplayWaarde %String Method OnValidate(Sender As %String, Value As %String) Omvormen van Value naar een storage value Wordt elke keer opgeroepen als het veld de focus verliest en veranderd is %String Method OnInsertMenu(Sender As %String) Aanvullen of elementen wissen van het zojuist opgebouwde InsertMenu Wordt elke keer opgeroepen als de menu aangevraagd wordt %String Op het scherm schrijven van de gewijzigde lijnen FontSelected:%String Markeren van alle lijnen om herschreven te worden. Schrijven van een lijn sPos,sIndent,sParMark,sString Wrappen van de paragraaf tekst naar tekst per rij. sL Do ; Opzoeken van woordsplitsing . . . Set sI=0 . . . For Set sMem=$F(sTT," ",sI+1) Set:'sMem sMem=$L(sTT) Quit:sMem+sIndent>sL Set sI=sMem-1 . . . Set:'sI sI=sL-sIndent . . Set ..Rows=..Rows+1,sTxt="`"_sJ_"`"_sI_"`"_(sIndent-$S(sIndent>0&($E(sTT)=$C(9)):1,1:0))_"`"_$TR($E(sTT,1,sI),$C(9,160)," ") . . If ..FocusMode'=$$$fmFocused Do //Alles steeds hertekenen indien niet in focusmode . . . Set $P(sTxt,"`",1)=1,sModCnt=sModCnt+1 . . Else If $P(sTxt,"`",1,5)'=$P($G(..Rows(..Rows)),"`",1,5) Do . . . Set $P(sTxt,"`",1)=1,sModCnt=sModCnt+1 . . Set ..Rows(..Rows)=sTxt . . If sCharCnt+sI'<..CursorChar,sCharCnt<..CursorChar,..CursorPar=sJ Set ..CursorRow=..Rows,..CursorKol=..CursorChar-sCharCnt . . Set sCharCnt=sCharCnt+sI . . If sIndent="" Do ; Opzoeken voor paragraaf insprong . . . Set sIndent=0 Quit:..Options[$$$moAllowTab . . . If $E(sTT,2,20)[$C(9) Set sIndent=$L($P(sTT,$C(9)))+1,sIndent=sIndent-($L($E(sTT,1,sIndent),"ª")-1*2) . . . If 'sIndent,sTT?1.2N1"."1" "1.E!("- ~* ~ "[$E(sTT,1,2)) Set sIndent=$F(sTT," ")-1 For sIndent=sIndent:1:99 Quit:$E(sTT,sIndent+1)'=" " . . . Set:sIndent>20 sIndent=0 . .Set $E(sTT,1,sI)="" . If ..CursorPar=sJ,'..CursorRow Set ..CursorChar=$L(..Paragraphs(sJ))+1,..CursorRow=..Rows,..CursorKol=$P(..Rows(..Rows),"`",3)+1 ; Oude overbodige wissen For sI=..Rows+1:1:..RowsCopy Kill ..Rows(sI) ]]> Paremeters kunnen op drie manieren verwerkt worden 1. DE waarde zit in de .Local sParam met als index de Name 2. De formatering zit in de .Local sParam sTxt,sParam Name KillFocusOk:%Boolean Button:%String,Row:%Integer,Col:%Integer %Boolean Invoegen van een karakter String Carriage return = Insert paragraaf TAB 20 Do ..InsertString($C(9)) Quit ]]> Verwijder op cursorpos $L(..Paragraphs(..CursorPar)),..CursorPar<..Paragraphs Do . Set ..Paragraphs(..CursorPar)=..Paragraphs(..CursorPar)_$G(..Paragraphs(..CursorPar+1)) . For sI=..CursorPar+2:1:..Paragraphs Set ..Paragraphs(sI-1)=..Paragraphs(sI) . Set ..Paragraphs=..Paragraphs-1 Else Set ..Paragraphs(..CursorPar)=$E(..Paragraphs(..CursorPar),1,..CursorChar-1)_$E(..Paragraphs(..CursorPar),..CursorChar+1,9999) Do %Application.TriggerSimpleEvent(..OnChanged,%this) Do ..Wrap() Do ..Paint() Do ..CursorShow() ]]> Verwijder voor cursorpos 1 Do . Set ..Paragraphs(..CursorPar)=$E(..Paragraphs(..CursorPar),1,..CursorChar-2)_$E(..Paragraphs(..CursorPar),..CursorChar,9999) . Set ..CursorChar=..CursorChar-1 Else If ..CursorPar>1 Do . Set ..CursorPar=..CursorPar-1 . Set ..CursorChar=$L(..Paragraphs(..CursorPar))+1 . Set ..Paragraphs(..CursorPar)=..Paragraphs(..CursorPar)_..Paragraphs(..CursorPar+1) . For sI=..CursorPar+2:1:..Paragraphs Set ..Paragraphs(sI-1)=..Paragraphs(sI) . Set ..Paragraphs=..Paragraphs-1 Do %Application.TriggerSimpleEvent(..OnChanged,%this) Do ..Wrap() Do ..Paint() Do ..CursorShow() ]]> ..CursorKol,$P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Else If $P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Do ..ConvertCursor() Do ..CursorShow() ]]> ..CursorKol,$P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Else If $P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Do ..ConvertCursor() Do ..CursorShow() ]]> ..Rows ..CursorRow=..Rows If $P(..Rows(..CursorRow),"`",3)>..CursorKol,$P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Else If $P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Do ..ConvertCursor() Do ..CursorShow() ]]> ..CursorKol,$P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Else If $P(..Rows(..CursorRow),"`",3)<..CursorKol Set ..CursorKol=$P(..Rows(..CursorRow),"`",3)+1 Do ..ConvertCursor() Do ..CursorShow() ]]> $P(..Rows(..CursorRow),"`",3) Quit:..CursorRow=..Rows Set ..CursorKol=1,..CursorRow=..CursorRow+1 Else Set ..CursorKol=..CursorKol+1 Do ..ConvertCursor() Do ..CursorShow() ]]> Cursor naar begin van de paragraaf Cursor naar einde van de paragraaf $L(..Paragraphs(..CursorPar)),..CursorPar=..Paragraphs Quit ;Helemaal op het einde Set:..CursorChar>$L(..Paragraphs(..CursorPar)) ..CursorPar=..CursorPar+1 ; reeds achteraan dan volgende paragraaf nemen Set ..CursorChar=$L(..Paragraphs(..CursorPar))+1 ; Laatste positie van de paragraaf Do ..Wrap() Do ..Paint() Do ..CursorShow() ]]> Sender Sender:TControlBasis,KeyCode:%String Sender Sender Sender Sender Sender Sender Sender Sender Sender,Name Sender Value:%String %Status %String Separator:%String="~" %String 1:Separator,1:"")_..Paragraphs(VolgNr) Quit $S(..TrimEndOfText:$$TrimEndOfText^vhLib(String),1:String) ]]> Text:%String,Separator:%String="~" %String LB:%String Paragraphs,Options 1 Do . Set ..Paragraphs(1)="" . Set ..Paragraphs=1 Else Do . Merge ..Paragraphs=Paragraphs . Set ..Paragraphs=$O(..Paragraphs(""),-1) Set ..CursorPar=1 Set ..CursorChar=1 Set:$L($G(Options)) ..Options=Options If ..ContextMenu="" Set ..ContextMenu=..CreateContextMenu() Do ..Wrap() ]]>