Forms

3.1 In modalità maschere continue è possibile visualizzare un controllo colorato diversamente a seconda del suo contenuto? (1)
  Lorenzo Coronati
(D)
In modalità maschere continue è possibile visualizzare un controllo colorato diversamente a seconda del suo contenuto? (1)

(R)
è possibile con un escamotage. Infatti, il formato dei controlli nella modalità maschere continue si ripercuote identico in tutte le sezioni corpo visibili.
Avrete però notato che la proprietà formato di un controllo prevede la (unica) possibilità di cambiare il colore del foreground a seconda che il valore (numerico) sia positivo, negativo, zero o nullo.
Esempio: "000"[Verde];"000"[Rosso];"Zero"[Blu];"Null" Risultato: il valore viene presentato a tre cifre in verde se >0, in rosso a tre cifre se <0, mentre scrive Zero in blu se =0.
Ciò detto, con un controllo calcolato (che chiameremo Furbo) che riconduca a questi casi, si può realizzare l'effetto voluto.
è sufficiente impostare quanto segue:
1) Background trasparente del controllo (originale) da evidenziare
2) Controllo Furbo in secondo piano con le stesse dimensioni e posizione del primo
3) Font del Furbo: un carattere che abbia dei bei quadratoni pieni (es. Terminal)
4) Formato del Furbo: "[[[[[[[[["[Verde];"[[[[[[[[["[Rosso];"[[[[[[[[["[Blu] (la [ corrisponde al quadratone nel caso del Terminal)
5) Dimensione font del Furbo meglio se abbastanza grande (20) (volendo va bene anche una sola [ con dimensione enorme)
In pratica succede che il Furbo ha un formato variabile, e quindi mostrerebbe valori positivi, negativi o nulli in colori diversi, ma invece delle cifre le [ producono una bella barra colorata.
Se non è chiaro come ottenere il Furbo calcolato ecco un esempio:
Vogliamo che una form visualizzi un elenco di date, evidenziando in rosso quelle che cadono di domenica.
Abbiamo detto che la proprieta' formato si gestisce solo con dati numerici, per cui trasformiamo una data in numero con weekday. Poi dobbiamo sottrarre 1 per ottenere "domenica=0".
ctlFurbo = weekday(ctlData)-1
ctlFurbo.Format = "[[[[[[[[["[Verde];;"[[[[[[[[["[Rosso]


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.