СИТ "Сетевые Информационные Технологии (в машиностроении)"
Неформальное объединение IT специалистов
 
tltr
..Visual Loodsman for Delphi
Предыдущая страницаСледующая страницаГлавная страницаКарта сайтаКарта сайта
   
   
   
  Главная
  Карта сайта
  Контакты
   
  Учебное пособие:
  Содержание
   
   
  Компания АСКОН
.....
Урок 7 - Создание процедур управления объектами базы данных системы ЛОЦМАН:PLM для компонента TVLTableView (продолжение).
 

Шаг 7.3 - Изменение контекстного меню.

     Дважды щелкние по компоненту puab (TPopupActionBar) мышкой, на экран загрузится редактор меню (см. рис. 7.3):

Рис. 7.3.

     Создайте три пункта меню с двумя разделителями и настройте в инспекторе свойств некоторые свойства пунктов следующим образом:

TMenuItem - Разделитель.

Свойство Значение Комментарий
Action ... Действие (TAction), соответствующее данному пункту меню, оставьте пустым.
Caption - Символ "-" означает разделитель.

TMenuItem - Администрирование.

Свойство Значение Комментарий
Action AdminObj Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+A "Горячая клавиша", соответствующая данному пункту меню.

TMenuItem - Автор-создатель.

Свойство Значение Комментарий
Action AuthorObj Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+U "Горячая клавиша", соответствующая данному пункту меню.

TMenuItem - Разделитель.

Свойство Значение Комментарий
Action ... Действие (TAction), соответствующее данному пункту меню, оставьте пустым.
Caption - Символ "-" означает разделитель.

TMenuItem - Изменить состояние.

Свойство Значение Комментарий
Action ShangeState Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+S "Горячая клавиша", соответствующая данному пункту меню.

     Теперь внесем изменения в правила управления видимостью некоторых пунктов меню. Для этого встаньте на компонент puab - TPopupActionBar, в инспекторе свойств перейдите на закладку Events и откройте процедуру для события OnPopup. Усложним процедуру puabPopup и внесем в нее следующие изменения:

procedure TfmLibOKP.puabPopup(Sender: TObject);
var
     inAcc, inLock: byte;
begin
     inherited;
     Self.InsLib.Enabled:=Self.vltv.boInsDel;
     // проверим возможность редактирования таблицы
     // public свойство boInsDel таблицы заполняется по умолчанию при регенерации таблицы

     if Self.vltv.IsEmpty then
     begin
          // если таблица пуста перечисленные ниже действия отключить
          Self.OpLib.Enabled:=False;
          Self.DelLib.Enabled:=False;
          Self.AdminObj.Enabled:=False;
          Self.AuthorObj.Enabled:=False;
          Self.ChangeState.Enabled:=False;
     end
     else
     begin
          // если таблица не пуста
          inAcc:=Self.vltv.cdsTV.FieldByName('_ACCESSLEVEL').AsInteger;
          inLock:=Self.vltv.cdsTV.FieldByName('_LOCKED').AsInteger;
          // получим из таблицы значения уровней доступа и блокировок
          // к выделенному объекту базы данных
          
          Self.OpLib.Enabled:=True;
          // включить процедуру редактирования выделенного объекта
          // проверка уровня доступа и блокировки к выделенному объекту
          // будут производиться в вызванной для редактирования форме

          Self.DelLib.Enabled:=Self.vltv.boInsDel;
          // проверить возможность удаления выделенного объекта
          Self.AuthorObj.Enabled:=True;
          // включить процедуру просмотра информации об авторе-создателе выделенного объекта
          if ((inAcc>1) and (inLock<2)) then Self.ChangeState.Enabled:=True
          else Self.ChangeState.Enabled:=False;
          // если уровень доступа и блокировки к выделенному объекту
          // позволяют его редактировать, включить процедуру изменения состояния,
          // если нет - выключить процедуру

          if ((inAcc=3) and (inLock<2)) then Self.AdminObj.Enabled:=True
          else Self.AdminObj.Enabled:=False;
          // если уровень доступа к выделенному объекту - администрирование
          // и он не заблокирован "чужим" пользователем, включить процедуру администирования,
          // если нет - выключить процедуру

     end;
end;

     Далее...

Предыдущая страницаСледующая страницаГлавная страницаКарта сайтаКарта сайта
 
...© 2010 "Сетевые Информационные Технологии" ...Главная...Карта сайта...Контакты