Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede?Se copio il contenuto evidenziato di una casella di riepilogo, ottengo una stringa delimitata da tabulazioni. Tuttavia, desidero che ogni voce selezionata sia sulla propria riga.
nw = new window("test",
lb = list box({"AAAAA", "BBBBB", "CCCCC", "DDDDD"}, width(100),
max selected(-1),
nlines(8)
)
);
Se evidenzio le ultime tre voci e faccio clic con il pulsante destro del mouse su Copia

Ricevo questa stringa:
BBBBB CCCCC DDDDD
Quello che voglio è questo:
BBBBB
CCCCC
DDDDD
Posso creare il mio pulsante "Copia negli Appunti" che eseguirà la conversione, ma esiste un modo più semplice?
Ri: Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede?potresti provare ad aggiungere \! n alla fine di ogni valore e vedere se questo ti dà quello che vuoi. Sarebbe un kluge, ma potrebbe portare a termine il lavoroRi: Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede?Idea interessante Jim, ma la casella di riepilogo risultante mostra spazi vuoti. Quando metto in evidenza le righe e premo CTRL-C i risultati incollati sono su linee separate ma le schede sono ancora lì.
Ho più caselle di riepilogo da cui le persone vogliono copiare; Ho un pulsante dedicato nella parte superiore di ognuno che utilizza questa logica:
lf = "
";
nw = new window("test",
cb = button box("Copy to Clipboard",
selected_items = lb << get selected;
if (nitems(selected_items) > 0,
set clipboard(concat items(selected_items, lf)),
),
),
lb = list box({"AAAAA", "BBBBB", "CCCCC", "DDDDD"}, width(100),
max selected(-1),
nlines(8)
)
);
Ri: Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede? @pmroz ,
La tua soluzione non è poi così male, ad eccezione della gestione della casella dei pulsanti e della casella di riepilogo. Tuttavia, è possibile utilizzare riferimenti ad oggetti relativi: ogni pulsante Copia e ListBox sono nidificati in un contenitore VListBox e per ButtonBox, utilizzare << Imposta funzione (Funzione ({this} ...)) dove la casella di riepilogo può essere indicata come (questo << fratello) << viene selezionato , eccetera. Un esempio di script chiamato Copy_ButtonBoxSib.jsl è allegato. Questo probabilmente non è una novità per te, proprio qui come FYI per gli altri sul Blog della community.
UN ListBox () ha un'opzione per << Imposta contesto Script () . Con uno script del menu di scelta rapida, il pulsante Copia non è richiesto.
Non ho capito se esiste un metodo per fare riferimento a se stesso nello script del menu. Ecco un semplice script con 3 ListBox con uno script del menu di scelta rapida da copiare:
- Seleziona gli articoli
- Fare clic con il tasto destro in ListBox, apparirà Copia, selezionarlo.
- Ho inserito un pulsante per incollare il testo per testarlo
Guarda lo screenshot e lo script.

Names Default to Here(1);
lf = "\!N";
mylb =Function({usrlist}, {lb},
lb = ListBox(usrlist, width(100), max selected(-1), nlines(8));
lb
);
mycopy = Function({this}, {sel},
sel = this << get selected;
if(nitems(sel)>0, set clipboard(concat items(sel,lf)) )
);
mylist1 = {"AAAAA", "BBBBB", "CCCCC", "DDDDD"};
mylist2 = {"xxxxx", "yyyyy", "zzzzz", "wwwww"};
mylist3 = {"dog", "cat", "parrot", "hamster"};
lb1 = mylb(mylist1);
lb2 = mylb(mylist2);
lb3 = mylb(mylist3);
list_lb = {lb1, b2,lb3};
Names Default To Here( 1 );
New Window( "Example",
VlistBox(
HListbox(lb1,lb2,lb3),
ButtonBox("show It", <<SETFUNCTION></SETFUNCTION>Ri: Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede?Grazie @ gzmorgan0 è una tecnica davvero interessante. Ora dovrò addestrare i miei utenti a fare clic con il pulsante destro del mouse> Copia anziché utilizzare CTRL-C.
Ri: Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede?È possibile valutare la casella nella funzione per inviare una funzione autoreferenziale.
mylb =Function({usrlist}, {lb},
lb = ListBox(usrlist, width(100), max selected(-1), nlines(8));
Eval(Substitute(
Expr(DV_LB << Set Context Menu Script({"Copy", mycopy(DV_LB)})),
Expr(DV_LB), lb
));
lb;
);
* CAVEAT * ultimo ho controllato questo metodo non funziona quando crittografato.
Ri: Copia il contenuto della casella di riepilogo con i delimitatori LF anziché le schede?Grazie @vince_faller . Questo elimina la necessità di un ciclo for.
Il sostituto () passa il parser JMP, dove l'assegnazione immediata della proprietà non ha funzionato. Bello aggirare.