Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Drag( Begin! ) и Editable Column / 25 сообщений из 30, страница 1 из 2
04.12.2003, 18:08
    #32344028
Вовик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Хочу инициировать "перетаскивание" Datawindow с помощью скрипта на событие clicked()

Код: plaintext
1.
if row> 0  and ib_DragOnRowClick=true then this.Drag(Begin!)


Так вот. Это срабатывает всегда , за исключением случая , когда пытаемся начать перетаскивать , находясь в поле , где в данный момент находится фокус ввода и есть мигающий курсор.
В этом случае происходит выделение текста с помощью мыши.
Это не лечится ?
...
Рейтинг: 0 / 0
04.12.2003, 19:04
    #32344091
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Нет.
...
Рейтинг: 0 / 0
05.12.2003, 09:51
    #32344361
Вовик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Тогда перефразирую вопрос : можно ли с помощью кода "вывести" элемент (поле) dw из режима редактирования? Может как-то с фокусом можно поиграться?
...
Рейтинг: 0 / 0
05.12.2003, 10:00
    #32344371
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
"Режим редактирования" - такого термина применительно к полю DW не существует.

Быть может поможет acceptText() ???
...
Рейтинг: 0 / 0
05.12.2003, 10:05
    #32344379
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
И чем тебе Ермак поможет AcceptText, интересно узнать :-)) Фокус, то все равно останется в том поле :-))
...
Рейтинг: 0 / 0
05.12.2003, 10:28
    #32344412
Вовик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Можно ли с помощью WinAPI убрать курсор из поля ввода?
...
Рейтинг: 0 / 0
05.12.2003, 10:57
    #32344482
brahew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
А разве нельзя отработать TabKey, перед началом перетаскивания
...
Рейтинг: 0 / 0
05.12.2003, 11:08
    #32344504
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Я написал твой скрипт на clicked DW, ну и если у поля есть свойство Auto Selection, то действительно оно выделяется :-)), но перетаскивание начинается!!!
Что-то я не въехал, а в чем проблема то?
...
Рейтинг: 0 / 0
05.12.2003, 11:20
    #32344527
Вовик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
А ты попробуй перетащить , если ты уже находишься в этом поле , и при этом там есть мерцающий курсор , а поле не выделено целиком.

Т.е. проблема возникает , когда ты один раз кликнул мышью и отпустил кнопку мыши, а затем опять ее нажимаешь и пытаешься начать перетаскивать. Вместо перетаскивания начинается выделение части текста в поле.
...
Рейтинг: 0 / 0
05.12.2003, 11:43
    #32344566
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Вовик, да это так...
Встречный вопрос, а на кой это тебе надо, тоесть перетаскивание DW???
...
Рейтинг: 0 / 0
05.12.2003, 11:49
    #32344577
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Код: plaintext
1.
2.
3.
4.
if acceptText() =  1  then
   if row> 0  and ib_DragOnRowClick=true then
      this.POST Drag(begin!)
   end if
end if	


Да, действительно просто acceptText() здесь не поможет.
...
Рейтинг: 0 / 0
05.12.2003, 12:01
    #32344593
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Молодец Ермак, но AcceptText все равно не нужен!

if row>0 and ib_DragOnRowClick=true then
this.POST Drag(begin!)
end if

Только я все равно не понял, а накой это надо!!!
Вовик ответь, может ты просто в чем-то заблуждаешься...
...
Рейтинг: 0 / 0
05.12.2003, 12:13
    #32344611
Вовик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Склоняю голову, огромное спасибо, Ермак !!!
Кстати , можно и без AcceptText() , главное Post !!!

Код: plaintext
1.
2.
3.
if row> 0  and ib_DragOnRowClick=true then
 this.Post Drag(Begin!)
end if


А нужно это как всегда для удобства интерфейса и экономии места на
экране. Есть 2 DW на одной форме. Перетаскивая записи с одного DW
пользователь выполняет Insert в другое.
Обратное перетаскивание вызывает Delete. ( Кроме того , те же действия
можно выполнить с помощью двойного щелчка мышью , кому как нравится ).
В результате на форме не нужны лишние кнопки.
...
Рейтинг: 0 / 0
05.12.2003, 12:37
    #32344660
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Вовик, так получается, что ты даешь редактировать окно, сохранять, добавлять и перетаскивать строки...
Какое-то не очень хорошое реализация интерфейса... Если б это было разнесено - то и проблем не было :-))
Ну в общем смотри сам :-)) Хозяин - БАРИН.
...
Рейтинг: 0 / 0
05.12.2003, 14:25
    #32344866
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
авторКстати , можно и без AcceptText() , главное Post !!!
Действительно Post в данном вопросе - главное.

Однако.
Первоначально при добавлении или изменении данных пользователь просто вводит текст в так называемый edit control , который находится поверх текущей ячейки.
Для программного чтения/записи содержимого edit control можно использовать gettext() / settext() .
После того как пользователь завершил редактирование, т.е например нажал ENTER или ушел из текущей ячейки, DataWindow выполняет процесс записи содержимого edit control в свой внутренний буфер, естественно выполнив соответствующие проверки, как-то конвертирование строки в соответствующий формат данных, проверка правил валидации, тех что прописаны в validation Expression. Что бы программным способом сбросить данные из edit control в буфер dataWindow необходимо использовать accepttext() .

То есть имеено эта команда "выводит" элемент (поле) dataWindow из режима редактирования.

О чем Вовик собственно и спрашивал.
авторТогда перефразирую вопрос : можно ли с помощью кода "вывести" элемент (поле) dw из режима редактирования?

Если просто сделать
Код: plaintext
 this.Post Drag(Begin!)

То последние изменения сделанные пользовтелем не будут пернесены в другое DW, потому что Event clicked(...) сделанное в текущей ячейке не вызовет автоматического сброса содержимого edit control в буфер datawindow.
Поэтому чтобы избежать гемороя в дальнейшем себе дешевле убедиться, что данные были записаны в буфер dataWindow
Поэтому мой рецепт примерно такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
if acceptText() =  1  then
   this.POST Drag(begin!)
else
   setText(getText())
   return  1 
end if	


PS. Подробности можно прочесть в DataWindow Programmer's Guide ,
Chapter 2 Using DataWindow Objects, Manipulating data in DataWindow control .
...
Рейтинг: 0 / 0
05.12.2003, 14:42
    #32344903
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Ермак, ты конечно молодец! Но! если парню - Вовику надо скопировать записи из одной DW в другую (типа RowsCopy и RowsMove), то AcceptTect еще раз говорю и утверждаю НАФИГ НЕ НУЖЕН!!! ВСЕ ПЕРЕНЕСЕТСЯ ПРОСТО НА УРА!!! Если не веришь то попробуй и не фиг втирать тут всякую лажу :-))
Это шутка, просьба не обижаться...
Но перед тем как утверждать что-то надо хотябы подумать и попробывать.
С уважением,
Я.
...
Рейтинг: 0 / 0
05.12.2003, 15:09
    #32344976
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Я не говорил что без accepttext() - это работать не будет.
Перед тем как что-то написать я всегда стараюсь всё (или почти всё) проверить.

Однако:
Можно обойтись и без POST если в dataWindow для всех полей установить tabSequince = 0, но не думаю, что это будет хорошо для пользователей

Можно спокойно обойтись и без aceptText() если все поля в dataWindow readOnly и это тоже не есть хорошо для пользователей.
...
Рейтинг: 0 / 0
05.12.2003, 15:38
    #32345040
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Ермак, блин я смотрю ты великий перестраховщик, так и пиши в следующий раз, ну тогда как согласуются эти два выражения (ответь сам себе на них и все прекрасно поймешь) авторЯ не говорил что без accepttext() - это работать не будет. и авторТо последние изменения сделанные пользовтелем не будут пернесены в другое DW, потому что Event clicked(...) сделанное в текущей ячейке не вызовет автоматического сброса содержимого edit control в буфер datawindow.
Согласись полное противоречивание своим же высказываниям, а по поводу авториспользовать accepttext().

То есть имеено эта команда "выводит" элемент (поле) dataWindow из режима редактирования вообще и говорить не стоит :-))
Ладно трепаться больше не хочу, Вовик же получил, что хотел...
...
Рейтинг: 0 / 0
05.12.2003, 17:55
    #32345319
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Не вижу никакого притиворечия.

По моему все мои высказывания ни коим образом не противоречат друг другу.
Без использования accepttEXT() POST drag() работать будет, но что бы заметить разницу достаточно просто сравнить твой вариант и предложенный мной.
Выводы делайте сами.
Я рассказал свой взгляд на проблему. Если есть другой, то мне всё равно.

А уж насчет перестраховщик - это ты молодец, мне понравилось.
...
Рейтинг: 0 / 0
05.12.2003, 18:51
    #32345401
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Несмотря на кашевидное изложение мыслей, насчёт интерфейса г-н Я Guest прав. Всяческие Drag операции на редактируемых элементах - это странно.
...
Рейтинг: 0 / 0
05.12.2003, 20:33
    #32345451
Вовик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
На самом деле ничего странного. Поля вообще-то не редактируемые,
а DisplayOnly. Но фокус ввода на них может устанавливаться,
отсюда и возникает курсор.
Само DW типа Grid, поэтому трудно кликнуть где-либо вне поля.
...
Рейтинг: 0 / 0
05.12.2003, 22:17
    #32345479
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Тогда зачем они DisplayOnly?
...
Рейтинг: 0 / 0
08.12.2003, 11:04
    #32346124
andy753
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Ну например для того чтобы скопировать значение поля в клипборду. Если таббордер - 0. Это сделать затруднительно
...
Рейтинг: 0 / 0
08.12.2003, 19:08
    #32346980
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Узко мыслите товрищч andy753 , да и не тому объяснять взялись, для чего DisplayOnly использоваться может :-)

Автор же супер удобный юзер интерфейс с Drag and Drop делает. В таком случае нужно просто маркер на ряд сделать. Если за него потянул, значит операция на весь ряд, если за конкретное поле потянул, значит копирование в клипборд, вот и всё. При этом никакой непоследовательности в интерфейсе не наблюдается...
...
Рейтинг: 0 / 0
09.12.2003, 10:12
    #32347402
Я
Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Drag( Begin! ) и Editable Column
Классное решение Филипп, что ж ты так долго молчал, по крайней мере Вовику стоит прислушаться.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Drag( Begin! ) и Editable Column / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]