Crea la mia leggenda<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto creando una legenda per mostrare i marcatori - attualmente sta tentando (e fallendo) di ripetere la legenda incorporata, ma vorrei estenderla in seguito.
La linea chiave nello script è:
txtii = car ( M1 [ ii , 2 ]) || " " || NmOra || " = " || car ( M1 [ ii , 1 ]) ;
Questo potrebbe inserire "8 C = -1". testo. Voglio che sia il 'marcatore di(8)' il simbolo 'o' o qualunque sia lo stato del marcatore. Credo che questi siano unicode, quindi penso di aver solo bisogno di analizzarlo correttamente. Grazie per qualsiasi idea.
GetMarker = espr (
mb1 = mb << Ottenere () ;
Mleg = dt << marcatore per colonna ( colonna ( nm [ mb1 ])) ;
marcatore ora = J ( n fila ( dm ) , 1 , 0 ) ;
Per ( ii = 1 , ii <= n fila ( dm ) , ii ++,
marcatore ora [ ii ] = Indicatore di ( Stato di riga ( ii ) ) ;
) ;
Colnow = dt << ottenere come matrice ( colonna ( nm [ mb1 ])) ;
markerNow = ColNow || markerNow ;
markerNow = markerNow [ Rango ( Colnow ) , 0 ] || J ( n fila ( markerNow ) , 1 , 0 ) ;
markerNow [ 1 , 3 ] = 1 ;
Per ( ii = 2 , ii <= n fila ( markerNow ) , ii ++,
Se ( markerNow [ ii , 1 ] == markerNow [ ii - 1 , 1 ] , markerNow [ ii , 3 ] = 0 , markerNow [ ii , 3 ] = 1 ) ;
) ;
M1 = markerNow [ loc ( ColorNow [ 0 , 3 ]) , 1 :: 2 ] ;
NmOra = nm [ mb1 ] ;
// mostra(NmNow, colornow, C1);
Provare ( mTxtBx << Elimina ) ;
Per ( ii = 1 , ii <= n fila ( M1 ) , ii ++,
txtii = car ( M1 [ ii , 2 ]) || " " || NmOra || " = " || car ( M1 [ ii , 1 ]) ;
mTxtBx [ ii ] = Casella di testo ( txtii ) ;
mbp << aggiungere ( mTxtBx [ ii ]) ;
) ;
) ;
Re: Crea la mia leggendaHo seguito questa idea e:
Unicode = {
"253C", "2573", "25A1", "25C7", "25B3", "0059", "005A", "25CB",
"25AD", "25AF", "2217", "16EB", "25AC", "25AE", "25A0", "25C6",
"25BD", "25C1", "25B7", "25B2", "25BC", "25C0", "25B6", "1431",
"2164", "1438", "1433", "2502", "2212", "2215", "2216"
};// Unicode simile ai marcatori numerati in JMPMarkerVal;
Prova(mTxtBx < For(ii=1, ii<= n riga(M1), ii++,
uni="\!" \!\\!!U" || unicode[JMPMarkerVal] || " \!"";
Mostra(ii, M1[ii,1], uni);
mTxtBx[ii]=HListalla Casella(
mTxta[ii]=Casella di testo(analisi(uni), < Casella di testo(": "||NmNow||" = "||char(M1[ii,1])),
);
mbp << append(mTxtBx[ii]); // mbp è un segnaposto nella finestra per la legenda
);
Re: Crea la mia leggendaNon penso che i 32 simboli integrati siano unicode. Ma internamente sembrano occupare i primi 32 caratteri unicode, cioè quelli non stampabili. Prova ad es. mval=43 e otterrai un segno più, tuttavia non identico al simbolo JMP.
Un'idea: utilizzare una tabella unicode (come quella sotto) per contrassegnare le righe che meglio corrispondono alle prime 32 righe e inserirle in un array associativo che può essere utilizzato nello script per tradurre Marker State in simboli unicode. (suggerimento: molti simboli geometrici dall'esagono 2500)
Nuova tavola ( "marcatori in abbondanza" , Aggiungi righe ( 10260 ) , Nuova colonna ( "marcatore" , Stato di riga , "Stato riga" , Formula ( Stato marcatore ( Riga ()))) , Nuova colonna ( "hex unicode" , Carattere , "Nominale" , Formula ( Destra ( Esadecimale ( Riga () , "numero intero" ) , 4 )))) ;
Re: Crea la mia leggendaQuesta sezione del copione mostra che mi sto avvicinando
MFont = arg ( arg ( Ottieni preferenze ( Carattere dell'indicatore ) , 1 ) , 1 ) ; // Determina il carattere utilizzato per i marcatori
uni = "\!" \!\\!!U" || "03B1" || "\!"" ;
mval = 1 ; // Cambia con un simbolo diverso
// Verrà utilizzato per ottenere un valore.
mval_h = esadecimale ( 1 , "numero intero" ) ;
mval_h4 = sost ( mval_h , lunghezza ( mval_h ) - 3 ) ; //L'unicode richiesto sono solo le ultime 4 cifre dell'esadecimale
mostrare ( mval_h4 , lunghezza ( mval_h4 )) ;
mval_unicode = "\!"\!\\!!u" || mval_h4 || "\!"" ; // Unicode pronto
dt1 = nuova tavola ( "Corretto - Il simbolo funziona" ,
aggiungi righe ( 1 ) ,
Nuova colonna ( "Uni" , Carattere , Nominale , Imposta i valori ( Inserire ({} , mval_unicode ) )) ,
) ;
Stato di riga ( Riga () ) = Stato marcatore ( Analizza ( : Uni ) ) ;
// Nota che funziona bene: il marcatore è #1;
nuova finestra ( "Sbagliato: il simbolo della seconda casella è vuoto" ,
Casella di riepilogo a V (
Scatola del pannello ( "uni" || car ( uni ) ,
Casella di testo ( analizzare ( uni )) ,
) ,
Scatola del pannello ( "mval_unicode" || car ( mval_unicode ) ,
Casella di testo ( analizzare ( mval_unicode ) , << Imposta carattere ( MFont )) ,
) ,
)
) ;
// Purtroppo, il simbolo non è nella casella di testo.