OlegTimkiv Posted March 6, 2020 Posted March 6, 2020 Добрый день! Подскажите пожалуйста, как можно скопировать значение выделенной ячейки в буфер, на стороне клиента если editing = false; "document.execCommand(''copy'')" Quote
Sherzod Posted March 6, 2020 Posted March 6, 2020 Добрый день! Может Вам нужно использовать такой подход? function copyToClipboard(text) { window.prompt("Copy to clipboard: Ctrl+C, Enter", text); } Quote
OlegTimkiv Posted March 11, 2020 Author Posted March 11, 2020 On 3/6/2020 at 4:48 PM, Sherzod said: Добрый день! Может Вам нужно использовать такой подход? function copyToClipboard(text) { window.prompt("Copy to clipboard: Ctrl+C, Enter", text); } В некоторых браузерах есть checkbox -"Не давать этой странице создавать дополнительные диалоговые окна". Хотелось бы, сразу в буфер копировать. Такое тоже работать не будет "window.clipboardData.setData("Text", MainForm.UniEdit1.getValue());" Quote
Sherzod Posted March 11, 2020 Posted March 11, 2020 On 3/6/2020 at 3:26 PM, OlegTimkiv said: как можно скопировать значение выделенной ячейки в буфер, на стороне клиента если editing = false Добрый день, Пожалуйста еще раз уточните... Каким образом Вы хотите скопировать значение, с помощью Ctrl+C, "ButtonCopy.Click", ... ? Quote
OlegTimkiv Posted March 11, 2020 Author Posted March 11, 2020 Just now, Sherzod said: Добрый день, Пожалуйста еще раз уточните... Каким образом Вы хотите скопировать значение, с помощью Ctrl+C, "ButtonCopy.Click", ... ? ButtonCopy.Click Quote
Sherzod Posted March 11, 2020 Posted March 11, 2020 17 minutes ago, OlegTimkiv said: ButtonCopy.Click Попробуйте... 1. UniDBGrid1.ClientEvents.UniEvents -> function beforeInit(sender, config) { sender.copyToClipboard = str => { const el = document.createElement('textarea'); el.value = sender.getSelection()[0].data[sender.uniCol]; document.body.appendChild(el); el.select(); document.execCommand('copy'); document.body.removeChild(el); }; } 2. Использование: procedure TMainForm.UniButton2Click(Sender: TObject); begin UniDBGrid1.JSInterface.JSCall('copyToClipboard', []); end; 1 Quote
OlegTimkiv Posted March 11, 2020 Author Posted March 11, 2020 3 minutes ago, Sherzod said: Попробуйте... 1. UniDBGrid1.ClientEvents.UniEvents -> function beforeInit(sender, config) { sender.copyToClipboard = str => { const el = document.createElement('textarea'); el.value = sender.getSelection()[0].data[sender.uniCol]; document.body.appendChild(el); el.select(); document.execCommand('copy'); document.body.removeChild(el); }; } 2. Использование: procedure TMainForm.UniButton2Click(Sender: TObject); begin UniDBGrid1.JSInterface.JSCall('copyToClipboard', []); end; Огромное Вам спасибо! Всё работает! 1 Quote
zilav Posted February 10, 2021 Posted February 10, 2021 С последними FF кстати не работает, дает ошибку Quote document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler. Quote
Sherzod Posted February 10, 2021 Posted February 10, 2021 21 minutes ago, zilav said: С последними FF кстати не работает, дает ошибку FF 85.0.2 (64-битный) - работает... Quote
zilav Posted February 10, 2021 Posted February 10, 2021 странно, тогда неясно почему у меня в PaleMoon не работает который на базе ff сделан. да и про ошибку такого типа на ff есть обсуждения, да она обходится, но городить огород ради каких-то нюансов отдельных браузеров не хочется https://stackoverflow.com/questions/41094318/firefox-document-execcommand-cut-copy-was-denied-because-it-was-not-calle Quote
Sherzod Posted February 10, 2021 Posted February 10, 2021 3 minutes ago, zilav said: странно, тогда неясно почему у меня в PaleMoon не работает который на базе ff сделан. да и про ошибку такого типа на ff есть обсуждения, да она обходится, но городить огород ради каких-то нюансов отдельных браузеров не хочется https://stackoverflow.com/questions/41094318/firefox-document-execcommand-cut-copy-was-denied-because-it-was-not-calle On 3/11/2020 at 11:35 AM, Sherzod said: procedure TMainForm.UniButton2Click(Sender: TObject); begin UniDBGrid1.JSInterface.JSCall('copyToClipboard', []); end; Можно еще попробовать перенести код на клиентскую сторону, в функцию click. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.