26.02.2009, 15:20 | #1 |
Участник
|
фильтр на копировании в буфер обмена
добрый день, коллеги - у меня стоит такая задача.
При копировании через буфер обмена содержимого грида в EXCEL надо в момент копирования в буфер отсечь определенные записи, скажите какой метод на форме или датасорсе мне надо перекрыть, пробовал многие - толку нет никакого |
|
26.02.2009, 16:22 | #2 |
Участник
|
ИМХО - нереально. Разве что ставить фильтр на грид перед копированием.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
26.02.2009, 16:55 | #3 |
Участник
|
я тоже прихожу к такому выводу , фильтр я бы поставил но там зависимость попадания в буфер обмена от сложного дисплей метода
|
|
26.02.2009, 17:05 | #4 |
Программатор
|
Сделайте кнопку для выгрузки в Эксель. Меньше гемора, но и помедленнее правда.
|
|
26.02.2009, 17:28 | #5 |
Участник
|
намного медленнее - поэтому пришлось через буфер обмена
|
|
26.02.2009, 17:55 | #6 |
Участник
|
Перехватите в мтетоде task() формы событие копирования в буфер, скопируйте буфер в свою переменную, отредактируйте её и запихните в буфер обмена
зы X++: #define.taskCopy(771)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy Последний раз редактировалось ivas; 26.02.2009 в 17:59. |
|
26.02.2009, 18:07 | #7 |
Боец
|
Чуть опоздал, но как пример к предыдущему посту.
перед super() в методе task() формы делаем вставку X++: //EVO --> #task if (_taskId == #taskCopy) { //TODO: track selected records and copy to clipboard manually (use class TextBuffer) return _taskId; } //EVO <-- Последний раз редактировалось DSPIC; 26.02.2009 в 18:09. |
|
26.02.2009, 18:11 | #8 |
Участник
|
вот набросал примерчик)
X++: #define.taskCopy(771) public int task(int _taskId) { TextBuffer txtBuffer; str text; int ret; if (_taskId != #taskCopy) ret = super(_taskId); else { ret = super(_taskId); txtBuffer = new TextBuffer(); txtBuffer.fromClipboard(); text = txtBuffer.getText(); //крячим буфер) txtBuffer.setText(text); txtBuffer.toClipboard(); } return ret; }
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
26.02.2009, 18:13 | #9 |
Axapta
|
А если пойти от обратного немного. То есть сделать кнопку, по которой выделять только нужные записи. А их уже копировать в эксель. Должно быть существенно проще.
Про выделение строк тут: Как пометить на grid_е несколько строк ? |
|
26.02.2009, 18:15 | #10 |
Участник
|
или в таске с ненужных просто убрать выделение) так наверно ещё проще
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
26.02.2009, 18:19 | #11 |
Axapta
|
Нет. Я бы делал именно так, как написал выше. Это позволит пользователю увидеть, какие строки попадут в отчет и, при необходимости, подкорректировать что-то. И не будет вопросов, почему какая-то строка не выгрузилась в эксель. А все эти перехваты тасков без особой необходимости от лукавого, имхо.
|
|
26.02.2009, 18:24 | #12 |
Участник
|
Цитата:
Сообщение от oip
Нет. Я бы делал именно так, как написал выше. Это позволит пользователю увидеть, какие строки попадут в отчет и, при необходимости, подкорректировать что-то. И не будет вопросов, почему какая-то строка не выгрузилась в эксель. А все эти перехваты тасков без особой необходимости от лукавого, имхо.
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
26.02.2009, 18:30 | #13 |
Axapta
|
Зачем запрещать? Я не вижу в постановке задачи, почему копировать все запрещено. Захотел пользователь скопировать все, скопировал все. Захотел только то, что надо, скопировал то, что надо. Может я неправильно понимаю задачу, но сейчас я ее вижу так: нужно дать пользователю возможность быстро выгрузить в эксель строки, отобранные по определенному критерию. И все, больше ничего.
|
|
|
За это сообщение автора поблагодарили: ZVV (1). |
26.02.2009, 18:33 | #14 |
Участник
|
Судя по всему это для защиты данных от "дурака") т.к. есть куча софта позволяющего грабить текст прямо с экрана)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
26.02.2009, 18:38 | #15 |
Axapta
|
Во-первых, про это нигде не написано. Во-вторых, безопасность данных должна достигаться совсем другими средствами, а не перехватом метода task. Не забывайте про обычный скриншот, например. Или пользователь может ручками просто создать в экселе "ненужную" строку.
|
|
26.02.2009, 21:10 | #16 |
Участник
|
коллеги - огромное спасибо за ответы ! Помогло. Воспользовался методом markRecord, во время перебора строк и определяю нужно ли выделять для последующего копирования или нет
|
|
Теги |
buffer, clipboard, copy, excel, grid, буфер обмена, грид, сеть, копирование |
|
|