powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Найти єлемент управления
25 сообщений из 27, страница 1 из 2
Найти єлемент управления
    #35056639
Voitovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как определить существует ли на
диалоговом окне dw_1 ?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35056747
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пройти в цикле по элементам на окне ( массив WindowObject control[] ) и опросить его элементы на ClassName()
------------
С уважением, IKAR

IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо
Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35056973
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IkarПройти в цикле по элементам на окне ( массив WindowObject control[] ) и опросить его элементы на ClassName()
Если только это DataWindow не лежит на каком-нибудь элементе контейнере, например tabpage...
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35057417
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Локшин Марк

Бряхня! Стоит тока переделать чуток приведенный ниже код и все будет в шоколаде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
// public function integer wf_searchdatawindow (graphicobject ago_go)
// Description                 : Function counts datawindow conrols on the window
//                                   RECURSIVE!!!

integer		li_count
integer		li_iitem
window		lw_win
tab		ltab_tab
userobject	luo_uo
string		ls_type

// Define object's type
choose case ago_go.TypeOf()
	case Window!
		lw_win = ago_go
		li_count = UpperBound( lw_win.Control[] )
		ls_type = 'w'
	case Tab!
		ltab_tab = ago_go
		li_count = UpperBound( ltab_tab.Control[] )
		ls_type = 't'
	case UserObject!
		luo_uo = ago_go
		li_count = UpperBound( luo_uo.Control[] )
		ls_type = 'u'
end choose

// Count datawindow controls
for li_iitem = 1 to li_count
	choose case ls_type
		case 'w'
			choose case lw_win.Control[li_iitem].TypeOf()
				case DataWindow!
					// Count datawindow controls on Window
					ii_dwnumber +=	1
				case	Tab!
					wf_searchdatawindow( lw_win.Control[li_iitem] )
				case UserObject!
					wf_searchdatawindow( lw_win.Control[li_iitem] )
				end choose			
		case 't'
			choose case ltab_tab.Control[li_iitem].TypeOf()
				case DataWindow!
					// Count datawindow controls on Tab
					ii_dwnumber +=	1
				case	Tab!
					wf_searchdatawindow( ltab_tab.Control[li_iitem] )
				case UserObject!
					wf_searchdatawindow( ltab_tab.Control[li_iitem] )
				end choose			
		case 'u'
			choose case luo_uo.Control[li_iitem].TypeOf()
				case DataWindow!
					// Count datawindow controls on TabPage (serObject)
					ii_dwnumber +=	 1 
				case	Tab!
					wf_searchdatawindow( luo_uo.Control[li_iitem] )
				case UserObject!
					wf_searchdatawindow( luo_uo.Control[li_iitem] )
				end choose			
	end choose	
next

return guo_variables.SUCCESS
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35057569
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageБряхня! Стоит тока переделать чуток приведенный ниже код и все будет в шоколаде:
В чём бряхня? Этот код делает совсем не
IkarПройти в цикле по элементам на окне ( массив WindowObject control[] ) и опросить его элементы на ClassName()
А еще кое-что другое, про что я и сказал.
Так в чём брехня?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35057584
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркЕсли только это DataWindow не лежит на каком-нибудь элементе контейнере, например tabpage...

В примере, показано как обрабатывать случай, когда лежит "на каком-нибудь элементе контейнере, например tabpage..."

Справедливости ради, замечу, что г-ну Voitovych мой пример навряд ли поможет, впрочем,
как и все другие...
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35057614
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Black SavageВ примере, показано как обрабатывать случай, когда лежит "на каком-нибудь элементе контейнере, например tabpage..."
А так никто и не говорил что это невозможно в принципе. Или опять сейчас мне продемонстрируют цепочку логических умозаключений в стиле "мама он меня сукой обозвал" ?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35057622
Black Savage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин, Марк, какой же ты занудный.

Представь, сидит чел на рапоте (сегодня суббота), до этого
он вкалывал в течении недели по 12 часов. И вот он видит, что можно кому-то помочь,
абсолютно не напрягаясь, достаточно скопировать код. Ну, вот я и запостил его, при этом,
чего-то там написал.

Марк, и не лень тебе ради этого всего, по клавишам ботать?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35063057
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
DataWindow dw_
boolean lb_exists = true
TRY
dw_ = create using 'dw_1'
destroy dw_
CATCH ( RuntimeError Err)
lb_exists = false
END TRY

Скрипт должен находится в том же окне (или в его предке) где и dw_1.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35063074
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
А лучше так:

WindowObject lwo_
boolean lb_exists = true
string ls_obj_name = 'dw_1'
TRY
lwo_ = create using ls_obj_name
destroy lwo_
CATCH ( RuntimeError Err)
lb_exists = false
END TRY

И оформить в виде функции с параметром именем объекта.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35063822
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+/-А лучше так:

WindowObject lwo_
boolean lb_exists = true
string ls_obj_name = 'dw_1'
TRY
lwo_ = create using ls_obj_name
destroy lwo_
CATCH ( RuntimeError Err)
lb_exists = false
END TRY
И оформить в виде функции с параметром именем объекта.
А вот это бормотание на какой вопрос отвечало?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35063833
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
а Вы догатайтесь
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35063883
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Догадываться не собираюсь, но хотел удостовериться что никто этот бред не воспринял всерьёз...
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35064376
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
Филипп Догадываться не собираюсь, но хотел удостовериться что никто этот бред не воспринял всерьёз...
У меня сейчас температура, так что на счет бреда я не спорю :), но все же можете обьяснить почему бред?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35067656
Voitovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторIkar

Пройти в цикле по элементам на окне ( массив WindowObject control[] ) и опросить его элементы на ClassName()

спасибо, ОК !
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35067688
Voitovych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Black Savage или кто по РЕКУРСИИ ГУРУ
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35068069
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+/- Филипп Догадываться не собираюсь, но хотел удостовериться что никто этот бред не воспринял всерьёз...
У меня сейчас температура, так что на счет бреда я не спорю :), но все же можете обьяснить почему бред?
Ну скажем так, частичный бред :)

Этот код выполняет следующее:
1) Ищет в текущем типе (окне|uo, где вызван create using) вложенный тип (имя контрола) с указанным именем
2) Если не найден, ищет глобальный тип с этим именем
3) Если не найден - ошибка

Очевидно что из-за п.2 этот код не выполняет то что от него требовалось(определить существует ли на диалоговом окне dw_1) - возможны ложные срабатывания.
Кроме того он привязан к тому окну где нужна проверка (нельзя даже в предок вынести).
Ну и только один уровень вложенности проверяется.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35068224
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
Anatoly Moskovsky Ну скажем так, частичный бред :)
Значит температура меньше 42 :)

Anatoly Moskovsky
Этот код выполняет следующее:
1) Ищет в текущем типе (окне|uo, где вызван create using) вложенный тип (имя контрола) с указанным именем
2) Если не найден, ищет глобальный тип с этим именем
3) Если не найден - ошибка

Насчет порядка поиска спорить не буду ....

Anatoly Moskovsky
Очевидно что из-за п.2 этот код не выполняет то что от него требовалось(определить существует ли на диалоговом окне dw_1) - возможны ложные срабатывания.

Обьясните, пожалуйста популярней, для особо одаренных.

Anatoly Moskovsky
Кроме того он привязан к тому окну где нужна проверка (нельзя даже в предок вынести).

Вынести в предок можно, уже проверил ради интереса.

Anatoly Moskovsky
Ну и только один уровень вложенности проверяется.
Здесь Вы не совсем правы .... Если dw_1 находится табе (или даже на нескольких вложенных) то код работает правильно. Если на UO то работает не корректно.
Хотя в вопросе стояла "на диалоговом окне", то есть как вариант поиска когда dw_1 располложено на самом окне этот код подойдет.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35068722
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+/-
Anatoly Moskovsky
Очевидно что из-за п.2 этот код не выполняет то что от него требовалось(определить существует ли на диалоговом окне dw_1) - возможны ложные срабатывания.

Обьясните, пожалуйста популярней, для особо одаренных.

Если в окне контрола нет, а в проекте есть объект с таким же именем как ожидаемое имя контрола, то create using его найдет и ваш код вернет что контрол существует.

Anatoly Moskovsky
Кроме того он привязан к тому окну где нужна проверка (нельзя даже в предок вынести).

Вынести в предок можно, уже проверил ради интереса.

Действительно.


Anatoly Moskovsky
Ну и только один уровень вложенности проверяется.
Здесь Вы не совсем правы .... Если dw_1 находится табе (или даже на нескольких вложенных) то код работает правильно. Если на UO то работает не корректно.

Табы (созданные в паинтере окна) и их содержимое хранятся как вложенные типы в окне их содержащем, поэтому работает. Для табов добавленных в runtime через OpenTab - не должно работать.
В случае с UO - его контролы хранятся в самом UO, и поэтому недоступны в окне в котором лежит UO.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35068753
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А конструктор при этом create сработает?
и что будет если по причине такого кривого создания визуального объекта в этом самом конструкторе случится RuntimeError?
А если в конструкторе есть код обращающийся к другим объектам могут возникнуть интересные побочные эффекты.

Насколько операция create для dw тяжелее чем простая пробежка по массивам и несколько вызовов ClassName ?
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35068862
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
2 Anatoly Moskovsky
Полностью согласен.

2 ЗоринАндрей
Конструктор не срабатывает и все ужасы о которых Вы пишете не происходят. Насколько операция тяжелее или легче не знаю. Я предложил скрипт как вариант решения вопроса, а не единственное правильное решение.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35068921
+/-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
+/-
Гость
+/-2 Anatoly Moskovsky
Полностью согласен.

Извиняюсь поторопился. Не полностью :). Вы немного не правы :

Anatoly MoskovskyЕсли в окне контрола нет, а в проекте есть объект с таким же именем как ожидаемое имя контрола, то create using его найдет и ваш код вернет что контрол существует.

Утверждение ошибочно. Только что проверил.
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35069348
прикольно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Voitovychto Black Savage или кто по РЕКУРСИИ ГУРУ
веселый пост :-)
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35069370
прикольно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Voitovychto Black Savage или кто по РЕКУРСИИ ГУРУ
Подсказка №1:
обычно синтаксис вызова функции такой: <имя_объекта>.<имя_функции> ( <параметры> )
(возможно вам нужна не функция, а что-то другое )
...
Рейтинг: 0 / 0
Найти єлемент управления
    #35069395
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про return guo_variables.SUCCESS

Замените return guo_variables.SUCCESS на return 1 и всё будет работать. Это я как автор данного кода говорю.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Найти єлемент управления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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