Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Значение ячейки в Grid / 25 сообщений из 25, страница 1 из 1
06.06.2009, 10:08
    #36028965
Qwed86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Имеется datawindow типа Grid, чтоб узнать значение конкретной ячейки нужно сделать что-то типа этого
dw_1.object.kolonka[stroka]
Но если значение не зафиксировано, т.е. ввели значение в ячейку, перешли на следующую, предыдущая естественно зафиксировалась и сохранилась, в эту ввели значение и оставили курсор на ней, т.е. она не зафиксировалась. Теперь если делать выборку из этого grid'a то со второй ячейки будет взято старое значение, а не то которое там показывается в данный момент. Как получить при выборке значение этой ячейки на которой стоит курсор, т.е. сам отображающийся текст этой ячейки.
Объяснил как мог, возможно такое? А то я туплю сижу.
...
Рейтинг: 0 / 0
06.06.2009, 10:23
    #36028973
Значение ячейки в Grid
dw_1.AcceptText()
dw_1.object.kolonka[stroka]

AcceptText() в событии LoseFocus() датавинды очень не плох
...
Рейтинг: 0 / 0
06.06.2009, 10:29
    #36028975
Qwed86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Точно, всё работает. А я не думал в том направлении чтоб зафиксировать все изменения перед выборкой).
Спасибо.
...
Рейтинг: 0 / 0
06.06.2009, 10:34
    #36028979
Raven A
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Строго IMHO
> AcceptText() в событии LoseFocus() датавинды очень не плох
Очень плох, поскольку если есть проверка на ошибку, которая приведет к выдачи окна сообщения, которое приведет к потере фокуса, что приведет к ...
...
Рейтинг: 0 / 0
08.06.2009, 18:30
    #36031741
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Владимииирdw_1.AcceptText()
dw_1.object.kolonka[stroka]

AcceptText() в событии LoseFocus() датавинды очень не плох
Точно - ТОТ Владимир :-))) Stack Fault обеспечен
...
Рейтинг: 0 / 0
11.06.2009, 10:24
    #36036963
Qwed86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
авторТочно - ТОТ Владимир :-))) Stack Fault обеспечен

Не обеспечен.
Ну а ваше мнение по этому воросу.
...
Рейтинг: 0 / 0
11.06.2009, 12:15
    #36037332
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Qwed86авторТочно - ТОТ Владимир :-))) Stack Fault обеспечен
Не обеспечен.
До первого "Item 'xxxxx' does not pass validation test"
...
Рейтинг: 0 / 0
11.06.2009, 18:00
    #36038242
Qwed86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Почему есть привычка обсуждать некачественные решения и ничего не предлагать?
...
Рейтинг: 0 / 0
11.06.2009, 18:26
    #36038301
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Qwed86,

Потому что AcceptText() в событии LoseFocus() датавинды делать просто НЕЛЬЗЯ и ВСЁ !!!
...
Рейтинг: 0 / 0
11.06.2009, 21:43
    #36038479
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Qwed86Почему есть привычка обсуждать некачественные решения и ничего не предлагать?
Создайте событие ue_apply() которое вызывайте из кнопки сохранения (или что там нужно делать после ввода).
В этом событии вызовите ф-ю of_validate() которая выполнит dw.AcceptText() (а в будущем и остальные проверки введенных данных) и вернет false (-1) если проверка не пройдена либо вернет true (1) если проверка пройдена успешно.
Далее ue_apply() в случае успеха выполняет действия над введенными данными, например dw.update()

Если действие должно происходить сразу при вводе данных в определенные поля, а не при нажатии на кнопку, то событие ue_apply() вызывайте из dw.event itemchanged() через модификатор POST
...
Рейтинг: 0 / 0
11.06.2009, 22:44
    #36038512
Qwed86
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Anatoly Moskovsky
Вот спасибо, всё по полочкам.
Филипп
Ну это было понятно из твоего первого поста. Очень позновательные ответы.
...
Рейтинг: 0 / 0
12.06.2009, 00:59
    #36038581
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Если вопрос азбучный, и объявляются "помошники" с ЗАВЕДОМО неверными ответами, то мне лень тратить время на большее, чем пресекание...
А в остальном, каков вопрос - таков ответ.
...
Рейтинг: 0 / 0
12.06.2009, 11:52
    #36038798
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
2 Qwed86
А еще есть такой метод GetText ( ) ...
Думаю, стоит попробовать ...
...
Рейтинг: 0 / 0
12.06.2009, 15:14
    #36039091
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
PaulJB 2 Qwed86
А еще есть такой метод GetText ( ) ...
Думаю, стоит попробовать ...
Да-да, SetRow(), SetColumn(), GetText(), распарсить строку в значение...
Это все равно что писать на ассемблере, когда есть С++.

Давайте обойдемся без вредных советов (их тут есть кому давать).
...
Рейтинг: 0 / 0
12.06.2009, 17:38
    #36039224
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Anatoly MoskovskyДа-да, SetRow(), SetColumn(), GetText(), распарсить строку в значение...
Это все равно что писать на ассемблере, когда есть С++.

Давайте обойдемся без вредных советов (их тут есть кому давать).
Конечно, метод не для слабонервных ... :), но (если я правильно понял первоначальный вопрос) - человеку надо прочитать "не зафиксированное" значение, т.е. до вызова метода AcceptText().
А это, на сколько я знаю можно сделать в событиях itemchanged, itemerror или из другого места программы с помощью GetText().
Я не знаю профессионального уровня человека задавшего вопрос и поэтому советую то, что сам делал и те методы, которыми пользовался и пользуюсь.
Сам я всегда стараюсь читать и анализировать такие значения только в событиях itemchanged, itemerror, но иногда, редко приходилось прибегать к услугам GetText().
И еще ... : На сколько я знаю, параметр data событий itemchanged и itemerror тоже строковый и от преобразования, парсинга и т.д. при анализе никуда не денешься ...
Поправьте меня если я не прав ...
...
Рейтинг: 0 / 0
12.06.2009, 18:41
    #36039265
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
PaulJBчеловеку надо прочитать "не зафиксированное" значение, т.е. до вызова метода AcceptText().
Нет, введенное значение уже планируется использовать. А это уже другая история - считывание значения должно быть унифицированным для всех полей и DW предоставляет этот интерфейс (и даже не один).

А GetText() надо использовать во время ввода (валидация и прочий сервис).
...
Рейтинг: 0 / 0
15.06.2009, 11:20
    #36040967
Значение ячейки в Grid
Владимииир
AcceptText() в событии LoseFocus() датавинды очень не плох

Если в поле датывинды введено значение, то AcceptText() прежде чем выполниться вызывает ItemChanged

А в ItemChanged можно включить:

// изменение значений некоторых полей, в зависимости от введённого значения
Post wf_dwChange(GetColumnName(), Row)

// сохранение в базе данных нового значения (dw.Update()), что позволяет не заботится о сохранении его при нажатии, например, на крестик
Post wf_dwUpdate(This)

Проверку на ошибки, которая приведет к вызову окна сообщения, конечно, делать не надо.
Чтобы не вводились ошибочные данные надо использовать маску ввода.
...
Рейтинг: 0 / 0
15.06.2009, 12:28
    #36041154
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Владимииир ... то AcceptText() прежде чем выполниться вызывает ItemChanged ....
Владимииир, вообще-то здесь "за базар" отвечают.
Наверное, в первую очередь, гуру поэтому на Вас так и сердиты.
Вы не правы - сама команда AcceptText() НЕ ВЫЗЫВАЕТ ItemChanged.
Убедитесь сами :
- Измените значение поля в DW.
- Укажите команду AcceptText().
- Проверьте - было - ли вызвано событие ItemChanged.
Только, чтобы не путать, - выводите в лог "каждый шаг ".

Ну и, кроме того, если посмотреть в Help AcceptText method (DataWindows) :
"... Calling AcceptText in the ItemChanged event has no effect."

Good Luck !
...
Рейтинг: 0 / 0
15.06.2009, 13:04
    #36041227
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Так. Хм... Наверное последние две строки можно убрать. Понедельник - да и дел по горло.

Good Luck !
...
Рейтинг: 0 / 0
15.06.2009, 13:59
    #36041409
Значение ячейки в Grid
ChV
- Измените значение поля в DW.
- Укажите команду AcceptText().


Не понял.
Где указать AcceptText()?
Он имеется в событии LoseFocus.
Дискуссия - о хорошести AcceptText() в LoseFocus.

Прежде, чем написать прошёлся в отладчике и у меня получилось то, что написал.
...
Рейтинг: 0 / 0
15.06.2009, 15:37
    #36041660
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Владимииир...Дискуссия - о хорошести AcceptText() в LoseFocus...
Я в дискуссию не хочу влезать, т.к. об этом ранее уже очень не плохо уже высказались.
Я обратил Ваше внимание только на фразу,
Владимииир...AcceptText() .... вызывает ItemChanged..."
И еще ...
Владимииир...Прежде, чем написать прошёлся в отладчике и у меня получилось то, что написал.
Вообще-то отладчик вещь хорошая, но только не там, где надо разобраться - как какие и в какой последовательности одни события вызывают другие.
Тем более, если идет речь о LoseFocus.

Good Luck !
...
Рейтинг: 0 / 0
15.06.2009, 17:56
    #36041990
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
ChVВы не правы - сама команда AcceptText() НЕ ВЫЗЫВАЕТ ItemChanged.
Убедитесь сами :
- Измените значение поля в DW.
- Укажите команду AcceptText().
- Проверьте - было - ли вызвано событие ItemChanged.

Это не так.
Если есть поле с незафиксированным текстом, то вызов AcceptText() приведет к вызову события ItemChanged как заключительного этапа валидации (при условии конечно, что предыдущие проверки пройдены - маска, правила). И только после этого AcceptText() вернет 1/-1 в зависимости от того, что вернуло событие ItemChanged.
...
Рейтинг: 0 / 0
15.06.2009, 18:14
    #36042031
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Anatoly MoskovskyЕсли есть поле с незафиксированным текстом, то вызов AcceptText() приведет к вызову события ItemChanged...
Отлично ! Век живи - век учись.
Хотелось бы убедиться. Только никак не соображу "поле с незафиксированным текстом" - о чем идёт речь ?

Good Luck !
М. ЖванецкийНепонятно, секс - это что-то новое или мы им уже давно занимаемся ?
Или это когда днем ночуют ?
...
...
Рейтинг: 0 / 0
15.06.2009, 20:11
    #36042224
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
ChVТолько никак не соображу "поле с незафиксированным текстом" - о чем идёт речь ?
Текст, введенный в поле, но еще не синхронизированный с буфером DW.
(Это то, о чем вся эта тема)
...
Рейтинг: 0 / 0
16.06.2009, 10:14
    #36042794
ChV
ChV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки в Grid
Qwed86
... dw_1.object.kolonka[stroka]
Но если значение не зафиксировано, т.е. ввели значение в ...
Да, ... " был не прав, вспылил ".
Действительно, в этом случае AcceptText() приведет к вызову события ItemChanged.
Anatoly Moskovsky - спасибо ! На этот нюанс раньше внимание не обращал.

Good Luck !
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Значение ячейки в Grid / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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