Page 1 of 1

PmPanel.OnOpen - pMe.GetPar("parametr")

PostPosted: Wed 27. Aug 2014 21:16:18
by albiman
Dobrý den,
řeším aktuálně problém s načtením parametru předaného ve volání metody OpenView z PmiButtonu, v tlačítku mám:
Code: Select all
if (pEvent.Action == 0 )
{
  var TmpS = pMe.Vars("nazev");
  TmpS = "par:trend=" + TmpS +  ";";
  Pm.Debug("obr: " + TmpS); // zde je ve v poradku
  pMe.PmPanel.OpenView("/system/trendy", "target:main;", TmpS);
};


a v promotic objektu pmPanel ("/system/trendy") mám v události OnOpen:
Code: Select all
sPar = pMe.Pm(".").GetPar("trend")
// nebo
sPar = pMe.GetPar("trend")

Avšak hodnota proměnné sPar má stále hodnotu <NULL>, pokud použiju parametr v obraze přes makro $par, tak tam je správná hodnota parametru.
Kde je tedy chyba, děkuji za rady. :?:

Re: PmPanel.OnOpen - pMe.GetPar("parametr")

PostPosted: Thu 28. Aug 2014 8:58:18
by Tomáš Bräuer
Nenapsal jste verzi promotic, což může být zásadní, vycházím tedy s poslední verze.
To, co se pokoušíte udělat nejde a ani to nedává moc smysl.
Máme 2 stromy objektů se svými kontexty, a to 1) aplikace s promotic objekty a 2) obsah obrazu s grafickými prvky.
Metoda PmObject.GetPar nad PmPanel objektem volaná v PmPanel.onOpen vrací parametr promotic objektu (a je jedno jestli to je PmPanel nebo PmFolder). V OpenView jste předal aktuální parametry dovnitř do právě otevíráného obsahu obrazu (parametrizujete obsah obrazu a ne aplikaci).
Možná by vám fungovalo:
sPar = pMe.Items("/").GetPar("trend")

což udělá to, že u otevřeného obrazu (nesmí být restricted nebo javascript, což ale asi máte, takže vám to fungovat nebude) si získáte referenci na PmiRoot grafický prvek a nad ním zavoláte metodu PmiItem.GetPar.

Ve verzi 8.3.0, kterou připravujeme k uvolnění jako vývojovou (testovací) verzi, je už toto řešeno i pro javascript obrazy. Obecně totiž platí, že z aplikace se nesmíte dostat dovnitř otevřeného obrazu a naopak (obrazů může být teoreticky otevřeno více současně a to i na webu). Proto se toto dneska všechno řeší uvnitř obrazu v prvku PmiRoot.

Pro vás to znamená, buď použít VBScript Full obraz se všemi omezeními (trendy jako activex i na webu => jenom InternetExplorer) nebo to uděláte projekčně jinak. Musíte se smířit s tím, že u javascript obrazu aplikace nemá možnost si dovnitř obrazu šáhnout. Musíte si tu poslední hodnotu někde v aplikaci zapamatovat.