powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Где Фокус
19 сообщений из 19, страница 1 из 1
Где Фокус
    #32762705
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здратсвуйте.

Предисловие:
Есть форма W1 в ней DW1 grid
в этом dw все видимые поля имеют таб ордер <> 0 и Display Only = true
Это мне надо для определения getcolumnname() (в дальнейщем для поиска)

Событие double click на DW выполняет следующие
Код: plaintext
1.
2.
...
OpenWithParm (lw_w, sp, win_name)
...

после того, как закрываем win_name, непонятног где находится фокус
(к примеру что б закрыть теперь W1 неибходимо два раза кликнуть мышкой на крестике, т.е. 1 клик получаем фокус, 2-й клик закрываем форму)
при чем это происходит не всегда!!!

Подозрение:
Думаю связана это как раз с DW1, т.к. если W1 якобы не имеет фокуса, то в поле на котором производился двойной клик, происходит выделение или снятие выделения при перемещении мышки влево или вправо.

Вопрос:
Как это все победить?
...
Рейтинг: 0 / 0
Где Фокус
    #32762727
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO...
...
OpenWithParm (lw_w, sp, win_name)
...
w1.SetFocus()
А вообще то, если фокус в окне (на каком либо контроле), то окно - тоже в фокусе, т.е. активно, и никакие 2 клика на крестике не требуются... А если окно не активно, то оно не активно и искать в нем фокус бесполезно...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Где Фокус
    #32762758
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
W1 унаследованно от W0, скрипт
Код: plaintext
1.
2.
3.
...
OpenWithParm (lw_w, sp, win_name)
...
w1.SetFocus()

не подходит т.к. вмесо w1 может быть w2 w3 и т.д.
parent.SetFocus() не подходит пишет ошибку "Current object has no parent"

Код: plaintext
и никакие  2  клика на крестике не требуются
Вот как раз в моем случае почемуто требуется, причем это поисходит ч/з ... когда как

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
Где Фокус
    #32762889
Сотников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я напримера из объяснения проблемы ничего не понял. Наверное DIGITALPRO легче писать видя все на экране. У нас с фантазией хуже.

Но с w1 пожно посоветовать this использовать
...
Рейтинг: 0 / 0
Где Фокус
    #32762892
Сотников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или parent
...
Рейтинг: 0 / 0
Где Фокус
    #32762897
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это глюк Билдера.
Я работаю с версией 8.0.4 (видно и в 9 это переползло).
До билда 10726 все было Ок. Как только поставил 10726 появилась эта проблема. По моим наблюдениям после закрытия вызванного окна, фокус в вызвавшем окне попадает в контрол у которого самый младший TabOrder самого окна а не ДВ, хотя должен оставаться на контроле у которого он был перед вызовом окна.
После закрытия вызываемого окна в скрипте фокус надо вернуть принудительно на нужный контрол вызвавшего окна.
...
Рейтинг: 0 / 0
Где Фокус
    #32763176
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заметил еще вот что:
У DW все поля сделать таб ордер = 0
и стало все нормально.

Но тогда я незнаю как определить имя колонки???
...
Рейтинг: 0 / 0
Где Фокус
    #32763305
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНо тогда я незнаю как определить имя колонки???

//найдем кол. колонок в dw_1
ls_colcount = dw_1.Describe("DataWindow.Column.Count")
...
//Найдем наименование колонки №4
setting = dw_1.Describe("#4.Name")

Думаю, что проблем с определением i-й колонки у Вас уже не будет
...
Рейтинг: 0 / 0
Где Фокус
    #32763351
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
OpenWithParm (lw_w, sp, win_name)
...
//Проверьте наличие фокуса
DragObject l_dragObj //Объект имеющий фокус

//Получить ссылку на объект имеющий фокус
l_dragObj = getFocus()

if l_dragObj <> this then
//Если фокус ушел кудато, то куда?
mesageBox("Где фокус?", className(l_dragObj))
else
//А теперь проверьте номер текущей строки
ll_row = this.getRow()
if ll_row <= 0 then
//Если ll_row = 0, то Вы своего фокуса в этом DW не увидите
end if
end if
...
Рейтинг: 0 / 0
Где Фокус
    #32763520
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
//Найдем наименование колонки № 4 
setting = dw_1.Describe("#4.Name")
А как для текущей или выбранной


По поводу
Код: plaintext
mesageBox("Где фокус?", className(l_dragObj))
так фокус остается на DW в принципе так и должно быть, но еще раз повторюсь, что через (грубо говоря) раз, чтоб закрыть W1 надо нажимать на крестик 2 раза

Подозрение что это хглюк РВ или ни кто ничего не понял ))
...
Рейтинг: 0 / 0
Где Фокус
    #32763542
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо это связанно с
таб ордер или
Display Only

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
Где Фокус
    #32763601
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЛибо это связанно с таб ордер или Display Only либо одно из двух =)

Заглянул в PFC, так там например во всех выпадающих контролах после закрытия фокус принудительно устанавливается в вызвавшее его DW. Тоже решение, просто чтобы не думать почему оно не устанавливается.

Успехов!
...
Рейтинг: 0 / 0
Где Фокус
    #32763638
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Периодичность:
Выявил что если колонки имеют свойство
таб ордер <> 0 и Display Only = true

то,
Пример:
DW1: имеет колонки k1, k2 и k3
Двойным счелчком допустим на 3-й строке в колонке k2
открывается окно W2 ....
Закрываем окно W2
Пытаемся закрыть W1 с первого сщелчка не получается только со второго!!!

Если же еще раз и потом да бесконечности
Двойным счелчком на 3-й строке в колонке k2
открывается окно W2 ....
Закрываем окно W2
Пытаемся закрыть W1 все ОК с первого раза!!!!!!!!!!

ЧТО ЗА Хрень???? Как победить????

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
Где Фокус
    #32764196
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIGITALPRO//Найдем наименование колонки №4
setting = dw_1.Describe("#4.Name")
А как для текущей или выбранной
А это и будет Вашим домашним заданием.
Количество колонок Вы уже умеете определять.
DIGITALPROПример:
DW1: имеет колонки k1, k2 и k3
Двойным счелчком допустим на 3-й строке в колонке k2
открывается окно W2 ....
Закрываем окно W2
Пытаемся закрыть W1 с первого сщелчка не получается только со второго!!!

Какого типа у Вас окно W2, response или какое другое?
...
Рейтинг: 0 / 0
Где Фокус
    #32764239
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest_2

окно W2 - response
...
Рейтинг: 0 / 0
Где Фокус
    #32764273
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда фокус находится там где и должен находиться, т.е. в dw1.

Проверьте номер строки до вызова response окна и после.

В конце концов можно выполнить трассировку и посмотреть что в какой последоватльности выполняется.
...
Рейтинг: 0 / 0
Где Фокус
    #32764318
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Номер строки один и тот же.

По поводу трассировки, я не знаю для чего она и как ей пользоватся!

И еще одна особенность: Если происходит сразу двойной счелчок в любой не имеющей фокус строке и колонке, все повторяется. а вот если выполнить к примеру один клик, а потом двойной то все ОК!!
...
Рейтинг: 0 / 0
Где Фокус
    #32765366
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так кто нибудь то поможет или нет?
Пожалуйста!
...
Рейтинг: 0 / 0
Где Фокус
    #32765411
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас на фирме на одном компьютере такая же беда. При запуске приложения появляется окошко для ввода пароля. Фокус автоматом прыгает в поле "имя". Так вот: на всех компах это происходит нормально, а на одном(!) курсор мигает, а чтобы начать вводить текст, нужно нажать еще раз на поле. На этом компе стоит Win ХР. На остальных Win 2000. Чтобы не думать, какая проблема, решили, что дело в ХР.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Где Фокус
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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