Я пишу процедуру, чтобы закрыть все созданные и открытые adoquery в (любой) форме, проблема в том, что мне нужно сделать листинг в форме для идентификации компонентов. как я могу сделать динамическое приведение, как показано в примере?Форма динамически
мне нужно что-то вроде этого
Procedure OpenADODataSets(Form:TForm;FormType:TClass);
...
...
(Form as FormType).ComponentCount
или
Procedure OpenADODataSets(Form:TForm;FormType:TClass);
...
...
FormType(Form).ComponentCount
это код.
Procedure OpenADODataSets(Form:TForm;FormType:TClass);
var
i: integer;
begin
for i:=0 to (Form as FormType).ComponentCount-1 do
if (Form as FormType).Components[i].ClassType=TADOQuery then
if not TADOQuery((Form as FormType).Components[i]).Active then
TADOQuery((Form as FormType).Components[i]).Open;
end;
UPDATE
проблема решается с ответом @Edelcom
Procedure OpenADODataSets(Form:TForm);
var
i: integer;
begin
for i:=0 to Form.ComponentCount-1 do
if Form.Components[i].ClassType=TADOQuery then
if not TADOQuery(Form.Components[i]).Active then
TADOQuery(Form.Components[i]).Open;
end;
Зачем вам нужно (форма как FormType)? – Edelcom
Вместо того, чтобы проверять, является ли тип компонента * точно равным * 'TADOQuery', вы должны использовать оператор ** is ** для проверки того, сходит ли компонент * из *' TADOQuery': ', если Form.Components [i] TADOQuery, а не TADOQuery (Form.Components [i]). Active then ... ' –