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

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

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

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


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