Jump to content

DBGrid копирование в буфер на стороне клиента,


OlegTimkiv

Recommended Posts

Добрый день! Подскажите пожалуйста, как можно скопировать значение выделенной ячейки в буфер, на стороне клиента если editing = false;  

"document.execCommand(''copy'')"

Link to comment
Share on other sites

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());"

Link to comment
Share on other sites

On 3/6/2020 at 3:26 PM, OlegTimkiv said:

как можно скопировать значение выделенной ячейки в буфер, на стороне клиента если editing = false

Добрый день,

Пожалуйста еще раз уточните...

Каким образом Вы хотите скопировать значение, с помощью Ctrl+C, "ButtonCopy.Click", ... ?

Link to comment
Share on other sites

Just now, Sherzod said:

Добрый день,

Пожалуйста еще раз уточните...

Каким образом Вы хотите скопировать значение, с помощью Ctrl+C, "ButtonCopy.Click", ... ?

ButtonCopy.Click

Link to comment
Share on other sites

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;

 

Link to comment
Share on other sites

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;

 

Огромное Вам спасибо! Всё работает!  

  • Like 1
Link to comment
Share on other sites

  • 10 months later...

странно, тогда неясно почему у меня в PaleMoon не работает который на базе ff сделан. да и про ошибку такого типа на ff есть обсуждения, да она обходится, но городить огород ради каких-то нюансов отдельных браузеров не хочется :) 

https://stackoverflow.com/questions/41094318/firefox-document-execcommand-cut-copy-was-denied-because-it-was-not-calle

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...