Esdeveniment de botó

A la taula «ButtonEvent» de la base de dades d'exemple, els camps de la fitxa («caption», «the color», «Tooltip», «badge.caption», «badge.color») configuren el text, el color, el text d'ajuda i el badge del botó «Bonjour», mitjançant la funció onUpdate descrita més avall.
Personalitzar els botons amb Ninext
Amb Ninext podeu modificar l'aparença dels botons de Ninox definint una funció anomenada onUpdate a la fórmula «Display field only, if» del botó. Aquesta funció ha de retornar un objecte que descrigui els elements visuals que cal modificar, i l'script ha d'acabar amb un booleà que indiqui si el botó s'ha de mostrar.
Amb aquest enfocament podeu:
- Canviar el text del botó.
- Actualitzar el text d'ajuda (o títol) del botó.
- Canviar el color del botó, entre els tres estils de botó de Ninox:
"blue"(fons blau),"red"(fons rosa, text vermell) i"grey"(fons blanc, contorn blau, com el botó «Bonjour» de més amunt). - Mostrar un badge per destacar informació important.
Aquesta funció es desactiva a la Configuració de Ninext, secció «Millores d'interfície»: Esdeveniments de botó (onUpdate) (activat per defecte).
Visió ràpida de les propietats JSON
| Propietat | Descripció | Exemple / Ús |
|---|---|---|
| caption | El text que es mostra al botó. | "Send" / "Cancel" |
| tooltip o title | El text que apareix en passar el ratolí per sobre, com a text d'ajuda. | "Click to send" |
| buttonColor | El color del botó: "blue", "red" o "grey", res més. Qualsevol altre valor s'ignora i el botó conserva el seu color. | "blue" |
| badge | Un objecte que descriu el badge que cal mostrar al botó. | Vegeu-ne els detalls més avall |
| badge.caption | El text, el nombre o el símbol que es mostra al badge. Sempre és un text: convertiu un nombre amb text(). Un text buit amaga el badge. | "3" o "!" |
| badge.color | El color de fons del badge (vermell per defecte). El text del badge continua sent blanc. | "red" o "#4970ff" |
Funcionament general
- Definiu la funció onUpdate
A la fórmula «Display field only, if» del botó, declareu una funció anomenada onUpdate. Aquesta funció retorna un objecte (en format JSON) que descriu els elements que cal modificar. Rep com a paràmetre el text i el color del botó tal com estan definits a Ninox:{ caption, buttonColor }. - Retorneu un booleà per a la visibilitat
La fórmula ha d'acabar retornant un booleà (trueofalse) per indicar si el botó s'ha de mostrar. - Ninext aplica les modificacions
Quan s'obre o es refresca el registre, Ninext executa la funció onUpdate, llegeix l'objecte retornat i aplica dinàmicament els canvis d'aparença al botó.
Implementació
Un sol bloc de codi a la fórmula «Display field only, if»
"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 >= 0Comentaris:
- La funció onUpdate construeix un objecte que permet modificar el text del botó (amb un indicador numèric si
Countés positiu), el text d'ajuda, el color del botó i mostrar-hi un badge. - El bloc de codi final retorna un booleà per determinar si el botó s'ha de mostrar.
Exemple mínim (només badge)
"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";
trueComentaris:
- Només es retorna la propietat badge per mostrar un valor si
newItemsés més gran que 0. - El botó es mostra sense condicions.
Punts importants
- Retorn booleà final
Sense retornartrueofalseal final, el botó no serà visible. - Una llegenda de badge sempre en text
Ninext només mostra el badge sibadge.captionés un text no buit. Un nombre (3en lloc de"3") deixa el badge amagat: feu servirtext(). - Una funció avaluada a part
Ninext extreu només la funcióonUpdatede la fórmula i, després, l'avalua a part, en el context del registre. Per tant, no veu ni les variables ni les altres funcions declarades en altres llocs de «Display field only, if»: declareu dins d'onUpdatetot el que necessiti. Pot llegir els camps del registre (this.Count) i cridar les funcions globals de la base de dades.
