Zdarzenie przycisku

W tabeli „ButtonEvent” bazy demonstracyjnej pola rekordu („caption”, „the color”, „Tooltip”, „badge.caption”, „badge.color”) ustawiają etykietę, kolor, podpowiedź i plakietkę przycisku „Bonjour” za pomocą opisanej poniżej funkcji onUpdate.
Dostosowywanie przycisków za pomocą Ninext
Dzięki Ninext można zmienić wygląd przycisków Ninox, definiując funkcję o nazwie onUpdate w formule „Display field only, if” przycisku. Funkcja ta musi zwrócić obiekt opisujący elementy wizualne do zmiany, a skrypt musi kończyć się wartością logiczną wskazującą, czy przycisk ma być wyświetlany.
W ten sposób można:
- Zmienić etykietę przycisku.
- Zaktualizować podpowiedź (tytuł) przycisku.
- Zmienić kolor przycisku, wybierając jeden z trzech stylów przycisku Ninox:
"blue"(niebieskie tło),"red"(różowe tło, czerwony tekst) i"grey"(białe tło, niebieski obrys, jak przycisk „Bonjour” powyżej). - Wyświetlić plakietkę uwypuklającą ważną informację.
Tę funkcję wyłącza się w panelu Ustawienia Ninext, w sekcji „Ulepszenia interfejsu”: Zdarzenia przycisków (onUpdate) (domyślnie włączone).
Krótki przegląd właściwości JSON
| Właściwość | Opis | Przykład / zastosowanie |
|---|---|---|
| caption | Tekst wyświetlany na przycisku. | "Send" / "Cancel" |
| tooltip lub title | Tekst pokazywany po najechaniu, jako podpowiedź. | "Click to send" |
| buttonColor | Kolor przycisku: "blue", "red" lub "grey", nic innego. Każda inna wartość jest ignorowana, a przycisk zachowuje swój kolor. | "blue" |
| badge | Obiekt opisujący plakietkę wyświetlaną na przycisku. | Zobacz szczegóły poniżej |
| badge.caption | Tekst, liczba lub symbol wyświetlany na plakietce. Zawsze jest to tekst: liczbę należy przekształcić za pomocą text(). Pusty tekst ukrywa plakietkę. | "3" lub "!" |
| badge.color | Kolor tła plakietki (domyślnie czerwony). Tekst plakietki pozostaje biały. | "red" lub "#4970ff" |
Ogólny przebieg pracy
- Zdefiniuj funkcję onUpdate
W formule „Display field only, if” przycisku zadeklaruj funkcję o nazwie onUpdate. Funkcja ta zwraca obiekt (w formacie JSON) opisujący elementy do zmiany. Jako parametr otrzymuje etykietę i kolor przycisku zdefiniowane w Ninox:{ caption, buttonColor }. - Zwróć wartość logiczną odpowiadającą za widoczność
Formuła musi kończyć się zwróceniem wartości logicznej (truelubfalse), wskazującej, czy przycisk ma być wyświetlany. - Ninext stosuje zmiany
Gdy rekord zostaje otwarty lub odświeżony, Ninext wykonuje funkcję onUpdate, odczytuje zwrócony obiekt i dynamicznie stosuje zmiany wyglądu przycisku.
Zastosowanie
Pojedynczy blok kodu w formule „Display field only, if”
Ninox
"Declaration of the onUpdate function that customizes the button";
function onUpdate(buttonValues : any) do
let count := this.Count;
{
caption: if count > 0 then
"Send (" + count + ")"
else
"Send"
end,
tooltip: "Click to send your request",
buttonColor: if count > 0 then "red" else "blue" end,
badge: {
caption: if count > 0 then text(count) else "" end,
color: "red"
}
}
end;
"Determination of the button's visibility";
this.Count >= 0Komentarze:
- Funkcja onUpdate buduje obiekt pozwalający zmienić etykietę przycisku (ze wskaźnikiem liczbowym, jeśli
Countjest dodatnie), podpowiedź, kolor przycisku oraz wyświetlić plakietkę. - Końcowy blok kodu zwraca wartość logiczną określającą, czy przycisk ma być wyświetlany.
Przykład minimalny (sama plakietka)
Ninox
"Declaration of the onUpdate function to display only a badge";
function onUpdate(buttonValues : any) do
let newItems := this.newItems;
{
badge: {
caption: if newItems > 0 then text(newItems) else "" end,
color: "red"
}
}
end;
"The button is always displayed";
trueKomentarze:
- Zwracana jest wyłącznie właściwość badge, aby wyświetlić wartość, gdy
newItemsjest większe od 0. - Przycisk jest wyświetlany bezwarunkowo.
Ważne uwagi
- Końcowa wartość logiczna
Bez zwrócenia na końcutruelubfalseprzycisk nie będzie widoczny. - Etykieta plakietki zawsze jako tekst
Ninext wyświetla plakietkę tylko wtedy, gdybadge.captionjest niepustym tekstem. Liczba (3zamiast"3") pozostawia plakietkę ukrytą: należy użyćtext(). - Funkcja obliczana osobno
Ninext wyodrębnia z formuły samą funkcjęonUpdate, a następnie oblicza ją osobno, w kontekście rekordu. Nie widzi ona więc ani zmiennych, ani innych funkcji zadeklarowanych w innym miejscu „Display field only, if”: wszystko, czego potrzebuje, należy zadeklarować wewnątrzonUpdate. Może odczytywać pola rekordu (this.Count) i wywoływać funkcje globalne bazy.
