The Unofficial Newsletter of Delphi Users - by Robert Vivrette

Управляем компонентами, используя множества

By Alan G. Lloyd - AlanGLLoyd@aol.com

Перевод Руденко Е.В.   janer@newmail.ru    март  2002 года

Одним из путей управления набором компонентов является использование перечислимых переменных для характеристики кнопок , далее множества таких переменных и массива компонентов. Этот путь включает в себя немного низкоуровневого кодирования , но обеспечивает легкость изменения свойств компонентов.

Используя кнопки управления медиапроигрывателем в качестве простого примера можно написать :-

     RecBtn: TButton;
     PlayBtn: TButton;
     RewindBtn: TButton;
     StopBtn: TButton;
     FFwdBtn: TButton; 
1 Декларируем перечислимые переменные и множество таких переменных.
     TMMButton = (mmbRecord, mmbPlay, mmbRewind, mmbStop, mmbFFwd);
     TMMButtonSet = set of TMMButton;
В декларациях формы  ...

2 Декларируем массив компонентов управления в  private секции формы. Доступные свойства вписываются в объект TControl  (который является предком большинства компонентов контроля) и используются в виде массива.

     FBtnArray : array[TMMButton] of TControl;

3 Декларируется Свойство EnabledButtons (или подобное) и указывается Метод его записи от предка :-

     property EnabledButtons : TMMButtonSet write SetEnabledButtons;
4 Декларируется процедура :-
     procedure SetEnabledButtons(AValue : TMMButtonSet);
5 В событии  FormCreate предварительно заполняется массив кнопок :-
     FBtnArray[mmbRecord] := RecBtn;
     FBtnArray[mmbPlay] := PlayBtn;
     FBtnArray[mmbRewind] := RewindBtn;
     FBtnArray[mmbStop] := StopBtn;
     FBtnArray[mmbFFwd] := FFwdBtn;
6 Специализируется код процедуры. Отметим, что до того, как вы захотите прочитать набор кнопок, нет необходимости его сохранять.
     procedure TForm1.SetEnabledButtons(AValue : TMMButtonSet);
     var
       I : TMMButton;
     begin
       for I := Low(TMMButton) to High(TMMButton) do
         FBtnArray[I].Enabled := (I in AValue);
     end;
И наконец добавляем код :-
     EnabledButtons := [mmbRewind, mmbStop, mmbFFwd];
Короткий, простой, ясный кусочек программы.

Вышеприведенный пример можно распространить на другие свойства компонентов контроля, таких как видимость, цвет, положение и т.д.
 Возврат в Tips&Tric