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

Шаг 10.3 - Создание контекстного меню.

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

Рис. 10.3.

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

Свойство Значение Комментарий
TMenuItem - Открыть
Action OpenObj Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+O "Горячая клавиша", соответствующая данному пункту меню.
TMenuItem - Удалить
Action DelObj Действие (TAction), соответствующее данному пункту меню.
ShortCut Del "Горячая клавиша", соответствующая данному пункту меню.
TMenuItem - Разделитель
Action ... Действие (TAction), соответствующее данному пункту меню, оставьте пустым.
Caption - Символ "-" означает разделитель.
TMenuItem - Администрирование...
Action AdminObj... Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+A "Горячая клавиша", соответствующая данному пункту меню.
TMenuItem - Автор-создатель...
Action AuthorObj Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+U "Горячая клавиша", соответствующая данному пункту меню.
TMenuItem - Разделитель
Action ... Действие (TAction), соответствующее данному пункту меню, оставьте пустым.
Caption - Символ "-" означает разделитель.
TAction - Изменить состояние...
Action ChangeState Действие (TAction), соответствующее данному пункту меню.
ShortCut Ctrl+S "Горячая клавиша", соответствующая данному пункту меню.

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

procedure TfmPCFindDetails.puabPopup(Sender: TObject);
var
     inAcc, inLock: byte;
begin
     inherited;
     if Self.vlftv.IsEmpty then
     // если таблица пуста
     begin
          Self.OpenObj.Enabled:=False;
          Self.DelObj.Enabled:=False;
          Self.AdminObj.Enabled:=False;
          Self.AuthorObj.Enabled:=False;
          Self.ChangeState.Enabled:=False;
          // отключить указанные выше действия
     end
     else
     // если таблица не пуста
     begin
          inAcc:=Self.vlftv.cdsTV.FieldByName('_ACCESSLEVEL').AsInteger;
          inLock:=Self.vlftv.cdsTV.FieldByName('_LOCKED').AsInteger;
          // получим из таблицы значения уровней доступа и блокировок
          // к выделенному объекту базы данных

          Self.OpenObj.Enabled:=True;
          // включить действие открытия объекта в отдельном окне для редактирования
          if ((inAcc>1) and (inLock<2)) then Self.DelObj.Enabled:=True
          // если уровень доступа к объекту чтение-запись или администрирование
          // и объект не заблокирован другим пользователем
          // включить действие удаления объекта из базы данных

          else Self.DelObj.Enabled:=False;
          // если доступ только для чтения или объект заблокирован другим пользователем
          // отключить действие удаления

          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 "Сетевые Информационные Технологии" ...Главная...Карта сайта...Контакты