Název zobrazeného okna

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

Název zobrazeného okna

Postby kmpc » Wed 12. Oct 2022 8:32:04

Dobrý den,
chtěl bych vás požádat o radu.

Mám PmaWorkspace v něm oblasti "menu" a "main". V menu mám klasicky tlačítka (PmgButton) pro zobrazování PmaPanel v oblasti "main" (Pm.CreateView(...).Open()). Potřeboval bych zvýranit tlačítko v menu (změnit barvu panelu), pokud je obraz v "main" zobrazen určitý obraz (tlačítko odkazující např. na topení a v main je zobrazeno topení).

V manuálu se mi nepodařilo najít funkce, která by vracela název zobrazeného okna.

Děkuji za odpověď.

Pěkný den
Nekula
kmpc
 
Posts: 25
Joined: Thu 12. May 2016 6:39:20

Re: Název zobrazeného okna

Postby Pavel Klimíček » Wed 12. Oct 2022 10:13:10

Dobrý den.
Pokud se jedná pouze o lokální aplikaci, pak je možné použít nad PmaWorkspace metodu "GetViewInfo".
V nějaké uživatelské metodě obrazu by byl například tento skript:
Code: Select all
var oWs = pMe.Parent.GetViewInfo("main"); // aktivní objekt PmaWorkspace
var sName = pMe.Pm(oWs.GetItem(0)).Name;
return sName;


Pokud ale je aplikace určena i pro web, pak je řešení složitější a navrhované řešení je takové:
1) K nastavení se využije metoda SetPrivateData nad přihlášeným uživatelem (PmUser).
To znamená, že současně s otevřením obrazu (metodou CreteView) se zavolá ještě uživatelská metoda obrazu s parametrem sName (sName=jméno otevíraného obrazu).
V uživatelské metodě (s parametrem "sName") bude tento skript:
Code: Select all
pContext.User.SetPrivateData("name", sName);

2) V obraze "menu" pak založte proměnnou, kterou vazbou "UP" napojíte na GetPrivateData("name").
V události "onReresh" pak můžete testovat hodnotu této proměnné a skriptem nastavit vzhled svých tlačítek.
Pavel Klimíček
 
Posts: 61
Joined: Thu 13. Dec 2012 15:35:59

Re: Název zobrazeného okna

Postby kmpc » Mon 14. Nov 2022 21:15:32

Dobrý den,
vámi uvedený postup v lokální aplikaci funguje bez problémů. Jakmile se ovšem dostanu na web, tak se bohužel, po kliknutí na tlačítko v menu, nestane vůbec nic. Vypadá to jako kdyby se metoda Pm.CreateView().Open();" vůbec nevykonala.

V události OnButtonUp mám následující kód:
Code: Select all
var cesta

cesta = pMe.Vars("cesta");

Pm.CreateView(null, cesta, "", "target:main;").Open();
pMe.PmPanel.Methods.Zobrazene_menu(cesta);


V metodě Zobrazene_menu je následující kód:
Code: Select all
pContext.User.SetPrivateData("name",cesta);


Používám verzi 9.0.22.0

Děkuji za vaši odpověď.
kmpc
 
Posts: 25
Joined: Thu 12. May 2016 6:39:20

Re: Název zobrazeného okna

Postby Tomáš Bräuer » Wed 23. Nov 2022 8:12:20

Dobrý den,
máte chybu ve skriptu.
V proměnné cesta máte objekt namísto string. Správně má být:
Code: Select all
var cesta = pMe.Vars("cesta").Value;

místo vašeho
Code: Select all
var cesta = pMe.Vars("cesta");


Když vám něco nefunguje, odkontrulujte si, zda parametry volaného příkazu jsou takové, jaké si myslíte že jsou.
Stačilo dát
Code: Select all
Pm.Debug(cesta);

a viděl byste, že to máte špatně. Alespoň já ve vašem projektu postupoval tímto způsobem.
Tomáš Bräuer
Administrátor
 
Posts: 148
Joined: Thu 13. Dec 2012 9:13:13


Return to Nevím jak...

Who is online

Users browsing this forum: No registered users and 5 guests

cron