使用LF分隔符而不是製表符複製列錶框內容?如果復制列錶框的突出顯示內容,則會得到製表符分隔的字符串。 但是我希望每個選定的條目都在自己的行上。
nw = new window("test",
lb = list box({"AAAAA", "BBBBB", "CCCCC", "DDDDD"}, width(100),
max selected(-1),
nlines(8)
)
);
如果我突出顯示最後三個條目並右鍵單擊複製

我得到這個字符串:
BBBBB CCCCC DDDDD
我想要的是:
BBBBB
CCCCC
DDDDD
我可以創建自己的“複製到剪貼板”按鈕來進行轉換,但是有沒有更簡單的方法?
Re:用LF分隔符而不是製表符複製列錶框內容?您可以嘗試在每個值的末尾添加\!n,看看是否能滿足您的需求。這將是一團糟,但可能會完成工作Re:用LF分隔符而不是製表符複製列錶框內容?有趣的想法Jim,但結果列錶框顯示空白。 當我突出顯示行並按CTRL-C時,粘貼的結果位於單獨的行中,但選項卡仍然存在。
我有多個列錶框,人們希望從中復制它們。在每個使用此邏輯的按鈕的頂部都有一個專用按鈕:
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:用LF分隔符而不是製表符複製列錶框內容? @pmroz ,
除了管理按鈕框和列錶框之外,您的解決方案還不錯。但是,您可以使用相對對象引用:每個“複製按鈕”和“列錶框”都嵌套在VListBox容器中,對於ButtonBox,請使用 << Set Function(函數({this} ...) 列錶框可以引用為 (此<<同胞)<<被選中等 附加了一個名為Copy_ButtonBoxSib.jsl的腳本示例。 這對您來說可能並不新鮮,只是在社區博客上作為對其他人的僅供參考。
一種列錶框() 可以選擇 <<設置上下文腳本() 。使用上下文菜單腳本時,不需要復制按鈕。
我還沒有弄清楚菜單腳本中是否有引用自己的方法。這是一個帶有3 ListBox的簡單腳本,帶有要復制的上下文菜單腳本:
- 選擇項目
- 右鍵單擊列錶框,將出現“複製”,將其選中。
- 我放置了一個按鈕來粘貼文本進行測試
請參閱屏幕截圖和腳本。

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:用LF分隔符而不是製表符複製列錶框內容?謝謝 @ gzmorgan0 這是一個非常酷的技術。 現在,我必須訓練用戶右鍵單擊>複製,而不是使用CTRL-C。
Re:用LF分隔符而不是製表符複製列錶框內容?您可以評估函數中的框以發送自引用函數。
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 *最後,我檢查了加密後此方法不起作用。
Re:用LF分隔符而不是製表符複製列錶框內容?謝謝 @vince_faller 。 這消除了for循環的需要。
replace()傳遞JMP解析器,在該解析器中,立即分配屬性無效。 很好的工作。