Запрет доступа к элементам анкетной формы

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Запрет доступа к элементам анкетной формы

Сообщение Vik »

Вопрос такой. Как можно управлять доступностью элементов анкетной формы? То есть в зависимости от каких-то условий делать так, чтобы элементы не были доступны и закрашивались в серый цвет. По типу как в Delphi, к примеру, свойство Enabled :=false. Спасибо.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

в своём интерфейсе можно.
а вот чтобы конфигуратор по условию работал, вроде не получится.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Я имею ввиду свой интерфейс :) Так как это сделать?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

если я правильно понял вопрос, то:
8.8.17. Процедура SetFieldOption (Integer, Word)
Назначение
Установить option-флаги поля.
Описание
procedure SetFieldOption (Поле : Integer; iOption : Word);
Параметры
Поле : Integer - номер поля в логической таблице.
iOption : Word - флаг:
- ofSelectable - поле можно позиционировать;
- ofProtected - поле нельзя менять.

Procedure ClearFieldOption (Integer, Word)
Назначение
Сбросить option-флаги поля.
Описание
procedure ClearFieldOption (Поле : Integer; iOption : Word);
Параметры
Поле : Integer - номер поля в логической таблице.
iOption : Word - флаг:
- ofSelectable - поле можно позиционировать;
- ofProtected - поле нельзя менять.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Чтобы вопрос был понятен, приведу пример из Галактики. Выбираем при настройке ТХО, например, алгоритм NP. Выбираем фильтры. Появляется интерфейс - слева много-много CheckButton-ов (или как они правильно называются тут), а справа - PickButton-ы. Пока не поставлена галочка, PickButton неактивен, имеет цвет основного окна и вид обычного анкетного поля для ввода без кнопки.. Ставим галку, соответствующий PickButton становится активным, имеет белый цвет и справа у него появляется кнопка (...) .

То есть, допустим создана такая логическая таблица:
......
create view
var a : string
ch : boolean
as select * from x$files;
......

Далее в секци скрин описано:

screen s1;
fields
ch : NoProtect;
a: PickButton,Protect;// {Font = {BackColor = if (not Ch,8,0) }};
<< 'xxxxxxx'
[.] - Разрешить выбор `
Выберите файл:
.@@@@@@@@@@@@@@@@@@
>>

Нужно, чтобы при ch = false, Pickbutton был недоступным полностью (кнопка выбора отсутствовала, а само поле имело цвет фона). При использовании вышеописанных функции эффект другой, то есть при попытке изменить запись будет выдаваться сообщение об ошибке- Запись защищена от модификации. А хотелось бы, чтобы вообще ни на что нажимать возможности не было :) Конечно, можно в соответствии с флагом ch изменять и цвет (закомментированная строка). Но все это как-то искуственно, ведь есть же судя по-всему стандартный способ..
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Так что ли ?

Interface test;

create view
var a : word
ch : word
ch1 : boolean
as select * from systdate;

screen s1;

fields

ch : NoProtect;
a: NoProtect ;

<<

[.] по подразделениям...`

.@@@

>>
end;

HandleEvent
CmInit : {


}
CmCheckfield : {
case a of
1 :{
cfsSetCurrentContainer('test');
cfsSetProp('ci_S1_CH_по_подразделениям...', 'Skip', false);
}
2 :{

cfsSetCurrentContainer('test');
cfsSetProp('ci_S1_CH_по_подразделениям...', 'Skip', true);
}
end;
}
end;
end.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Да!!! Именно так :) Спасибо!
Ответить