Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Аргументы в DW / 10 сообщений из 10, страница 1 из 1
14.03.2011, 16:29
    #37164107
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Как можно получить список аргументов в DW?
Что-нибудь более культурное, чем
Код: plaintext
dw_1.Object.DataWindow.Table.Select.Attribute
а затем поиск всех
Код: plaintext
  ARG(NAME = "
...
Рейтинг: 0 / 0
14.03.2011, 17:19
    #37164287
umalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Describe("DataWindow.table.arguments")
...
Рейтинг: 0 / 0
15.03.2011, 11:53
    #37165297
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
umalov,
Странно, что в DataWindowSyntax этого нет.
Но здесь тоже нужно парсить.
...
Рейтинг: 0 / 0
15.03.2011, 13:27
    #37165569
umalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Есть в Help "Table.property DataWindow object property"
Property for Table Value
Arguments (Read only) A string containing retrieval argument names and types for the DataWindow.
...
Рейтинг: 0 / 0
17.03.2011, 15:21
    #37170300
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
А вот интересно - возожно ли узнать не только список аргуметов датавиндова, но и их значения (т.е. по которым был сделан последний Retrieve)?
...
Рейтинг: 0 / 0
18.03.2011, 00:07
    #37171200
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
UrsegoА вот интересно - возожно ли узнать не только список аргуметов датавиндова, но и их значения (т.е. по которым был сделан последний Retrieve)?
Для не массивов как-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
		if ls_name <> "" then
			iuo.DW.GetChild (iuo.DW.GetColumnName (), ldwc)
			ldwc.InsertRow( 0 )
			ldwc.Modify("create compute(band=Detail color='0' alignment='2' border='2' name=tmp_glkfxjgkjsffg " + &
			  " x='0' y='0' height='0' width='10' expression='" + ls_name + "' visible='0')")
			ls_value = ldwc.Describe("evaluate('tmp_glkfxjgkjsffg',1)")
			ldwc.Modify("DESTROY tmp_glkfxjgkjsffg")
		end if
...
Рейтинг: 0 / 0
18.03.2011, 10:04
    #37171485
umalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Вот пример для частного случая.
...
Рейтинг: 0 / 0
18.03.2011, 20:10
    #37172911
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Марк и umalov, большое спасибо, это именно то, что надо!
...
Рейтинг: 0 / 0
21.03.2011, 09:31
    #37174725
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Ursego,
Код: 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.
// Get current ARGUMENTS, VALUES and TYPES --------------------------------------------------------------------
string		is_arg_name[], is_arg_type[], is_arg_value[]

string	ls_arg_full_text, ls_TAB = char( 9 ), ls_new_line = char( 10 ), ls_arguments = 'ARGUMENTS:'
long	ll_pos_tab, ll_pos_new_line, li_i

ls_arg_full_text = idw_in_program.Describe("DataWindow.table.arguments")  
IF ls_arg_full_text = '?' OR ls_arg_full_text = '!' THEN ls_arg_full_text = ''

DO WHILE ls_arg_full_text <> ''
	li_i++
	ll_pos_tab = Pos(ls_arg_full_text, ls_TAB)
	
	is_arg_name[li_i] = Left(ls_arg_full_text, ll_pos_tab -  1 )
	is_arg_value[li_i] = idw_in_program.Describe("Evaluate('" + is_arg_name[li_i] + "', 0)")
	
	ll_pos_new_line = Pos(ls_arg_full_text, ls_new_line, ll_pos_tab +  1 )
	IF ll_pos_new_line =  0  THEN ll_pos_new_line = Len(ls_arg_full_text) +  1 
	is_arg_type[li_i]  = Mid(ls_arg_full_text, ll_pos_tab +  1 , ll_pos_new_line - ll_pos_tab -  1 )
	
	ls_arg_full_text = Mid(ls_arg_full_text, ll_pos_new_line +  1 )
	
	ls_arguments = 	ls_arguments + ls_new_line + char( 13 ) + &
							is_arg_name[li_i] + Fill(' ', 25 - len(is_arg_name[li_i])) + char(9) + &
							is_arg_type[li_i] + Fill(' ', 15 - len(is_arg_type[li_i])) + + char(9) + &
							is_arg_value[li_i] 
							
LOOP
IF ls_arguments = 'ARGUMENTS:' THEN ls_arguments = 'ARGUMENTS:' + ls_new_line + char(13) + 'NOT ARGUMENTS'
tab_1.page_3.st_arguments.Text = ls_arguments
//-------------------------------------------------------------------------------------------------------------------------
...
Рейтинг: 0 / 0
21.03.2011, 09:52
    #37174756
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аргументы в DW
Кстати, это окошко "шпион", которое когда-то выкладывал Филипп.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Аргументы в DW / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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