![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
|
Всем спасибо за помощь но я уже сделал по другому
|