Регистрация

Отображение/ Скрытие поля в форме

Обсуждение вопросов по разработке программ в среде продуктов копорации "Progress Software"
Новичок
Сообщения: 8
Зарегистрирован: Вт авг 16, 2016 5:49 pm

Отображение/ Скрытие поля в форме

Сообщение sega1999 » Чт авг 18, 2016 5:36 pm

Есть форма документа для ввода данных:
Дата ввода: 01,01,16
Номер документа: 0001/16
Создатель: Петров И.И.

Мне нужно поле "Создатель" скрывать для всех пользователей кроме пользователя "USER"
В Событии OnNewDocument я бы на предыдущем языке написал бы так:
if UPPER(users:NAME) = "USER"
self:odcUser:Visible:= TRUE
else
self:odcUser:Visible:= FALSE
endif
/*
где:
SELF - текущий объект (окно)
odcUser - поле/кнопка в окне
Visible - свойство контрола которое отвечает за отображение/скрытие объекта
*/
а как в PROGRESS`е?
как обратиться к свойству нужного поля/кнопки/ любого контрола?

Администратор
Аватара пользователя
Сообщения: 1873
Зарегистрирован: Пт мар 25, 2005 6:05 pm
Откуда: Progress Technologies

Re: Отображение/ Скрытие поля в форме

Сообщение Arelav » Пт авг 19, 2016 12:34 pm

В общем также
Код: Выделить всё
if USERID("DICTDB")  = "user" then
     this-object:label1:visible = true.
else
     this-object:label1:visible = false.


функция USERID возвращает имя пользователя в текущей базе данных (dictdb).

this-object:label1- это элемент win-формы System.Windows.Forms.Label.

имя или имена пользователей имеющих доступ к чему-то можно хранить в каком-нибудь поле какой-нибудь таблицы в виде списка, например,
и тогда проверку можно сделать так:
Код: Выделить всё
if can-do(permission.can-see, USERID) then
     this-object:label1:visible = true.
else
     this-object:label1:visible = false.

Новичок
Сообщения: 8
Зарегистрирован: Вт авг 16, 2016 5:49 pm

Re: Отображение/ Скрытие поля в форме

Сообщение sega1999 » Пт авг 19, 2016 12:43 pm

Извините, забыл добавить.
Не Windows.
Работаем через TELNET с UNIX.

Администратор
Аватара пользователя
Сообщения: 1873
Зарегистрирован: Пт мар 25, 2005 6:05 pm
Откуда: Progress Technologies

Re: Отображение/ Скрытие поля в форме

Сообщение Arelav » Пт авг 19, 2016 2:09 pm

Тогда можно либо использовать оператор HIDE - позволяет скрыть элемент фрэйма,
OpenEdge Development: ABL Reference писал(а):Makes a widget invisible (sets its VISIBLE attribute to FALSE), or clears the message area for a window, or hides all widgets and clears messages in a window.


Либо атрибут HANDLE. Подробности см. OpenEdge Development: ABL Reference, Handle Attributes and Methods Reference.

Вот простой пример на скорую руку.
Здесь по нажатию по кнопке hide-button поле customer.name будет скрываться или открываться в зависимости от текущего состояниям.
Также с помощью переменной whand с типом handle изменяется метка кнопки с Hide на Unhide и наоборот.
Код: Выделить всё
define button hide-button label "Hide".
define variable whand    as handle no-undo.

form hide-button  skip(2)
    customer.name no-labels
    with frame but-frame row 1.
   
find first customer no-lock no-error.
display customer.name with frame but-frame.

whand = hide-button:HANDLE.

on choose of hide-button
    do:
        if customer.name:handle:visible then
        do:
            customer.name:handle:visible = false.
            whand:label = "Unhide".
        end.
        else
        do:
            customer.name:handle:visible = true.
            whand:label = "Hide".
        end.
    end.
   
enable hide-button customer.name with frame but-frame.
wait-for window-close of current-window.


Определение имени пользователя остаётся таким же, через USERID.

Вернуться в PROGRESS - 4GL - ПРОГРАММИРОВАНИЕ

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4