Promotic

PmaDataTable - Podrobný popis objektu

Viz: Objekt PmaDataTable

Nad hodnotami objektu PmaDataTable lze provádět různé operace. Například:
- Nabízení hodnot (pro čtení i zápis) do Webu pomocí formátu XML. Z hlediska licence je klient požadující data z této Web komponenty typu PmDataClient.
- Uložení a nastavování hodnot pomocí metod: SaveToString, LoadFromString, SaveToFile, LoadFromFile, GetArray, SetArray, atd.
- Hledání hodnot metodou FindValue.
- Třídění řádků metodou Sort.
- atd.


Objekt PmaDataTable lze použít různými způsoby:
Lze například definovat sloupce ve vývojovém prostředí (viz karta "Sloupce"), definovat kolik řádků má mít tabulka (viz karta "DataTable") a pak ve spuštěné aplikaci jen číst a zapisovat hodnoty (viz metody GetCellValue a SetCellValue) z této tabulky.
Lze také nedefinovat ani sloupce ani řádky a ve spuštěné aplikaci je dynamicky vytvářet a mazat (viz metody InsertRow, RemoveRow, InsertCol, RemoveCol). Přidávání a mazání sloupců je však omezeno tím, že se přitom smažou i všechny řádky tabulky.
Lze i ve vývojovém prostředí definovat sloupce i řádky a pak je dynamicky měnit.
Maximální počet řádků závisí na Runtime licence PROMOTIC a je: PmRtProf: 65535, PmRtFree: 30 a PmRtXX: XX (například PmRt100: 100).
Maximální počet sloupců závisí na Runtime licence PROMOTIC a je: PmRtProf: 65535, PmRtFree: 30 a PmRtXX: XX (například PmRt100: 100).

Sloupce "Jen pro čtení" (ReadOnly):
Každá buňka tabulky se standardně přidává do výpočtu velikosti aplikace z důvodu licencování. Pokud se však v objektu PmaDataTable označí sloupec jako "Jen pro čtení", pak buňky v tomto sloupci se nebudou započítavat do výsledné velikosti aplikace. To umožňuje i v aplikacích s menším počtem bodů tento objekt používat pro ukládání konfiguračních hodnot, které se po celou dobu běhu aplikace nemění. Je to zajištěno tak, že do sloupců "Jen pro čtení" lze zapsat hodnotu jen jednou. Omezení u jednotlivých metod objektu PmaDataTable z důvodu sloupců "Jen pro čtení" jsou uvedena v poznámce této metody.
Každá buňka je na začátku prázdná. Za prázdnou se považuje i buňka obsahující číselnou hodnotu 0 nebo prázdný řetězec "". Do takové buňky lze zapsat novou hodnotu. Po zápisu neprázdné nenulové hodnoty ve sloupci "Jen pro čtení" dochází k "zamčení buňky". "Zamčená buňka" se stane konstantou, nelze už do ní psát. Do ostatních "nezamčených" buněk však lze dále psát. U metod, které zapisují do více buněk současně, se zapíše pouze do "nezamčených buněk", obsah "zamčených buněk" zůstane beze změny.
Pokud je v kterémkoliv sloupci "Jen pro čtení" zamčena alespoň jedna buňka zapisem neprázdné hodnoty, pak dochází k "zamčení struktury" celé tabulky. Nelze dále přidávat a rušit sloupce nebo řádky, měnit strukturu tabulky. Strukturu, rozměry tabulky je proto nutno měnit před zápisem první neprázdné hodnoty do sloupce "Jen pro čtení".

Zobrazování dat v obrazu:
Na hodnoty tabulky se lze napojit přímo v Pmg objektech datovou vazbou "PP - Datová vazba na vlastnost Pma objektu". V zadavateli vlastnost objektu v této vazbě se musí ručně zadat: Item(row,col), kde row a col jsou indexy požadovaného řádku a sloupce.
Objekt PmgWTable se může napojit na hodnoty objektu PmaDataTable pomocí informačního objektu, který lze získat metodou GetInfo. To znamená, že z objektu PmaDataTable lze metodou GetInfo získat objekt, který se pak vloží do PmgWTable metodou PmgWTable.FillFromInfo, například takto:
 
VBScriptVyber a zkopíruj do schránky

Dim oTable, oDataTable
Set oTable = pMe.Pm("/Wnd/MyPanel").Items("/MyTab")
Set oDataTable = pMe.Pm("/Data/Params")
oTable.FillFromInfo oDataTable.GetInfo("data"), "bind"
 
Zde se předpokládá, že ve stromu Pma objektů je objekt PmaPanel na cestě "/Wnd/MyPanel" a objekt PmaDataTable "/Data/Params". Pokud je obraz "MyPanel" otevřen a obsahuje Pmg objekt s názvem "MyTab", pak můžeme zavolat tento skript. Ten (viz poslední řádek) naplní objekt PmgWTable daty z objektu PmaDataTable a spojí je (parametr bind) tak, že při každém zavolání metody PmgWTable.Draw se obnoví obsah objektu PmgWTable.
Viz také:
- PmaData (objekt)
© MICROSYS, spol. s r.o.