Některé
Pma objekty mají prohlížeč svých obsahů. Tato kapitola popisuje jak lze ve spuštěné aplikaci (v runtime módu) tyto prohlížeče otevřít.
Pokyny zde uvedené jsou pro metodu OpenView, která je již zastaralá (ale funkční) a pro otevírání prohlížečů je lepší použít metodu Pm.CreateView.
Objekty, které obsahují prohlížeč svého obsahu:
-
PmaReport: prohlížeč dynamicky generované HTML sestavy
-
PmaWeb: zobrazení HTML stránek nabízených tímto objektem
-
PmaWebDir: zobrazení HTML stránek nabízených tímto objektem
-
PmaWebFolder: zobrazení HTML stránek nabízených tímto objektem
-
PmaWebLang: zobrazení HTML stránek nabízených tímto objektem
Globální komponenty, které obsahují prohlížeč svého obsahu: - prohlížeč objektu
PmForm (cesta:
"/#glob/form")
- prohlížeč WWW stránek (cesta: "/#glob/webbrowser")
- prohlížeč pro
INFO systém (cesta:
"/#glob/infosystem")
Způsoby otevření prohlížeče objektu:
1)
Staticky, konfiguračně: b) v objektu
PmgFrame (viz konfigurátor "
Prohlížeč"). Tímto způsobem lze otevřít libovolný prohlížeč v objektu
PmgFrame při jeho otevření.
2)
Dynamicky, ve skriptu pomocí metod OpenView: Sada těchto metod umožní otevřít libovolný prohlížeč v rámci objektu PmaWorkspace, v objektu PmgFrame nebo také jako samostatné okno. Metoda je z důvodu praktičnosti implementována do několika objektů:
Metoda je asynchronní, tzn. pouze aktivuje otevření příslušného prohlížeče (případně zavření předcházejího) ale po ukončení metody ještě nemusí být prohlížeč skutečně otevřen.
Zobrazení prohlížeče libovolného objektu se provádí jednotným způsobem. Obecně
je potřeba následujících čtyř údajů (parametrů):
sObjectPath
(
String) Cesta (relativní nebo absolutní) k objektu nebo komponentě, jehož prohlížeč má být otevřena.
Může být zde
cesta k objektům:
PmaPanel,
PmaReport,
PmaAlarmGroup,
PmaWorkspace,
PmaWeb,
PmaWebFolder,
PmaWebDir,
PmaWebInfo,
PmaWebLang.
PmaAlarmGroup objekt: Tento objekt nabízí dva prohlížeče (stavu a historie), proto zde lze připojit za vlastní cestu k objektu text
/#state pro prohlížeč stavu nebo text
/#history pro prohlížeč historie. Pokud není prohlížeč explicitně uvedena, pak pro alarmy se zobrazí prohlížeč stavu, zatímco pro eventy se zobrazí prohlížeč historie.
nebo zde může být
cesta ke globálním komponentám:
"/#glob/webbrowser":
Obecný Web prohlížeč HTML stránek (na internetu nebo na disku).
V lokální aplikaci se otevře Web prohlížeč, který využívá InternetExplorer.
Viz Příklad otevření Web prohlížeče.
sOptions
(
String) Parametry předávané vlastnímu prohlížeči. Určují kde a jak má být prohlížeč zobrazen.
Údaje jsou zde ve formátu KeyVal, například "_blank1".
Pro prohlížeče objektů
PmaPanel a
PmaReport: Statické výchozí hodnoty
sOptions lze nastavit v konfigurátoru "
PmaPanel > Obraz > Výchozí hodnota sOptions" nebo v konfigurátoru "
PmaReport > Report > Výchozí hodnota sOptions".
V tom případě dochází ke zkombinování údajů ze statického výchozího nastavení objektu s údaji předanými dynamicky. Pokud je stejný údaj uveden na obou místech, pak přednost dostane dynamický údaj, dodaný při otevření prohlížeče.
target:xx; - Určuje, v kterém rámci se prohlížeč otevře.
Pokud není nastaveno, pak se přednastaví následovně:
- pokud se okno otevírá jako modální (je nastaveno "1"), pak se nastaví na "_blank".
- pokud se otevírá z objektu
PmaPanel, pak se nastaví na
"_self".
- pokud se otevírá z objektu
PmgFrame, pak se prohlížeč zobrazí v objektu
PmgFrame).
frameid - Nový prohlížeč se otevře
v objektu PmaWorkspace v rámci s identifikátorem
frameid.
_blank - Nový prohlížeč se otevře
v novém okně.
_blank.blankid - Pokud existuje okno s identifikátorem
blankid, pak se nový prohlížeč se otevře
ve stávajícím okně, v jiném případě se otevře
v novém okně. Umožňuje zabránit otevírání velkého množství oken.
Upozornění! Umožňuje také pomocí metody WndOper s oknem dodatečně provádět různé operace (zavření, vyčtení/zápis pozice, atd.).
_self - Nový prohlížeč se otevře
ve stávajícím okně (rámci) a prohlížeč, nad kterým byla metoda volána, se zavře.
scrollbar:nn; - Určuje, zda okno bude zobrazovat scrollbary (posuvné lišty) a umožní posouvání obsahu, pokud velikost obrazu je větší než velikost okna, ve kterém je obraz zobrazován.
0 - Scrollbary
nebudou nikdy zobrazeny a okno neumožní posouvání obrazu. Je to například vhodné pro okno typu "nástrojová lišta, kdy okno má být úzké a scrollbary by vadily.
1 (přednastaveno) - Okno
zobrazí scrollbary a umožní posun obrazu, pokud bude velikost obrazu je větší než velikost okna, ve kterém je obraz zobrazován.
refresh:xx; - Pouze pro otevření prohlížeče objektu
PmaPanel. Určuje, zda obraz bude mít automatické obnovování podle globálně nastavené systémové periody nebo bude mít vlastní obnovování. Zatím není funkční při otevření
Web obrazu.
0 - Obraz bude mít
vlastní obnovování, tzn. bude se volat metoda
PmaPanel.Refresh.
Následující údaje mají smysl pouze
při otevírání v novém okně (tzn. s nastavením
"_blank"):
modal:nn; - Určuje, zda okno bude modální.
0 (přednastaveno) - Okno
nebude modální.
dependent:nn; - Určuje, zda okno bude závislé na hlavním okně aplikace.
0 - Okno bude
nezávislé na hlavním okně aplikace. Zatím není funkční při otevření
Web obrazu.
1 (přednastaveno) - Okno bude
závislé na hlavním okně aplikace a bude vždy nad aplikací.
caption:nn; - Určuje, zda okno bude se záhlavím (tzn. s modrou lištou nahoře).
0 - Okno bude
bez záhlaví. Zatím není funkční při otevření
Web obrazu.
1 (přednastaveno) - Okno bude
se záhlavím.
ontop:nn; - Určuje, zda okno bude "Vždy nahoře".
0 (přednastaveno) - Okno
nebude "Vždy nahoře".
1 - Okno
bude "Vždy nahoře". Zatím není funkční při otevření
Web obrazu.
state:xx; - Určuje počáteční stav okna.
normal (přednastaveno) - Okno bude zobrazeno
normálně (nebude maximalizované ani minimalizované).
max - Okno bude zobrazeno
maximalizované. Zatím není funkční při otevření
Web obrazu.
pos:xx; - Určuje počáteční pozici okna v normálním stavu.
Tato pozice je jen doporučená. Pokud okno se svou velikostí nevejde na obrazovku, pak se tato pozice posune tak, aby byla viditelná co největší část tohoto okna.
top,center (přednastaveno) - Okno bude zobrazeno
ve středu aktivního okna aplikace (pracovní plochy).
top,x,y - Okno bude mít
levý horní roh na souřadnicích x a y (v pixelech) relativně k aktivnímu oknu aplikace (pracovní plochy).
frame,center - Okno bude zobrazeno
ve středu okna, ze kterého je nové okno otevíráno.
view,x,y - Okno bude mít
levý horní roh na souřadnicích x a y (v pixelech) relativně k
obsahu okna, ze kterého je nové okno otevíráno.
Pozice se zde stanovuje relativně k obsahu okna (view) a ne k oknu samotnému (frame). Lze tak například nové okno umístit vedle Pmg objektu, ze kterého je okno otevíráno. Viz Příklad otevření okna s umístěním podle Pmg objektu.
screen,x,y - Okno bude mít
levý horní roh na souřadnicích x a y (v pixelech) v absolutním souřadném systému
Windows. Tato volba není funkční na webu. Slouží k umístění hlavních oken aplikace (
PmaWorkspace nebo
PmaPanel) na jednotlivé monitory. Ostatní okna aplikace se již obvykle umísťují relativně k těmto hlavním oknům.
size:xx; - Určuje počáteční velikost okna v normálním stavu.
panel (přednastaveno) - Okno bude mít takovou velikost aby se tam vešel celý otevíraný obraz (tzn. aby nevznikly scrollbary). Šířka a výška obrazu se zadává v editoru grafiky v objektu
PmgRoot v kartě "
Obraz".
dx,dy - Okno bude mít
velikost podle zadaných hodnot dx a dy (v pixelech). Tyto hodnoty definují vnější velikost okna (tzn. včetně okrajů a záhlaví okna).
fixed:xx,yy,..; - Umožňuje zakázat změnu stavu, pozice nebo velikosti obrazu. Má podobu výčtu jednotlivých zákazů oddělených znakem "čárka" (
,). Zatím není funkční při otevření
Web obrazu. Přednastavená hodnota je: vše je povoleno.
state - Zakazuje měnit
stav okna (normální / maximalizovaný / minimalizovaný).
pos - Zakazuje měnit
pozici okna v normálním stavu.
size - Zakazuje měnit
velikost okna v normálním stavu.
size2 - Omezuje změnu velikosti okna v normálním stavu - okno
nemůže být větší než vlastní velikost obrazu.
sParams
(
String) Údaje předávané objektu, který bude zobrazován prohlížečem.
Údaje jsou zde ve formátu KeyVal, například "název1:hodnota1;název2:hodnota2;".
Tyto údaje obvykle parametrizují nebo filtrují vlastní obsah objektu pro zobrazení a závisí na typu otevíraného objektu.
PmaPanel: Umožňuje nastavit hodnotu
parametrů objektu
PmgRoot. Tento parametr je pak přístupný v konfigurátorech obrazu pomocí
Makro výraz $.par a ve skriptu metodou
GetPar. Každý jednotlivý parametr je tvořen identifikátorem (název) a hodnotou. Syntaxe:
"pars:{name1:value1;name2:value2; ...}". Viz také:
Parametry Pmg objektu.
Statické výchozí hodnoty parametrů sParams lze nastavit v konfigurátoru "PmaPanel > Obraz > Výchozí hodnota sParams". V tom případě dochází ke zkombinování údajů ze statického výchozího nastavení objektu s údaji předanými dynamicky. Pokud je stejný údaj uveden na obou místech, pak přednost dostane dynamický údaj, dodaný při otevření prohlížeče.
PmaReport: Umožňuje nastavit hodnotu parametrů sestavy. Tyto parametry jsou pak přístupné v parametru
pEvent.Pars události
onReportRequest.
Každý jednotlivý parametr je tvořen identifikátorem a hodnotou.
Syntaxe: "pars:{name1:value1;name2:value2; ...}".
Statické výchozí hodnoty parametrů sParams lze nastavit v konfigurátoru "PmaReport > Report > Výchozí hodnota sParams". V tom případě dochází ke zkombinování údajů ze statického výchozího nastavení objektu s údaji předanými dynamicky. Pokud je stejný údaj uveden na obou místech, pak přednost dostane dynamický údaj, dodaný při otevření prohlížeče.
PmaWebDir:
"file:xx;" = Soubor s příponou (např.
file:MyPage.htm), který se má zobrazit. Tento soubor musí být umístěn ve složce, který objekt
PmaWebDir do Webu nabízí (viz konfigurátor "
Složka se soubory").
Pokud je soubor v podsložce, pak parametr file se musí zadat v podobě "podsložka/soubor".
Pokud parametr file není uveden, pak se otevře soubor default.htm a pokud takový soubor neexistuje, pak se otevře dynamicky vytvořená HTML stránka se seznamem souborů.
"/#glob/webbrowser": Umožňuje nastavit adresu HTML stránky, která se má zobrazit. Syntaxe:
"url:https://www.promotic.eu;".
Adresu je nutno uvádět v plném tvaru včetně protokolu: (http://, https:// nebo file://).
"/#glob/form": Nepoužívá se.
"/#glob/infosystem": Nepoužívá se.
oExtra
(
Object) Dodatečné údaje pro prohlížeč. Údaje se zde definují vytvářením vlastností v objektu typu
PmMap (na rozdíl od předchozích parametrů
sOptions a
sParams kde se údaje zadávají textově) - lze tak předávat hodnoty obecnější než jen textové.
Objekt se vytváří metodou Pm.CreatePmMap.
Příklad vytvoření, naplnění a použití objektu
oExtra:
Seznam vlastností, které lze v objektu vytvořit:
oExtra.Arguments (nepovinné) - (
Variant) Hodnota předávaná otevíranému prohlížeči. Tato hodnota je pak dostupná:
- v události oExtra.onOpen (viz dále).
Tato hodnota může být jednoduchá (Integer, String, ...), pole nebo objekt typu PmArray nebo PmMap (nedoporučuje se zde předávat jiné typy objektů).
Zadání této hodnoty je často důležité například při otevírání modálniho okna, které má sloužit pro editování údajů.
Vlastnost Arguments pak slouží jako vstupní inicializační hodnota (vlastnost ReturnValue jako výstupní upravená hodnota) - viz Jak pracovat s modálními okny.
oExtra.onClose (nepovinné) - (objekt typu
PmAction) Zadává se zde metoda projektanta,
která se vyvolá, když se obraz zavře.
Objekt pro tuto vlastnost se vytváří metodou Pm.CreatePmAction.
Tato metoda projektanta musí mít dva parametry:
-
oSystem: Objekt typu
PmMap. Vlastnosti tohoto objektu
nastavuje systém podle toho odkud tuto akci volá. V tom případě systém nastavuje vlastnosti:
-
oSystem.CloseReason: (
String) Identifikátor typu zavření okna.
- Při prohlížení jiných objektů se tato vlastnost nenastavuje.
-
oSystem.ReturnValue: (
Variant) Výstupní hodnota prohlížeče.
- Při prohlížení jiných objektů se tato vlastnost nenastavuje.
-
oSystem.ViewObject: (
Object) Prohlížený objekt
PmForm.
- Při prohlížení jiných objektů se tato vlastnost nenastavuje.
-
oPrivate: Objekt typu
PmMap. Vlastnosti tohoto objektu
nastavuje projektant v objektu
PmAction.PrivateData. Projektant v tomto objektu nemusí nastavit žádnou vlastnost. Nastavením nějaké vlastnosti lze však dosáhnout například toho, že jedna metoda projektanta může sloužit více účelům a jen podle hodnoty vlastnosti v
PrivateData se v této metodě rozpozná, odkud se metoda volá.
oExtra.onOpen (nepovinné) - (objekt typu
PmAction) Zadává se zde metoda projektanta,
která se vyvolá, když se obraz otevře (tzn. pokud je obraz již skutečně zobrazen a jsou v něm vytvořeny všechny grafické objekty).
Objekt pro tuto vlastnost se vytváří metodou Pm.CreatePmAction.
Tato metoda projektanta musí mít dva parametry:
-
oSystem: Objekt typu
PmMap. Vlastnosti tohoto objektu
nastavuje systém podle toho odkud tuto akci volá. V tom případě systém nastavuje vlastnosti:
- oSystem.Arguments: (Variant) Vstupní hodnota prohlížeče, kterou při otevírání metodou OpenView lze zadat v údaji oExtra.Arguments.
-
oSystem.ViewObject: (
Object) Prohlížený objekt
PmForm. Při prohlížení jiných objektů se tato vlastnost nenastavuje..
-
oPrivate: Objekt typu
PmMap. Vlastnosti tohoto objektu
nastavuje projektant v objektu
PmAction.PrivateData. Projektant v tomto objektu nemusí nastavit žádnou vlastnost. Nastavením nějaké vlastnosti lze však dosáhnout například toho, že jedna metoda projektanta může sloužit více účelům a jen podle hodnoty vlastnosti v
PrivateData se v této metodě rozpozná, odkud se metoda volá.
oExtra.onChange (nepovinné) - (objekt typu
PmAction) Zadává se zde metoda projektanta,
která se vyvolá, pokud se v zobrazovaném objektu změní některá položka.
Objekt pro tuto vlastnost se vytváří metodou Pm.CreatePmAction.
Toto je funkční pouze pokud zobrazovaný objekt je PmForm.
Tato metoda projektanta musí mít dva parametry:
-
oSystem: Objekt typu
PmMap. Vlastnosti tohoto objektu
nastavuje systém podle toho odkud tuto akci volá. V tom případě systém nastavuje vlastnosti:
-
oSystem.ViewObject: (
Object) Prohlížený objekt
PmForm.
-
oSystem.ItemId: (
String) Typ
Pmf objektu (zadává se při vytváření objektu metodou
PmForm.CreateItem).
-
oSystem.ChangeType: (
String) Identifikátor typu změny:
- "value": Změnila se hodnota některého objektu.
-
"push": Některá položka byla stištěna. Je funkční pouze pro objekt
PmfButton.
- oSystem.NewValue: (Variant) Hodnota položky po změně. Tato vlastnost je nastavená pouze pokud ChangeType="value".
- oSystem.OldValue: (Variant) Hodnota položky před změnou. Tato vlastnost je nastavená pouze pokud ChangeType="value".
-
oPrivate: Objekt typu
PmMap. Vlastnosti tohoto objektu
nastavuje projektant v objektu
PmAction.PrivateData. Projektant v tomto objektu nemusí nastavit žádnou vlastnost. Nastavením nějaké vlastnosti lze však dosáhnout například toho, že jedna metoda projektanta může sloužit více účelům a jen podle hodnoty vlastnosti v
PrivateData se v této metodě rozpozná, odkud se metoda volá.