Vložení objektu 'NumObj', který umožňuje editaci textu do okna 'NumWind'. Atribut 'Attr' definuje chování objektu. Dvojice čísel [X1, Y1] a [X2, Y2] tvoří souřadnice objektu. Parametr 'SizeBuf' definuje velikost vnitřní pracovní paměti editoru. Maximální velikost je $4000 bytů. Řádky v textovém editoru jsou od sebe odděleny znaky CR (13) a LF (10). Protože s tímto obecným polem znaků by se v makrojazyce pracovalo pouze velmi obtížně, provádí Ins_Editor konverzi jednorozměrného pole String nebo StringZ 'StrArr' do tvaru, kde jsou řádky od sebe odděleny CR a LF. Konverze se provede při použití procedury SetData nebo SetDataObj. Zpětná konverze do pole řetězců se provede při použití procedury GetData nebo GetDataObj .
Před konverzí se celé pole řetězců vynuluje!
Datový obraz objektu je LongInt : Řádky | Sloupce
Nastavení dat objektu: Řádky * $10000 + Sloupce
Přečtení dat objektu: Řádky := LI div $FFFF; < BR>
Sloupce := LI land $FFFF;
Pozor! Aby se provedla konverze vnitřního pracovního pole editoru do jednorozměrného pole řetězců, je nutno při použití GetData nebo GetDataObj uvést proměnnou a nikoli konstantu.
Příklad:
dim Arr (100) : String[100]; { nebo StringZ } dim LI : LongInt; if LI = 0 then { Poprvé bude kurzor umístěn na řádku 2 a sloupci 5 } LI := _Shl(2, 16) + 5; endif Arr[1] := "Test editoru"; Arr[2] := "------------"; WInit(10, 0,0,40,18, "", winMove, 0); Ins_Editor(10, 10, 1,1,41,15, 1, $2000, Arr); Ins_Button(10, 20, 2,17,22,19, "OK", cmOK, 1) SelObject(10, 10) SetData(10, LI) WOpen(10) if _Execute(10) = cmOK then GetData(10, LI) _("Line:", _Shr(LI, 16), " X:",LI land $FFFF) endif WDone(10)