Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Обязательные поля для ввода / 6 сообщений из 6, страница 1 из 1
27.10.2004, 08:22
    #32756082
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обязательные поля для ввода
Здраствуйте!

Как и у всех, у меня тоже в таблицах есть обязательные поля для ввода
Вопрос в следующем: хотелось бы чтоб эти самы поля в DW подкрашивались другим цветом если значение = "" или Null?

В принципе можно в каждом DW делать это ручками, а нельзя ли автоматизировать процесс, ну или кто как обозначает данные поля для пользователя!?
...
Рейтинг: 0 / 0
27.10.2004, 08:59
    #32756118
Pasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обязательные поля для ввода
Самый простой путь - это выделение заголовка данного поля. моя практика показала, что пользователь обращает внимание на это. Также данный момент легко указать в инструкции пользования программы. Пользователь обычно читает первые десять страниц, а пункт "особенности программы" как раз входит в эти первые десять.
...
Рейтинг: 0 / 0
27.10.2004, 10:53
    #32756359
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обязательные поля для ввода
PASHA

Ну это получается в ручную, а хотелось бы автоматизировать
...
Рейтинг: 0 / 0
27.10.2004, 10:58
    #32756378
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обязательные поля для ввода
Автоматизировать то можно - нужно пройтись по всем контролсам DW и для каждого определить через Describe, у кого выставлен required и далее через Modify в color expression поставить выражение:
Код: plaintext
<NormalColor>~tif( IsNull( <ИмяКолонки> ), <AlarmColor>, <NormalColor> )
Трабла в том, что required будет получаться через Describe с разным синтаксисом в зависимости от выставленного типа контролса (edit.required, editmask.required, ...). У меня это реализовано в моем DW, но там все на моих же библиотеках повязано, поэтому и кода почти нет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public subroutine setalarmfromcolumn (string p_col);
SetColumnPropValue( p_Col, 
  'Background.Color', 
  '{Original}~tIF(IsNull(' + p_Col + '), RGB(255,255,200), RGB(255,255,255))' )
end subroutine

public subroutine setalarm ();
int i, c
string cols[]

c = GetRequiredColumns( cols )
for i =  1  to c
  SetAlarmFromColumn( cols[i] )
next
end subroutine
естественно без моих библиотек это работать никак не будет.
...
Рейтинг: 0 / 0
27.10.2004, 18:09
    #32757848
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обязательные поля для ввода
У нас это делается на background color поля для ввода, причём БЕЗ волнений по поводу того, заполнено ли оно уже, или нет, вот так (через глобальную функцию, которая зовётся в constructorе ancestor datawindow contolа - я б за глобальную функцию убил, но делалось до меня :-) ):

Код: 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.
global type gf_set_backgrounds from function_object
end type

forward prototypes
global function long gf_set_backgrounds (datawindow vdw)
end prototypes

global function long gf_set_backgrounds (datawindow vdw);
long		i, ll_objects, ll_objects_set
string	ls_expression, ls_background, s_describe, las_object[]

ls_background = f_get_sysparm("CS_REQ_FLD_COLOR") //настройка
IF ls_background = "" or IsNull(ls_background) THEN
	ls_background = "65535"
end if
ll_objects = gf_get_dw_columns(vdw, las_object) //очевидно :-)

for i =  1  to ll_objects	
	s_describe = las_object[i] + ".edit.required " + las_object[i] + ".ddlb.required " + &
					 las_object[i] + ".dddw.required " + las_object[i] + ".editmask.required "
	s_describe = lower(vdw.describe(s_describe))
	if match(s_describe, "yes") THEN
		ls_expression = vdw.describe(las_object[i] + ".background.color")
		if IsNumber(ls_expression) and Long(ls_expression) >=  16777215  then
			ls_expression = ls_background
		else
			ls_expression = gf_global_replace(ls_expression, "16777215", ls_background)
			ls_expression = gf_global_replace(ls_expression, "rgb(255,255,255)", ls_background)
		end if
		if left(ls_expression,  1 ) = '"' then
			vdw.modify(las_object[i] + ".background.color = " + ls_expression)
		else
			vdw.modify(las_object[i] + ".background.color = '" + ls_expression + "'")
		end if
		ll_objects_set++
	end if
next

return ll_objects_set

end function
...
Рейтинг: 0 / 0
28.10.2004, 08:25
    #32758269
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обязательные поля для ввода
Всем С П А С И Б О за помощь!!!
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Обязательные поля для ввода / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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