AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2009, 15:20   #1  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
фильтр на копировании в буфер обмена
добрый день, коллеги - у меня стоит такая задача.
При копировании через буфер обмена содержимого грида в EXCEL надо в момент копирования в буфер отсечь определенные записи, скажите какой метод на форме или датасорсе мне надо перекрыть, пробовал многие - толку нет никакого
Старый 26.02.2009, 16:22   #2  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
ИМХО - нереально. Разве что ставить фильтр на грид перед копированием.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
Старый 26.02.2009, 16:55   #3  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
я тоже прихожу к такому выводу , фильтр я бы поставил но там зависимость попадания в буфер обмена от сложного дисплей метода
Старый 26.02.2009, 17:05   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Сделайте кнопку для выгрузки в Эксель. Меньше гемора, но и помедленнее правда.
Старый 26.02.2009, 17:28   #5  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
намного медленнее - поэтому пришлось через буфер обмена
Старый 26.02.2009, 17:55   #6  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Перехватите в мтетоде 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  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1238 (44) ++++++++
Регистрация: 11.04.2008
Чуть опоздал, но как пример к предыдущему посту.
перед 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  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
вот набросал примерчик)
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;
}
имхо лучше сделать как сказал Sada
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 26.02.2009, 18:13   #9  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
А если пойти от обратного немного. То есть сделать кнопку, по которой выделять только нужные записи. А их уже копировать в эксель. Должно быть существенно проще.

Про выделение строк тут: Как пометить на grid_е несколько строк ?
Старый 26.02.2009, 18:15   #10  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от oip Посмотреть сообщение
А если пойти от обратного немного. То есть сделать кнопку, по которой выделять только нужные записи. А их уже копировать в эксель. Должно быть существенно проще.
или в таске с ненужных просто убрать выделение) так наверно ещё проще
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 26.02.2009, 18:19   #11  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Нет. Я бы делал именно так, как написал выше. Это позволит пользователю увидеть, какие строки попадут в отчет и, при необходимости, подкорректировать что-то. И не будет вопросов, почему какая-то строка не выгрузилась в эксель. А все эти перехваты тасков без особой необходимости от лукавого, имхо.
Старый 26.02.2009, 18:24   #12  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от oip Посмотреть сообщение
Нет. Я бы делал именно так, как написал выше. Это позволит пользователю увидеть, какие строки попадут в отчет и, при необходимости, подкорректировать что-то. И не будет вопросов, почему какая-то строка не выгрузилась в эксель. А все эти перехваты тасков без особой необходимости от лукавого, имхо.
В любом случае придеться так или иначе прекрывать task() чтоб запретить копирование всех строк.
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 26.02.2009, 18:30   #13  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Зачем запрещать? Я не вижу в постановке задачи, почему копировать все запрещено. Захотел пользователь скопировать все, скопировал все. Захотел только то, что надо, скопировал то, что надо. Может я неправильно понимаю задачу, но сейчас я ее вижу так: нужно дать пользователю возможность быстро выгрузить в эксель строки, отобранные по определенному критерию. И все, больше ничего.
За это сообщение автора поблагодарили: ZVV (1).
Старый 26.02.2009, 18:33   #14  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от oip Посмотреть сообщение
Зачем запрещать? Я не вижу в постановке задачи, почему копировать все запрещено. Захотел пользователь скопировать все, скопировал все. Захотел только то, что надо, скопировал то, что надо.
Судя по всему это для защиты данных от "дурака") т.к. есть куча софта позволяющего грабить текст прямо с экрана)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 26.02.2009, 18:38   #15  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Во-первых, про это нигде не написано. Во-вторых, безопасность данных должна достигаться совсем другими средствами, а не перехватом метода task. Не забывайте про обычный скриншот, например. Или пользователь может ручками просто создать в экселе "ненужную" строку.
Старый 26.02.2009, 21:10   #16  
Nikolaich is offline
Nikolaich
Участник
 
238 / 10 (1) +
Регистрация: 15.12.2004
коллеги - огромное спасибо за ответы ! Помогло. Воспользовался методом markRecord, во время перебора строк и определяю нужно ли выделять для последующего копирования или нет
Теги
buffer, clipboard, copy, excel, grid, буфер обмена, грид, сеть, копирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Системный буфер обмена LiSA DAX: Программирование 15 01.04.2006 13:00
Не копирует из display-метода в буфер обмена akvi DAX: Программирование 6 08.12.2005 13:14
Буфер обмена novic DAX: Программирование 1 06.06.2005 08:11
Крякозяблики при копировании через буфер обмена kalex DAX: Администрирование 1 13.10.2004 12:36
Вот - про быстр. Ексель, буфер обмена, и т.д. POS DAX: Программирование 22 01.03.2004 18:42

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:27.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.