GetForms

procedure GetForms(Forms: TStrings) -DESKTOP-

Заполняет список формами, отсортированными по алфавиту. Элементы списка Strings содержат имена форм. Причем в именах подчиненных форм стоит 4 ведущих пробела. Элементы списка Objects содержат сами объекты форм TdxForm.

Программа использует эти формы в служебных целях. Формы неактивны, поэтому вызывать методы и обращаться к некоторым свойствам (например, EditWindow) нельзя - это приведет к ошибке.

Когда в базу данных входит обычный пользователь (не разработчик), объекты списка будут содержать «урезанные» формы. В формах будут только компоненты-поля (текст, число, дата и т. п.), простые формы вовсе будут без единого компонента.

Параметры:

  • Forms - список строк. Объект Forms должен быть создан в коде перед вызовом этой процедуры.

Пример:

// Вывод имен всех форм и компонентов.
var
  Forms: TStringList;
  i, j: Integer;
  Fm: TdxForm;
begin
  Forms := TStringList.Create;
  GetForms(Forms);
  for i := 0 to SL.Count - 1 do
  begin
    Debug(SL[i]);
    Fm := TdxForm(SL.Objects[i]);
    for j := 0 to Fm.ComponentCount - 1 do
      Debug(Fm.Components[j].Name);
  end;
  Forms.Free;
end;
//Функция находит форму, проверяет её параметра и возвращает
//результат проверки (истина/ложь)
function  MyFormCheck (FormName: string): boolean;
var
 Forms: TStringList;
 i, j: Integer;
 Fm: TdxForm;
begin
  Result := false; //заранее инициализируем переменную Result
  Forms := TStringList.Create; //создаём список всех форм
  GetForms(Forms);//заполняем список
  for i := 0 to Forms.Count - 1 do //листаем список в поисках чего-то
  begin
    //если в списке есть искомая форма
    if FormName = Forms[i] then
    begin
      //мы можем её инициализировать, чтобы что- там проверить
      Fm := TdxForm(Forms.Objects[i]);
      for j := 0 to Fm.ComponentCount - 1 do
      begin
        //тут разыскиваете нужный вам компонент и проверяете его параметры
      end;
      //уничтожаете созданную форму
      Fm.Free;
      //возвращает нужный результат
      Result := true;
      //прерываете цикл для выхода
      break;
    end;
  end;
end;