Promotic
WikipediaLinkedInYoutubeTwitterFacebook

OnDataUpdate - událost objektu PmTable

Popis:
Událost je vyvolána při každém požadavku na překreslení (např. každé tažení scrollbaru a každé volání metody Draw). Umožňuje mimo jiné dynamicky načitat obsah tabulky v závislosti na pozici scrollbaru, parametry nStartRow, nEndRow říkají, které řádky se mají vykreslit, a parametry nStartEmptyRow, nEndEmptyRow říkají, kterým z těchto řádků ještě nebyla načtena data. Je tedy možné v této události buď vždy naplňovat všechny řádky (tzn. řádky mezi nStartRow a nEndRow) aktuálními daty, nebo naplnit pouze ty řádky, které ještě daty naplněny nebyly (tzn. řádky mezi nStartEmptyRow a nEndEmptyRow), viz příklady.
Parametry:
pMe(Object) Reference na objekt PmiAx vlastnící tento ActiveX. Referenci na samotný ActiveX objekt lze získat pomocí výrazu pMe.Acx.
nStartRow(Long) Index prvního řádku pro překreslení
nEndRow(Long) Index posledního řádku pro překreslení včetně
nStartEmptyRow(Long) Index prvního řádku neobsahujícího data pro překreslení
nEndEmptyRow(Long) Index posledního řádku neobsahujícího data pro překreslení včetně
Poznámka:
Tato událost zatím není funkční pro WEB obrazy.
Příklad1:

Nechť je příklad napsán ve skriptu této události.

V parametru pMe je reference na grafický prvek prvek PmiAx (ve kterém je objekt PmTable). Nechť v objektu PmData je uložených 300 veličin, které se aktuálně mění, například vždy každých 20 sekund. Tabulka byla vytvořena mimo skript této události (např. takto oTable.cols=2, oTable.Rows=301, oTable.FixedCols=0, oTable.FixedRows=1). Příklad vždy vyplňuje všechny žádané řádky pro překreslení (řádky mezi nStartRow, nEndRow), tabulka zobrazuje vždy aktuální data.

Řádek oTable.SetCellText index+1, 0 má index o 1 zvýšen, neboť tabulka má v našem případě jeden fixní řádek vyhrazen pro popisy sloupců.

Dim oData, oTable, index
Set oTable = pMe.Acx
Set oData = pMe.Pm("/Data0")
For index=nStartRow To nEndRow
  oTable.SetCellText index+1, 0, index
  oTable.SetCellText index+1, 1, oData.Vars(index)
Next
Příklad2:

Nechť je příklad napsán ve skriptu této události.

V parametru pMe je reference na grafický prvek PmiAx (ve kterém je objekt PmTable). Nechť v objektu PmDatabase je uložených 3000 řádků, které se s časem nemění. Tabulka byla vytvořena mimo skript této události (např. takto oTable.cols=21, oTable.Rows=3001, oTable.FixedCols=0, oTable.FixedRows=1). Příklad vyplňuje pouze řádky, které ještě nebyly naplněny daty (řádky mezi nStartEmptyRow, nEndEmptyRow), tabulka zobrazuje data staticky, dočítá jen ta data, které ještě nebyla prohlížena.

Řádek oTable.SetCellText index+1, 0 má index o 1 zvýšen, neboť tabulka má v našem případě jeden fixní řádek vyhrazen pro popisy sloupců.

Dim oDb, oTable, index
Set oTable = pMe.Acx
Set oDb = pMe.Pm("/Database0")
If nStartEmptyRow > -1 Then
  oDb.MoveTo nStartEmptyRow
  For index=nStartEmptyRow To nEndEmptyRow
    If Not oDb.IsEOF Then
      oTable.SetCellText index+1, 0, index
      oTable.SetCellText index+1, 1, oDb.FieldValues(0)
      oTable.SetCellText index+1, 2, oDb.FieldValues(1)
      ...
      oTable.SetCellText index+1, 20, oDb.FieldValues(20)
      oDb.MoveNext
    End If
  Next
End If
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice