Copier le contenu de la zone de liste avec des délimiteurs LF au lieu de tabulations?Si je copie le contenu en surbrillance d'une zone de liste, je reçois une chaîne délimitée par des tabulations. Cependant, je veux que chaque entrée sélectionnée soit sur sa propre ligne.
nw = new window("test",
lb = list box({"AAAAA", "BBBBB", "CCCCC", "DDDDD"}, width(100),
max selected(-1),
nlines(8)
)
);
Si je mets en surbrillance les trois dernières entrées et que vous cliquez sur copier avec le bouton droit de la souris

Je reçois cette chaîne:
BBBBB CCCCC DDDDD
Ce que je veux c'est ceci:
BBBBB
CCCCC
DDDDD
Je peux créer mon propre bouton "Copier dans le presse-papier" qui effectuera la conversion, mais existe-t-il un moyen plus simple?
Re: Copier le contenu de la Listbox avec des délimiteurs LF au lieu d’onglets?vous pouvez essayer d’ajouter \! n à la fin de chaque valeur et voir si cela vous donne ce que vous voulez. Ce serait un kluge, mais cela pourrait faire le travailRe: Copier le contenu de la Listbox avec des délimiteurs LF au lieu d’onglets?Idée intéressante, Jim, mais la liste déroulante obtenue contient des blancs. Lorsque je mets en surbrillance des lignes et appuie sur CTRL-C, les résultats collés apparaissent sur des lignes séparées, mais les onglets sont toujours présents.
J'ai plusieurs listes de sélection que les gens veulent copier; J'ai un bouton dédié en haut de chacun qui utilise cette logique:
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)
)
);
Re: Copier le contenu de la Listbox avec des délimiteurs LF au lieu d’onglets? @pmroz ,
Votre solution n’est pas si mauvaise, sauf pour la gestion de la boîte à boutons et de la liste. Cependant, vous pouvez utiliser des références d'objet relatives: chaque bouton Copier et ListBox sont imbriqués dans un conteneur VListBox et pour le ButtonBox, utilisez << Set Function (Fonction ({this} ...)) où la listbox peut être référencée comme (this << sib) << se faire sélectionner , etc. Un exemple de script appelé Copy_ButtonBoxSib.jsl est joint. Ce n'est probablement pas nouveau pour vous, juste ici en tant que FYI pour d'autres sur le blog de la communauté.
UNE ListBox () a une option pour << Définir le script de contexte () . Avec un script de menu contextuel, le bouton de copie n'est pas requis.
Je n'ai pas trouvé s'il existe une méthode pour se référencer dans le script de menu. Voici un script simple avec 3 ListBox avec un script de menu contextuel à copier:
- Sélectionner des éléments
- Faites un clic droit dans le ListBox, Copy va apparaître, sélectionnez-le.
- J'ai placé un bouton pour coller le texte pour tester ceci
Voir la capture d'écran et le 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>Re: Copier le contenu de la Listbox avec des délimiteurs LF au lieu d’onglets?Merci @ gzmorgan0 c'est une technique vraiment cool. Maintenant, je vais devoir former mes utilisateurs à cliquer avec le bouton droit de la souris> Copier au lieu d'utiliser CTRL-C.
Re: Copier le contenu de la Listbox avec des délimiteurs LF au lieu d’onglets?Vous pouvez évaluer la boîte dans la fonction pour envoyer une fonction auto référentielle.
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 * La dernière fois que j'ai vérifié que cette méthode ne fonctionnait pas, une fois chiffré.
Re: Copier le contenu de la Listbox avec des délimiteurs LF au lieu d’onglets?Je vous remercie @vince_faller . Cela élimine le besoin d'une boucle for.
Substitute () passe à l'analyseur JMP, où l'attribution immédiate de la propriété n'a pas fonctionné. Beau travail autour.