|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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; Код:
if ((Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text='СПЕЦИАЛЬНОСТЬ') then Собственно вопрос как сделать так чтоб выполнить findcomponent над form7 без необходимости показывания 7 формы? P.S. Parent'ом для искомых компонентов является GroupBox1, но мне это нифига не помогло ибо при поиске в паренте выдает Error Последний раз редактировалось Sheitan48, 22.05.2013 в 01:09. |
#2
|
||||
|
||||
Цитата:
Попробуй поставить точку останова на этой проблемной строке, и когда произойдёт в том месте останов - посмотри какое значение содержится в переменной i - скорее всего значение будет отличаться от предполагаемого тобой. |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Sheitan48 (22.05.2013)
|
#3
|
|||
|
|||
Да пробовал, верное туда значение пишется, собственно оно только здесь и используется, откуда ж ему не верному взяться... Да и тем более оно ж правильно отрабатывает если показать форму а значит и счетчик правильный пишется...
Не знаю с чем это связано, причем просто findcomponent отрабатывает, а на if сравнение со значением не верно делает %) бред какой-то... |
#4
|
||||
|
||||
Цитата:
Код:
ShowMessage('"'+(Form7.FindComponent('MaskEdit'+IntToStr(i+1)) as TMaskEdit).Text+'"'); |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Sheitan48 (22.05.2013)
|
#5
|
||||
|
||||
Или я чего-то не понимаю или лыжи не едут.
Зачем в вашем случае вообще искать что-то на форме? Вы же фактически работаете с текущим значением: Код:
dm.DbGrid2.DataSource.DataSet.FieldValues['FachPK'] Не проще написать сразу? Код:
if dm.DbGrid2.DataSource.DataSet.FieldValues['FachPK']='СПЕЦИАЛЬНОСТЬ') then Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Sheitan48 (22.05.2013)
|
#6
|
|||
|
|||
упс)
Цитата:
Цитата:
Ууу...позор мне) я почему то был на 100% уверен что в базе хранятся строки в верхнем регистре... Оказалось нет. В базе лежит "Специальность"... И ShowMessage в итоге перед показом формы возвращает "Специальность", а после показа формы "СПЕЦИАЛЬНОСТЬ" (в MaskEdit'e CharCase выставлен в ecUpperCase)... Теперь стало понятно почему не правильно как я думал отрабатывал if... Но это не отменяет непонимания мной того факта, почему перед показом формы возвращается значение которое находилось в базе, т.е. не обработанное с учетом CharCase... Последний раз редактировалось Sheitan48, 22.05.2013 в 20:00. |