10.01.2006, 13:29 | #1 |
Участник
|
TextBuffer.toClipboard не работает
Т.е. не вставляет в буфер содержимое.
Кто знает почему это может быть? Догадки, предположения? Axapta 3.0 SP3, AOS |
|
10.01.2006, 13:36 | #2 |
Участник
|
textBuffer - пуст.
Снова подходит проводница 9го вагона: - Мой вагон пустой (С) Задорнов |
|
10.01.2006, 13:37 | #3 |
NavAx
|
Такое бывает, при работе через терминал. Либо какая-то сторонняя прога хулиганит.
__________________
Isn't it nice when things just work? |
|
10.01.2006, 13:39 | #4 |
Участник
|
или textbuffer создан на сервере.
соответственно данные попадают в буфер сервера, а не клиента. |
|
10.01.2006, 13:50 | #5 |
Злыдни
|
Или вирусня пожрала буфер обмена - было такое, месяц по всей конторе выковыривали...
|
|
10.01.2006, 14:09 | #6 |
Участник
|
Больше всего похоже конечно на вставку в буфер сервера, но не могу понять почему, все объекты создаются на клиенте :-/
textbuffer точно не пуст, это видно в дебаггере |
|
31.03.2006, 20:26 | #7 |
Разработчик
|
Вставка в буфер обмена из TextBuffer работает не всегда
Помогите пожалуйста, если знаете
Замечено аналогичное. В тестовом job (приведенном ниже) вставка в буфер отрабатывает, а тот же код в составе динамического метода класса RSheetLedgerEngine нет. проверяю - client:thin, не удается скопировать данные в буфер обмена, причину не смог выяснить. Код: static void AB_TestTextBufferClient(Args _args) { TextBuffer tb; tb = new TextBuffer(); tb.appendText('777'); info(enum2str(clientKind())+':'+enum2str(clientMode())); tb.toClipboard(); tb = new TextBuffer(); tb.fromClipboard(); if(tb.size() == 0) { info('Не удается скопировать данные в буфер обмена'); } } |
|
03.04.2006, 14:22 | #8 |
Разработчик
|
Проблему удалось обойти. В форму, из которой вызывается метод RSheetLedgerEngine, передаем строку из textBuffer.getText(), т.к. оказалось, что нельзя использовать textBuffer инициализированный в RSheetLedgerEngine, далее все просто:
Код: public void copy() { TextBuffer tb = new TextBuffer(); ; tb.appendText(rLedgerSheetEngine.copy()); tb.toClipboard(); // теперь работает } |
|
|
За это сообщение автора поблагодарили: gefr (1). |
03.04.2006, 15:21 | #9 |
Administrator
|
Цитата:
Сообщение от perestoronin
Объяснить их местом выполнения сервер/клиент нельзя...
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
03.04.2006, 15:41 | #10 |
Участник
|
Цитата:
Сообщение от perestoronin
Объяснить их местом выполнения сервер/клиент нельзя, не годятся и версии изложенные ранее.
А на сервере не работает ни toClipboard() (возвращает true, но данные не сохраняет), ни fromClipboard() (возвращает false)
__________________
Axapta v.3.0 sp5 kr2 |
|
03.04.2006, 16:06 | #11 |
Разработчик
|
Согласен с AndyD. Но странность в том, что для возможности работы с буфером обмена, обязательным условием является то, чтобы TextBuffer был создан обязательно на клиенте и что одно переприсвание объектов TextBuffer не помогает избавится от странного "серверного наследия".
|
|
03.04.2006, 16:21 | #12 |
Administrator
|
В чем странность-то? ИМХО, все логично. Ну, быть может, кроме того, что RunOn для TextBuffer стоило бы, наверное, сделать Client. С другой стороны, никто не мешает Вам создать наследника TextBuffer и выставить ему нужное значение свойства.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
03.04.2006, 16:29 | #13 |
Участник
|
Не забывайте, что TextBuffer на сервере не соответствует TextBuffer на клиенте (это касается любого системного класса). Т.е. интерфейсные методы этих классов одиноковые, но их реализация отличается. На сервере методы toClipboard() и fromClipboard() класса TextBuf являются по сути заглушками, по-этому их использование не дает никаких результатов
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Logger (3), perestoronin (1). |
03.04.2006, 18:20 | #14 |
Разработчик
|
Спасибо всем. Вывод: имеет значение всего лишь место инициализации TextBuffer оператором new (это нужно делать только на клиенте, в моем случае на форме), затем его можно косвенно передать в engine на сервер, там заполнить и даже использовать операторы методы toClipboard() и fromClipboard() на сервере! Все работает, буфер обмена используется при этом клиента (т.к. TextBuffer инициализирован был на клиенте), проверено лично.
Последний раз редактировалось perestoronin; 03.04.2006 в 18:23. |
|
03.04.2006, 18:38 | #15 |
Administrator
|
Цитата:
Сообщение от perestoronin
Вывод: имеет значение всего лишь место инициализации TextBuffer оператором new (это нужно делать только на клиенте, в моем случае на форме), затем его можно косвенно передать в engine на сервер, там заполнить и даже использовать операторы методы toClipboard() и fromClipboard() на сервере!
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
04.04.2006, 12:17 | #16 |
Разработчик
|
А где у класса (системного) TextBuffer можно увидеть и проставить свойство RunOn
Если бы все так легко было бы, я бы и не спрашивал Эту ветку можно закрыть. Вопросы исчерпаны. |
|
04.04.2006, 12:33 | #17 |
Administrator
|
Цитата:
Сообщение от perestoronin
А где у класса (системного) TextBuffer можно увидеть и проставить свойство RunOn
Цитата:
Classes extending other classes will also inherit the RunOn property. You cannot change it if it is Client or Server. If it Called from, you can leave it or change it to Client or Server.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
04.04.2006, 16:27 | #18 |
Разработчик
|
Наследник от TextBuffer мне не нужен... К документации и ... просьба больше меня не посылать. Сюда я обращаюсь только после тщательного и многратного прочтения имеющейся документации, TIP-ов..., книг и просмотра всех существующих форумов
Последний раз редактировалось perestoronin; 04.04.2006 в 16:32. |
|
04.04.2006, 16:46 | #19 |
Administrator
|
Цитата:
Сообщение от perestoronin
Наследник от TextBuffer мне не нужен...
Наследник нужен для того, чтобы узнать, какое значение свойства RunOn имеет класс TextBuffer. То есть, если бы свойство RunOn у наследника было фиксировано и недоступно для изменения, можно было бы с уверенностью сказать, что TextBuffer имеет точно такое же значение RunOn (это было бы либо Client, либо Server). Но, так как значение свойства RunOn для наследников TextBuffer вполне себе доступно для редактирования, значит RunOn для самого TextBuffer равно Called from. Вывод этот мы можем сделать на основании приведенного отрывка из документации. Цитата:
Сообщение от perestoronin
К документации и ... просьба больше меня не посылать. Сюда я обращаюсь только после тщательного и многратного прочтения имеющейся документации, TIP-ов..., книг и просмотра всех существующих форумов
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: perestoronin (1). |
04.04.2006, 19:32 | #20 |
Разработчик
|
Можно и так криво (лишнее наследование, новый класс), но тоже работает
Спасибо. В принципе может даже и лучше, чем передавать объект из формы в engine. Последний раз редактировалось perestoronin; 04.04.2006 в 19:43. |
|