|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите разобраться с вызовом процедуры
Мне необходимо со всеми компонентами определенного типа выполнить одно и тоже действие при этом хочу написать уникальную процедуру которая бы получала имя формы
Код:
procedure TForm1.Update_Table_Query(formName :TForm); var i: Integer; begin for i := 0 to formName.ComponentCount-1 do begin if (formName.Components[i] is TTable) then begin TTable(formName.Components[i]).Refresh;//Обновляем end; end; end; как мне оптимизировать код так чтобы при вызове процедуры не нужно было указывать имя формы вот в таком виде: Form1.Update_Table_Query(Form2); а можно было бы указать это примерно в таком виде: Form1.Update_Table_Query(form.name); где form.name имя нужной нам формы если я так пишу то при компиляции выдается сообщение : [DCC Error] Unit15.pas(57): E2010 Incompatible types: 'TForm' and 'TComponentName' как мне приобразовать типы или кто нибудь подскажите тогда как это же можно реализовать по другому Заранее огромное спасибо!!! |
#2
|
|||
|
|||
Цитата:
Попробуй Код:
TForm1.Update_Table_Query(form: TObject); ... for i := 0 to (form as TForm).ComponentCount-1 do ... Код:
Update_Table_Query(CurrentFormVariable); Если Вам всеже нужен вариант обращения к форме непосредственно по имени формы, то могу только направить по следующему пути: передавать процедуре имя формы в формате строки (FormName: string) и, соответственно перед работой с элементами формы, её необходимо найти по этому имени (на память подсказать не могу). Последний раз редактировалось PiboDIE, 04.08.2009 в 09:05. |
#3
|
|||
|
|||
Вот такой код срабатывает :
Код:
function My_FormFind(FormName : string) : TForm; Var Comp : TComponent; begin Result:=nil; FormName:=trim(FormName); if length(FormName)>0 then begin Comp:=Application.FindComponent(FormName); if Comp<>NIL then begin if (Comp is TForm) then begin Result:=(Comp as TForm); end; end; end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); Var FormX : TForm; begin FormX:=My_FormFind('Form1'); if FormX<>NIL then begin ShowMessage(FormX.Name); end; end; |
#4
|
|||
|
|||
Всем спасибо
Всем спасибо за помощь но я уже сделал по другому
|