Ins_StrViewer

(    NumWind : Byte;
     NumObj  : Word;
     X1, Y1  : Byte;
     X2, Y2  : Byte;
     Attr    : Word;
     LinkX   : Word;
     LinkY   : Word;
     HSCBar  : Byte;
     VSCBar  : Byte;
     MaxX    : Word;
     MaxY    : Word;
 dim StrArr        ; 
     SelLabel      )

Vložení objektu 'NumObj' pro výběr z dvourozměrného pole stringů 'StrArr' do okna 'NumWind'. Umožňuje pohyb po poli stringů v ose X a Y. Atribut 'Attr' definuje chování objektu. Dvojice čísel [X1, Y1] a [X2, Y2] tvoří souřadnice objektu. K objektu lze připojit dva objekty 'LinkX' a 'LinkY' typu Ins_StrViewer, které sledují pohyby kurzoru v ose X a Y. Jestliže se kurzor bude pohybovat v ose X, bude se pohybovat i v objektu 'LinkX'. Jestliže se kurzor bude pohybovat v ose Y, bude se pohybovat i v objektu 'LinkY'. Nechcete-li těchto objektů použít, pište místo nich nuly. Bude-li 'HSCBar' = True, bude ve spodní části objektu zobrazen posuvný indikátor polohy kurzoru. Bude-li 'VSCBar' = True, bude v pravé části objektu zobrazen posuvný indikátor polohy kurzoru. 'MaxX' a 'MaxY' definují výřez v poli stringů. Jestliže tyto parametry překročí maximální velikosti pole, budou upraveny. 'SelLabel' je návěstí podprogramu, který bude volán po stisknutí mezerníku nebo po dvojitém stisku levého tlačítka myši na některém prvku pole 'StrArr'. V rámci tohoto podprogramu nelze samozřejmě zrušit rodičovské okno procedurou WDone! Pokud se tak přesto stane, hlásí program chybu. Definujete-li podprogram který se má volat při změně objektu procedurou ChObjProc , bude volán při pohybu kurzoru po poli stringů.

Datový obraz objektu je LongInt. Řádky | Sloupce

Nastavení dat objektu:

_Shl(Řádky,16) lor Sloupce

Přečtení dat objektu:

dim LI : LongInt;
GetDataObj(WinNum, ObjNum, LI)
Řádky := _Shr(LI, 16);
Sloupce := LI land $FFFF;

Příklad:

   dim StrArr (8,6) : String[3];
   ...
   Ins_StrViewer(1, 80, 01,01,12,04, 1, 0,0, True,True, 7,5, StrArr, SelLabel)

        1     2     3     4     5     6     7     8
     ------------------------- ----------------------- Pole je omezeno
   1 ||     |     |     |     |     |     |ÎÎÎÎÎ| na výřez 7 x 5.
     ------|-----|-----|------ ----|-----|-----|------
   2 |     |     |     |     |     |     |     |ÎÎÎÎÎ|
     ------|-----|-----|------ ----|-----|-----|------
   3 |     |     |     |     |     |     |     |ÎÎÎÎÎ|
     ------|-----|-----|------ ----|-----|-----|------
   4 |     |     |     |     |     |     |     |ÎÎÎÎÎ|
     ------------------------- ----|-----|-----|------
   5                               |     |     |ÎÎÎÎÎ|
     ------|-----|-----|-----|-----|-----|-----|------
   6 |ÎÎÎÎÎ|ÎÎÎÎÎ|ÎÎÎÎÎ|ÎÎÎÎÎ|ÎÎÎÎÎ|ÎÎÎÎÎ|ÎÎÎÎÎ|ÎÎÎÎÎ|
     -------------------------------------------------
     

Příklad:

   const MaxCol = 50;
   const MaxRow = 30;
   dim Col, Row : Word;
   dim LI       : LongInt;
   dim Array (MaxCol, MaxRow) : String[10];
   WInit(1, 0,0,64,10, "", winMove, 0);
   Ins_StrViewer(1, 10, 15,02,63,03, 8,  0, 0, False,False, 50,30, Array, 0)
   Ins_StrViewer(1, 20, 02,04,14,10, 8,  0, 0, False,False, 50,30, Array, 0)
   Ins_StrViewer(1, 80, 15,04,63,10, 9, 10,20, True,True, 50,30, Array, SelLabel)
   WOpen(1)
   _Execute(1)
   Exit
   SelLabel:
     GetDataObj(1, 80, LI)
     Row := LI div $FFFF;
     Col := LI land $FFFF;
     Array[Col, Row] := "1234567890";
     SetDataObj(1, 80, Row*$10000+Col)
   return