Sekvenční přepínání obrazů

Toto je hlavní technické fórum pro diskusi o problémech při vytváření PROMOTIC aplikací a jejich řešení.

Sekvenční přepínání obrazů

Postby Vladimir Kostal » Mon 10. Jun 2019 14:47:05

Dobrý den,

Zákazník požaduje sekvenční přepínaní vybraných obrazovek. Umím získat jejich seznam (FindViewers). Mám ale problém zjistit, jaký obrázek je aktuálně v hlavním panelu. Toto téma tady už jednou bylo diskutováno (Uložení titulu aktuálně otevřeného panelu do globální proměnné). Pokud však budou sočasně běžet 2 stanice, bude v globální proměnné uloženo jméno toho panelu, který byl aktivován jako poslední, což nemusí být nutně na té stanici, kde zrovna požaduje operátor aktivaci následujícího/předchozího obrázku. Jediné, co mě napadá, je odlišit použitou proměnnou dle počítače, ale vůbec nemám představu, jak by se to dalo udělat.
Druhá varianta - testovat stav všech panelů z tohoto seznamu a najít ten aktivní - ale tady jsem nenašel také nic, co by vypadalo, že se dá použít.

Děkuji
Vladimir Kostal
 
Posts: 5
Joined: Mon 10. Jun 2019 11:41:16

Re: Sekvenční přepínání obrazů

Postby Tomáš Bräuer » Fri 14. Jun 2019 7:05:17

Dobrý den,
neuvedl jste jestli se jedná o lokální aplikaci nebo webovou. Budu předpokládat, že lokální.
Ke zjištění, který prohlížeč je otevřený v rámci "main" v objektu PmWorkspace slouží metoda PmWorkspace.GetViewInfo viz https://www.promotic.eu/cz/pmdoc/Objects/Promotic/PmWorkspace/PropMeth/GetViewInfo.htm

Pak stačí využít sObjectPath a buď porovnat řetězcově s nějakým seznamem nebo získáte referenci na daný objekt pomocí pMe.Pm(sObjectPath) a daný objekt vám třeba metodou poskytne další v pořadí. Nejjednodušší bude mít velký Select Case ve VB nebo switch v JS.

Něco jako
select case
case "/panels/panel1" sNextPanel = "/panels/panel2"
case "/panels/panel2" sNextPanel = "/panels/panel3"
case "/panels/panel3" sNextPanel = "/panels/panel1"
end select
Tomáš Bräuer
Administrátor
 
Posts: 153
Joined: Thu 13. Dec 2012 9:13:13

Re: Sekvenční přepínání obrazů

Postby Vladimir Kostal » Fri 14. Jun 2019 12:07:50

Dobrý den,

jedná se samozřejmě o ten bežnější ale asi složitější případ webové aplikace.

Nicméně jsem si chtěl vyzkoušet vámi navrhované řešení v lokální aplikaci, že od něho třeba odvodím řešení pro web a narazil jsem. Abych mohl volat metodu workspace, musím ho získat jako objekt. Tlačítko je umístěno v hlavním toolbar, ale od něj už se nikam nedostanu. Toolbar nemá žádného rodiče a žádná z jeho metod nevypadá použitelně pro získání cesty k workspace.
Vladimir Kostal
 
Posts: 5
Joined: Mon 10. Jun 2019 11:41:16

Re: Sekvenční přepínání obrazů

Postby Tomáš Bräuer » Mon 17. Jun 2019 8:44:09

Dobrý den,
v prvním příspěvku jste zmiňoval uložení otevřeného obrazu do globální proměnné. To je ale řešení pro lokální aplikaci, protože určitě nechcete, aby měli všichni web klienti otevřený vždycky stejný obraz.
V Promotic 9 už máme novou funkci PmiRoot.GetPanelInfo (nahradila by volání metody PmWorkspace.GetViewInfo), která vám vrátí plnou cestu PmPanel. V Promotic 8 budete muset ale zvolit jiné řešení spočívající v tom, že jméno otevřeného obrazu si někdo bude pamatovat, protože nelze zjistit metodou.

Jeden způsob je ukázán v našem DEMO příkladě, který je součástí Promotic 8.3.
Tam řídí automatické přepínání obrazů dokonce s různou prodlevou přímo dvoustavové tlačítko STAV v obraze Toolbar. Celý kód je v událostech onSTart a onRefresh tohoto tlačítka. Řešení pak funguje lokálně i na webu s tím, že uživatel si stiskem tlačítka pustí/zastaví automatické přepínaní obrazů. Využívá se toho, že Toolbar existuje pořád a nezavírá se.

Další řešení by mohlo být uložit si v otevření každého obrazu v PmiRoot.onStart jméno obrazu ne do globální proměnné, ale do privátních dat objektu User.
Tomáš Bräuer
Administrátor
 
Posts: 153
Joined: Thu 13. Dec 2012 9:13:13

Re: Sekvenční přepínání obrazů

Postby Vladimir Kostal » Mon 17. Jun 2019 15:12:15

Dobrý den,

Privátní data objektu user a jeho metody GetPrivateData a SetPrivateData jsou přesně to, co jsem hledal.

Děkuji.
Vladimir Kostal
 
Posts: 5
Joined: Mon 10. Jun 2019 11:41:16


Return to Nevím jak...

Who is online

Users browsing this forum: No registered users and 3 guests

cron