Показать сообщение отдельно
  #1  
Старый 22.05.2013, 00:59
Sheitan48 Sheitan48 вне форума
Прохожий
 
Регистрация: 05.05.2013
Сообщения: 11
Версия Delphi: RAD Studio 2010
Репутация: 10
Стрелка FindComponent и скрытая форма...

Всю голову себе сломал, хоть тресни FindComponent не верно отрабатывает если перед ним не сделать Form7.Show;
Не рабочий код:
Код:
dm.DbGrid2.DataSource.DataSet.Active:=true;
  dm.DbGrid2.DataSource.DataSet.First;
  while not dm.DbGrid2.DataSource.DataSet.Eof do
    begin
      i:=dm.DbGrid2.DataSource.DataSet.RecNo;
     { with Form7 do  }
      (Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text:=dm.DbGrid2.DataSource.DataSet.FieldValues['FachPK'];
      if ((Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text='СПЕЦИАЛЬНОСТЬ') then
        begin
          (Form7.FindComponent('Edit'+IntToStr(i+4)) as TEdit).Enabled:=False;
          (Form7.FindComponent('ComboBox'+IntToStr(i)) as TComboBox).ItemIndex:=1;
          (Form7.FindComponent('ComboBox'+IntToStr(i)) as TComboBox).Enabled:=False;
          (Form7.FindComponent('MaskEdit'+IntToStr(i+6)) as TMaskEdit).Enabled:=False;
          (Form7.FindComponent('Edit'+IntToStr(i+8)) as TEdit).Enabled:=False;
        end;
      dm.DbGrid2.DataSource.DataSet.Next;
      end;
Рабочий код:
Код:
  dm.DbGrid2.DataSource.DataSet.Active:=true;
  dm.DbGrid2.DataSource.DataSet.First;
  Form7.Show;//ОТЛИЧИЕ ТОЛЬКО В ЭТОЙ СТРОКЕ
  while not dm.DbGrid2.DataSource.DataSet.Eof do
    begin
      i:=dm.DbGrid2.DataSource.DataSet.RecNo;
     { with Form7 do  }
      (Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text:=dm.DbGrid2.DataSource.DataSet.FieldValues['FachPK'];
      if ((Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text='СПЕЦИАЛЬНОСТЬ') then
        begin
          (Form7.FindComponent('Edit'+IntToStr(i+4)) as TEdit).Enabled:=False;
          (Form7.FindComponent('ComboBox'+IntToStr(i)) as TComboBox).ItemIndex:=1;
          (Form7.FindComponent('ComboBox'+IntToStr(i)) as TComboBox).Enabled:=False;
          (Form7.FindComponent('MaskEdit'+IntToStr(i+6)) as TMaskEdit).Enabled:=False;
          (Form7.FindComponent('Edit'+IntToStr(i+8)) as TEdit).Enabled:=False;
        end;
      dm.DbGrid2.DataSource.DataSet.Next;
      end;
UPD. Причем даже нет, не так, НЕ ПРАВИЛЬНО отрабатывает именно
Код:
 if ((Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text='СПЕЦИАЛЬНОСТЬ') then
т.е. в поле MaskEdit2 100% находится текст СПЕЦИАЛЬНОСТЬ который он все равно не верно сравнивает...
Собственно вопрос как сделать так чтоб выполнить findcomponent над form7 без необходимости показывания 7 формы?
P.S. Parent'ом для искомых компонентов является GroupBox1, но мне это нифига не помогло ибо при поиске в паренте выдает Error
Ответить с цитированием