Ciao,
Sto cercando di trovare un modo per scattare un'istantanea delle sole celle popolate di una tabella di dati (cioè senza pannelli laterali, righe vuote nella parte inferiore o colonne vuote a destra).
Recentemente ho scoperto la casella di visualizzazione di Data Grid Box, che mi consente quasi di fare ciò che voglio, ma ho bisogno di un modo per ridimensionarla in modo che la griglia popolata di celle la riempia completamente. Posso farlo manualmente per tentativi ed errori, ma mi piacerebbe farlo automaticamente.
È possibile? Allego sotto un esempio di script che illustra ciò che sto cercando di fare.
Grazie molto
// Inizio del programma;
Nomi predefiniti qui (1);
dt = Open ("$ SAMPLE_DATA / Popcorn.jmp");
dt << pannello laterale chiuso; // Voglio solo vedere la griglia di dati;
// Prima colorerò alcune celle per illustrare qualcosa;
// Qualsiasi resa inferiore a 9 sarà dipinta di rosso;
CellsToPaint = dt << ottiene le righe dove (come colonna (: resa) <9);
: resa << celle colore (Colore RGB (1, 0, 0), CellsToPaint);
// Qualsiasi resa superiore a 15 sarà dipinta di verde;
CellsToPaint = dt << ottiene le righe dove (come colonna (: resa)> 15);
: resa << celle colore (Colore RGB (0, 1, 0), CellsToPaint);
// Inseriscilo in un Data Grid Box in modo che possa essere copiato come un'immagine;
dgb = Data Grid Box (); dgb << Imposta tabella dati (dt);
// Se non lo ridimensiono ci saranno righe e colonne vuote in più visibili;
// Posso ridurlo manualmente - ma voglio automatizzare questo bit se posso;
dgb << set width (325);
dgb << imposta altezza (340);
// Vediamo cosa ho ora;
nuova finestra ("My Data Grid Box", dgb);
Path = "$ DESKTOP / snapshot.png";
dgb << salva l'immagine (Path, "png");
// Riaprila in una scatola di immagini;
pb = picture box (aperto (Path, png));
// E mostra l'immagine finale;
nuova finestra ("My Snapshot", panelbox ("My Snapshot", pb));
// Fine del programma;
Sì, pensavo che quei riferimenti ai colori fossero lì per un motivo
. . .
Anche se 'NumberColBox ()' e StringColBox () 'capiscono' << textColor () 'e' << backgroundColor () 'operano sull'intera colonna come forse ci si aspetterebbe.
Per quanto riguarda la manipolazione dei pannelli laterali, si prega di utilizzare support@jmp.com se si vede un comportamento inaspettato.
Ciao Ian - sì, è vero che potrei farlo in quel modo; tuttavia la motivazione alla base di questa domanda era che volevo conservare la colorazione della cella che avevo incorporato nella tabella dei dati originale. Non penso di poter colorare le celle individualmente in una casella di tabella nello stesso modo in cui posso colorare le celle in una tabella dati, giusto?
Qualcos'altro che mi confonde è che quando ho assemblato originariamente l'esempio all'inizio di questo thread, i pannelli laterali della tabella dati dovevano essere nascosti prima di scattare la schermata (da qui il "dt << chiudi pannello laterale" linea). Comunque ho appena notato che ho fatto un errore lì: quella linea dovere essere "dt << chiudi pannelli laterali (1)". Questo sembra funzionare correttamente, ma quando la tabella dati viene successivamente copiata in Data Grid Box, il pannello laterale a volte (ma non sempre) riappare. Vedo che Data Grid Box ha anche una proprietà "
Grazie molto,
David
Dato il modo in cui descrivi ciò che è necessario, puoi anche provare:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Popcorn.jmp" );
tb = TableBox();
for(c=1, c<=NCol(dt), c++,
thisCol = Column(dt, c);
if ((thisCol << getDataType) == "Numeric",
// Numeric column
tb << Append(NumberColBox(thisCol << getName, thisCol << getValues)),
// Assumed Character column
tb << Append(StringColBox(thisCol << getName, thisCol << getValues))
);
);
Close(dt, NoSave);
tb << savePicture("$DESKTOP/snapshot.png", "png");