powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Можно ли обойтись без DYNAMIC EVENT ?
13 сообщений из 13, страница 1 из 1
Можно ли обойтись без DYNAMIC EVENT ?
    #32850354
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открываю окно с параметром

OpenWithParm(wind,w1), где w1 - окно из которого открываем. В w1,
есть dw_1.

Я знаю, что к w1.dw_1 можно обратиться через DYNAMIC EVENT.
Вопрос - можно ли это сделать напрямую, типа так:

datastore ds
ds.dataobject = w1.dw_1.dataobject
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850373
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
f45fоткрываю окно с параметром

OpenWithParm(wind,w1), где w1 - окно из которого открываем. В w1,
есть dw_1.

Я знаю, что к w1.dw_1 можно обратиться через DYNAMIC EVENT.
Вопрос - можно ли это сделать напрямую, типа так:

datastore ds
ds.dataobject = w1.dw_1.dataobject

По-моему, можно. Если переданный параметр присвоить переменной с тем же типом, что и w1, а не просто window, то все, что есть в w1, доступно через dot-нотацию.
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850424
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gerss f45fоткрываю окно с параметром

OpenWithParm(wind,w1), где w1 - окно из которого открываем. В w1,
есть dw_1.

Я знаю, что к w1.dw_1 можно обратиться через DYNAMIC EVENT.
Вопрос - можно ли это сделать напрямую, типа так:

datastore ds
ds.dataobject = w1.dw_1.dataobject

По-моему, можно. Если переданный параметр присвоить переменной с тем же типом, что и w1, а не просто window, то все, что есть в w1, доступно через dot-нотацию.Тоже самое в литературном переводе :-))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
// open event
my_window lwnd
powerobject lpo
datastore ds

lpo=message.powerobjectparm
if isValid (lpo) then 
 if lpo.typeof()=window! then
  if lpo.classname() = "my_window" then 
   lwnd = lpo
  end if
 end if
end if
ds.dataobject = lwnd.dw_1.dataobject
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850456
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2PL99: Ну, я же "бывший"... И синтаксис уже начинаю подзабывать, а посмотреть негде...

Сергей
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850485
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу как применить.

У меня из разных окон, вызывается окно фильтрации. В него-то я и передаю "вызвавшее окно w1".
через case сильно громоздко получается

choose case w1.classname()
case w1_1
ds.dataobject =w1.dw_1.dataobject
. . .
end choose
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850492
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибся

choose case w1.classname()
case w1_1
ds.dataobject =w1_1.dw_1.dataobject
. . .
end choose
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850536
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не проще ли тогда непосредственно DW передавать?

Сергей
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850547
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда, может быть, стоит передавать что-нибудь более осмысленное? Например, custom user object (рекомендую:-), или, в крайнем случае, стуктуру. Что-нибудь вроде:
Код: plaintext
1.
2.
3.
global type str_4seek from structure
	window		w
	datawindow	dw
end type

или еще более глобально :-)
Код: plaintext
1.
2.
3.
4.
global type str_4seek from structure
	window		w[]
	datawindow	dw[]
	str_4seek str[]
end type
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850562
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм . . попробую через структуру, тем болееб я как раз окно в структуре и передаю, так что добавить дв - нет проблем.
сенкс.
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850569
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе вижу как применить.
У меня из разных окон, вызывается окно фильтрации. В него-то я и передаю "вызвавшее окно w1".
через case сильно громоздко получается
choose case w1.classname()
case w1_1
ds.dataobject =w1.dw_1.dataobject
. . .
end choose

вообще-то есть еще такая вещь как наследование.
т.е. чтобы не городить case можно было бы приводить к некоему общему предку от которого унаследованы окна пригодные для фильтрации.

а вообще сложно что-то советовать на таком уровне. мы же не знаем для чего это окно фильтрации вызывается, является ли оно модальным и т.п.
если полностью представлять себе задачу можно предложить что-нибудь более осмысленное.

и опять таки, было уже такое несколько месяцев назад...
да не должно окно фильтрации знать о том что на окне w_1 лежит dw_1!!!
только тогда оно будет универсальным...
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850583
f45f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил в структуру dw - все отлично и красиво и универсально. Спасибо.
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850589
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрей...
и опять таки, было уже такое несколько месяцев назад...
да не должно окно фильтрации знать о том что на окне w_1 лежит dw_1!!!
только тогда оно будет универсальным...О том, что надо правильно проектировать приложения уже устали говорить :-((
...
Рейтинг: 0 / 0
Можно ли обойтись без DYNAMIC EVENT ?
    #32850717
Guest_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я чего-то не понимаю, но почему нельзя dw просто передать так:
Код: plaintext
OpenWithParm(wind,w1.dw_1)
В окне wind получить переданный параметр
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
DataWindow    i_dw
PowerObject   l_obj
l_obj = message.PowerObjectparm
if isValid(l_obj) then
 if  l_obj.TypeOf() = DataWindow! then
        i_dw = l_obj
 end if 
end if 
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Можно ли обойтись без DYNAMIC EVENT ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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