14. Параметры формы (TParamList)

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

Свойство Params

Параметры доступны через свойство Params класса TParamList. Доступ к параметрам осуществляется по имени. Параметр может хранить значение типа Variant и объект TObject. Если при присваивании значения параметру его нет в списке, то он добавляется автоматически. Если при чтении параметр не находится, то возвращается Null или nil.

Пример обращения к параметру:

Fm.Params.Values['Статус'] := 3; 
Fm.Params['Статус'] := 5;  // Свойство Values является свойством по умолчанию и его можно не писать.
Self.Params['Объект'].Object := AnyObj;

События OnSetParam/OnGetParam

Когда присваивается значение параметру, возникает событие OnSetParam:

TParamNotifyEvent = procedure(Sender: TObject; const ParamName: String);

OnGetParam того же типа, что и OnSetParam, возникает, когда читается значение параметра.

Подключив обработчики к этим событиям можно имитировать «свойства» классов. Т. е. при присваивании или чтении значения выполнять какие-нибудь действия внутри формы. Пример:

procedure SetParamHandler(Sender: TObject; const ParamName: String);
begin
  if ParamName = 'тест' then
  begin
    // Какие-то действия
  end;
end;
 
procedure Form_Create;
begin
  Self.Params.OnSetParam := @SetParamHandler;
end;

В другом модуле:

// Присваивание параметру значения вызовет в форме какие-то действия
Fm.Params.Values['тест'] := 1;