Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Formattazione font singola cella
#1
Ho questa stringa
Code:
%100^T:BRUCIATORI;{<%100T:BRUCIATORE EDIFICIO PRINCIPALE;|~1%20T:BLOCCO;|%20T#0F0:MARCIA;|%20#CCCT:ABILITATO;}/{_<%100T:BRUCIATORE TIRGO;|~2%20T:BLOCCO;|%20T#0F0:MARCIA;|%20#CCCT:ABILITATO;}
e forrei formattare in carattere italic solo determinate parti ma non ci riesco in quanto la formattazione viene data a tutto quello che segue lo styler "fi".

Se volessi per esempio formattare solo il testo " BRUCIATORI" ad inizio stringa?
Grazie
Reply
#2
Potresti semplicemente suddividere il singolo oggetto TESTO in due differenti, e per cascuno dare una formattazione:

Questo:

T:BRUCIATORE EDIFICIO PRINCIPALE;

Diventa:

Tfbi:BRUCIATORE;T: EDIFICIO PRINCIPALE;

Nota:
- se hai necessità di modificare in runtime la scritta, usa l'oggetto MESSAGGIO al posto dell'oggetto TESTO.
- se vuoi cambiare in runtime anche lo stile di un particolare oggetto/container (colore, dimensione etc..) non serve inviare un nuovo pannello, ma aggiungere l'oggetto "panel comand" ("comand S"), leggi qui: http://www.miupanel.com/Objects/PANEL-COMMANDS
Reply
#3
(03-21-2016, 02:15 PM)Technomaker Wrote: Potresti semplicemente suddividere il singolo oggetto TESTO in due differenti, e per cascuno dare una formattazione:

Questo:

T:BRUCIATORE EDIFICIO PRINCIPALE;

Diventa:

Tfbi:BRUCIATORE;T: EDIFICIO PRINCIPALE;

Nota:
- se hai necessità di modificare in runtime la scritta, usa l'oggetto MESSAGGIO al posto dell'oggetto TESTO.
- se vuoi cambiare in runtime anche lo stile di un particolare oggetto/container  (colore, dimensione etc..) non serve inviare un nuovo pannello, ma aggiungere l'oggetto "panel comand" ("comand S"), leggi qui:  http://www.miupanel.com/Objects/PANEL-COMMANDS
Ok, il problema della formattazione dei testi l'ho risolto ma mi i è posto un nuovo problema:

con questa definizione di pannello
Code:
mySerial.println("-d1{%95^{*15Tfi:BRUCIATORI;}%100^{_<%100T:EDIFICIO1;|~1%20T#111:BLOCCO;|~2%20T#111:MARCIA;|~3%20T#111:ABILITATO;}/{_<%100T:EDIFICIO2;|~4%20T:BLOCCO;|~5%20T#0F0:MARCIA;|~6%20#CCCT:ABILITATO;}}");
 vorrei cambiare i colori  di tre testi (per ora della prima serie di tre BLOCCO, MARCIA, ABILITATO) in base ad alcune condizioni questo è lo sketch che sto tentando di far andare ma che che per ora non funge:

Code:
    if(digitalRead(abil1) == LOW){ // se abilitato
        mySerial.println("#C4:s~3:#CCC");    // cambia colore alla scritta ABILITATO11 > GRIGIA
        digitalWrite(out1, HIGH);
        if( inm1 == LOW){ // se acceso
            mySerial.println("C5:s~2:#0F0");    // cambia colore alla scritta MARCIA1 > VERDE
        }else{
          mySerial.println("C5:s~2:");    // cambia colore alla scritta MARCIA1 > NERA
        }
    }else{
        digitalWrite(out1, LOW);
        mySerial.print("#C6:s~2");    // cambia colore alla scritta MARCIA1 > NERA
        mySerial.println("#C7:s~3");    // cambia colore alla scritta ABILITATO11 > NERA
    }

Di default le scritte dovrebbero rimanere nere (su uno sfondo nero quindi invisibili, spente) quando abilito "abil1"  la scritta ABILITATO 1 diventa grigia (e le altre rimangono nere) In questa condizione se abilito "inm1" la scritta MARCIA  diventa verde (ABILITATO1 rimane grigia). Come fare?
Reply
#4
Ho risolto il problema sopra indicato ma sto scontrandomi con un'altra stranezza e
anche se vedo poco interesse/pochi utenti/poche risposte provo a chiedere lo stesso:


Code:
/*-----------( INFO )-------------
- PROGETTO: Abilitazione-marcia-blocco
- COSA FA: legge tre ingressi e visualizza gli stati su uPanel
- CONNESSIONI: tutti i contatti chiudono verso GND
- DATA ULTIMO AGGIORNAMENTO: 23/03/2016
    */
#include "SoftwareSerial.h"
#define inm1 4    // marcia 1
#define inb1 5    // blocco 1
#define abil1 6    // abilitazione 1

SoftwareSerial mySerial(10, 11);  // seriale virtuale RX - TX

void setup(){
    pinMode(inm1, INPUT_PULLUP);
    pinMode(inb1, INPUT_PULLUP);
    pinMode(abil1, INPUT_PULLUP);
    Serial.begin(9600);
    mySerial.begin(57600);
    mySerial.println("");    // azzera la seriale
    //mySerial.println("$P:~1T*15#111:BLOCCO  ;~2T*15#111:MARCIA  ;~3T*15#111:ABILITATO  ;"); // >>FUNZIONANTE<<
    //mySerial.println("$P:%100^{<%100T:EDIFICIO PRINCIPALE;|~1T%10#111:BLOCCO;|~2T%10#111:MARCIA;|~3T%10#111:ABILITATO;}");  //NON FUNZIONA
    //mySerial.println("$P:{~1T*15#111:BLOCCO;|~2T*15#111:MARCIA;|~3T*15#111:ABILITATO;}");  // >>NON FUNZIONA<<
}
void loop(){

    if(digitalRead(abil1) == 0){ // se abilitato
        mySerial.println("#C5:s~3:#FF0");    // cambia colore alla scritta ABILITATO11 > VERDE

        if(digitalRead(inb1) == 1){    // se NON in blocco
            mySerial.println("#C3:s~1:");    // cambia colore alla scritta BLOCCO1 > GRIGIA
            if(digitalRead(inm1) == 0){    // se in marcia
              mySerial.println("#C4:s~2:#0F0");    // cambia colore alla scritta MARCIA1 > VERDE  
            }else{
                mySerial.println("#C4:s~2:");    // cambia colore alla scritta MARCIA1 > GRIGIA
            }
        }else{
            mySerial.println("#C3:s~1:#F00");    // cambia colore alla scritta BLOCCO1 > ROSSA
            mySerial.println("#C4:s~2:");    // cambia colore alla scritta MARCIA1 > GRIGIA
        }
    }else{
        mySerial.println("#C5:s~3:");    // cambia colore alla scritta ABILITATO11 > GRIGIA
        mySerial.println("#C4:s~2:");    // cambia colore alla scritta MARCIA1 > GRIGIA
        mySerial.println("#C3:s~1:");    // cambia colore alla scritta BLOCCO1 > GRIGIA
    }
}
Nel setup ci sono tre pannelli commentati :il primo è perfettamente funzionante e cambia i colori dei testi come scritto nel codice.
Il secondo ha un'anomalia che non fa cambiare nessun colore ai testi
Il terzo funziona solo se NON inserisco i tre testi in colonne utilizzando la barra |

E' frustrante...
Reply
#5
Ciao Franchelli,

tutte e tre le versioni riportate sono in realtà formalmente errate anche se la prima funziona per un effetto "collaterale".
Il simbolo tilde ~ è uno STYLER usato per associare un ID ad un oggetto o contenitore. Come tutti gli altri styler va quindi inserito nel punto
giusto, ossia dopo il simbolo dell'oggetto o del contenitore a cui si deve riferire. In particolare, per gli oggetti, va messo prima dei parametri assieme agli altri styler.

Vediamo ora di capire perché le tue versioni sono sbagliate:

Versione 1:

~1T*15#111:BLOCCO ;~2T*15#111:MARCIA ;~3T*15#111:ABILITATO ;

Il simbolo ~ precede l'oggetto T e quindi associato al nulla (poi funziona perché in questo caso l' HCTML capisce che non ha senso assegnare ~ al nulla e quindi lo applica al simbolo che segue)

Versione 2:

%100^{<%100T:EDIFICIO PRINCIPALE;|~1T%10#111:BLOCCO;|~2T%10#111:MARCIA;|~3T%10#111:ABILITATO;}

I simboli ~ vengono applicati al simbolo di cella della tabella e non all'oggetto testo. Dato che poi l'oggetto testo ha una propria specifica di colore, quella della tabella non ha effetto sul testo.

Versione 3:

{~1T*15#111:BLOCCO;|~2T*15#111:MARCIA;|~3T*15#111:ABILITATO;}

il primo ~ viene applicato all'intera tabella, il secondo ed il terzo alle rispettive celle.

Versione Corretta:

la versione corretta dovrebbe essere semplicemente:

{T~1*15#111:BLOCCO;|T~2*15#111:MARCIA;|T~3*15#111:ABILITATO;}

Saluti!
Reply
#6
Huh 

Caaspita funziona davvero.....  Big Grin   Leggendo gli esempi mi pareva di aver capito che la tilde con il suo relativo ID andasse posta PRIMA dell'oggetto di riferimento.

Ti riporto uno stralcio della guida:


Quote:
Code:
Example 1.

Panel definition:

Define a panel with a container (having global_id = 1 with following styles: background = white, dimension= 50x50, and styler "align content at center") and a object led inside (having object ID = 1 and status off).

{~1!FFF%50,50^L1G:0;}

Object usage:

Using the panel command (slot 3), change the style "background color" (to color red) and the dimensions (to 20x20), add the style "border", of the container with global id = 1, leaving the other styles as specified in the panel definition:

#C3:s~1:!F00-%20,20
DA quello che si capisce (io capisco...) in questo codice
Code:
{~1!FFF%50,50^L1G:0;}
la tildeed ID sta PRIMA di tutto il resto, o sbaglio?
Comunque grazie mille sei stato rilsolutivo.
Reply
#7
(03-23-2016, 01:39 PM)Franchelli Wrote: Huh 

Caaspita funziona davvero.....  Big Grin   Leggendo gli esempi mi pareva di aver capito che la tilde con il suo relativo ID andasse posta PRIMA dell'oggetto di riferimento.

Ti riporto uno stralcio della guida:


Quote:
Code:
Example 1.

Panel definition:

Define a panel with a container (having global_id = 1 with following styles: background = white, dimension= 50x50, and styler "align content at center") and a object led inside (having object ID = 1 and status off).

{~1!FFF%50,50^L1G:0;}

Object usage:

Using the panel command (slot 3), change the style "background color" (to color red) and the dimensions (to 20x20), add the style "border", of the container with global id = 1, leaving the other styles as specified in the panel definition:

#C3:s~1:!F00-%20,20
DA quello che si capisce (io capisco...) in questo codice
Code:
{~1!FFF%50,50^L1G:0;}
la tildeed ID sta PRIMA di tutto il resto, o sbaglio?
Comunque grazie mille sei stato rilsolutivo.

E' molto semplice: la tilde deve seguire l'elemento che vuoi modificare. Se vuoi modificare l'intera tabella segue {, se vuoi modificare la cella, la tilde deve seguire il simbolo |, se vuoi modificare il testo, la tilde deve seguire il simbolo T.....

Insomma, va usato esattamente come gli styler.... infatti per cambiare il colore del testo il simbolo # si mette dopo T, non prima.

Ciao
Reply
#8
Quote:E' molto semplice: la tilde deve seguire l'elemento che vuoi modificare. Se vuoi modificare l'intera tabella segue {, se vuoi modificare la cella, la tilde deve seguire il simbolo |, se vuoi modificare il testo, la tilde deve seguire il simbolo T.....

Insomma, va usato esattamente come gli styler.... infatti per cambiare il colore del testo il simbolo # si mette dopo T, non prima.

Ciao


Ma certo è chiaro, va trattato proprio come uno styler qualsiasi... Volevo solo farti vedere da dove partiva il mio errore anche perchè forse gli esempi sono un po' fuorvianti se non errati.
Reply
#9
(03-23-2016, 02:05 PM)Franchelli Wrote:
Quote:E' molto semplice: la tilde deve seguire l'elemento che vuoi modificare. Se vuoi modificare l'intera tabella segue {, se vuoi modificare la cella, la tilde deve seguire il simbolo |, se vuoi modificare il testo, la tilde deve seguire il simbolo T.....

Insomma, va usato esattamente come gli styler.... infatti per cambiare il colore del testo il simbolo # si mette dopo T, non prima.

Ciao


Ma certo è chiaro, va trattato proprio come uno styler qualsiasi... Volevo solo farti vedere da dove partiva il mio errore anche perchè forse gli esempi sono un po' fuorvianti se non errati.

A me sembra tutto corretto. Si dice:

"Define a panel with a container (having global_id = 1..."

Infatti l'obiettivo dell'esempio è assegnare l'ID 1 all'intera tabella (container) e quindi è corretto che la tilde segua il simbolo {

Reply
#10
(03-23-2016, 02:12 PM)Simone Wrote: A me sembra tutto corretto. Si dice:

"Define a panel with a container (having global_id = 1..."

Infatti l'obiettivo dell'esempio è assegnare l'ID 1 all'intera tabella (container) e quindi è corretto che la tilde segua il simbolo {


Si, infatti ho capito male io dato che l'inglese lo capisco molto poco.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)