Dynamiczna lista akcji w nawigatorze (wstążce)¶
Mechanizm dynamicznej listy akcji umożliwia napisanie metody która wygeneruje menu. Metoda ta zwraca listę obiektów (List<NavigatorAction>). Wywoływać z nawigatora możemy dowolne metody statyczne znajdujące się w dowolnym obiekcie. Ponadto metody statyczne mogą przyjmować dowolne parametry składające się z typów prostych (np. string, int..), które przekazujemy podczas naliczania listy akcji. Mechanizm ten można wykorzystać gdy potrzebujemy naliczać menu z tabel konfiguracyjnych znajdujących się w BD.
public static List<NavigatorAction> GetNavigatorActionsForDynNavigator()
{
List<NavigatorAction> actionList = new List<NavigatorAction>();
// Przykład użycia
actionList.Add(new NavigatorAction("Info1", "ICON_4", "TESTING.PR117746", "ShowMyMessage", "DynamicznyNawigator", "Grupa1", new object[]{"PierwszaAkcja"}));
var item = new NavigatorAction("Akcja2", "MI_REDX", "TESTING.PR117746", "ShowMyMessage", "DynamicznyNawigator", "Grupa1", true);
item.AddParameter("Druga akcja z wykorzystaniem: AddParametr");
item.BigButton = true;
actionList.Add(item);
return actionList;
}
Powyższy kod dodaje 2 akcje menu w zakładce: "DynamicznyNawigator" w grupie: "Grupa1". Akcje wywołują metodę statyczną z obiektu: "TESTING.PR117746" o nazwie: "ShowMyMessage". Do metody możemy przekazywać parametry na 2 sposoby. Jako tablica (new object[]{"PierwszaAkcja"})) lub poprzez wywołanie metody AddParameter(""). Kolejność dodawania wartości odpowiada kolejności parametrów w metodzie statycznej. Metoda ShowMyMessage wygląda następująco:
public static void ShowMyMessage(string param)
{
API.ShowMessageBox("Param: " + param,"Test");
}
Od wersji 5.4.15 jest możliwość dodawania do akcji dynamicznych metody na liczbę powiadomień. W konstruktorze został dodany parametr odpowiedzialny za przekazanie nazwy metody na liczbę powiadomień. Metoda ta musi się znajdować w tym samym obiekcie co metoda, która jest wywoływana w tej akcji.
public static List<NavigatorAction> GetNavigatorActionsForShowFormToo()
{
List<NavigatorAction> actionList = new List<NavigatorAction>();
// Przykład użycia
actionList.Add(new NavigatorAction("Pokaż dynamicznie okno", "MI_BELL", "AAAAATEST.KLIENCI", "ShowWindow", "Testowy", "Testowy", null,false,"TestDynamicNotification"));
return actionList;
}
Metoda na liczbę powiadomień powinna być statyczna i przyjmować parametr NotificationInfo.
public static void TestDynamicNotification(NotificationInfo ni)
{
ni.Value = "1";
}
Szczegóły¶
Akcja dynamiczna może być podpięta pod inną akcję na wstążce lub nie posiadać rodzica. Akcje zwracane z metody mogą mieć ustawione nazwy grup i zakładek lub nie. W zależności od tych rzeczy otrzymamy różne efekty.
Akcja dynamiczna bez rodzica z pustymi nazwami zakładki / grupy¶
Jeżeli nazwa zakładki / grupy jest pusta, zostanie zastąpiona przez "Ogólne"
Akcja dynamiczna bez rodzica z wypełnionymi nazwami grup / zakładek¶
Za pomocą jednej akcji dynamicznej można dodać wiele akcji w różnych grupach i zakładkach
Akcja dynamiczna z rodzicem z pustymi nazwami zakładki i grupy¶
Akcje zwrócone z metody utworzą pojawią się na wstążce w miejscu wskazywanym przez rodzica
Akcja dynamiczna z rodzicem z wypełnionymi nazwami zakładki i grupy¶
Akcje pokażą się podwójnie: raz w miejscu wskazywanym przez rodzica a drugi raz w miejscach wg wpisanej grupy i zakładki