Rotina para Limpar Formulário estilo fsMDIChild
Estou desenvolvendo uma aplicação MDI e estou com um problema.
Tenho uma rotina para limpar componentes de um determinado formulário. Ela funciona normalmente com aplicações SDI.
No sistema que estou desenvolvendo eu carrego meu formulário MDIChild em tempo de execução através do menu de um formulário principal. No formulário MDI eu chamo a seguinte rotina:
procedure LimparForm(frm: Tform);
var
x: integer;
begin
with frm do
begin
for x:=0 to (ControlCount-1) do
begin
{ TEdit, TDBLookupControl, TCustomCheckBox, ... [Colocar a classe ancestral]}
//TEdit
if (Controls[x] is TCustomEdit) then
(Controls[x] as TCustomEdit).Clear;
//TDBLookupControl
if (Controls[x] is TDBLookupComboBox) then
(Controls[x] as TDBLookupComboBox).ListField := ´´;
{ TListBox , TDBListBox}
if (Controls[x] is TCheckBox) then
(Controls[x] as TCheckBox).Checked := false;
end;
end;
end;
No entando quando chamo a rotina ....
LimparForm(frmFormularioPrincipal);
o parâmetro ´frmFormularioPrincipal ´é igual a nil, e então dá o seguinte erro ´EAccessViolation´.
Até agora não consegui achar onde estou errando. Como resolver?
Onde declarar a variável?
Se alguém por gentileza puder fazer o teste e me enviar a resposta fico muito grato.
mazeu :lol:
Tenho uma rotina para limpar componentes de um determinado formulário. Ela funciona normalmente com aplicações SDI.
No sistema que estou desenvolvendo eu carrego meu formulário MDIChild em tempo de execução através do menu de um formulário principal. No formulário MDI eu chamo a seguinte rotina:
procedure LimparForm(frm: Tform);
var
x: integer;
begin
with frm do
begin
for x:=0 to (ControlCount-1) do
begin
{ TEdit, TDBLookupControl, TCustomCheckBox, ... [Colocar a classe ancestral]}
//TEdit
if (Controls[x] is TCustomEdit) then
(Controls[x] as TCustomEdit).Clear;
//TDBLookupControl
if (Controls[x] is TDBLookupComboBox) then
(Controls[x] as TDBLookupComboBox).ListField := ´´;
{ TListBox , TDBListBox}
if (Controls[x] is TCheckBox) then
(Controls[x] as TCheckBox).Checked := false;
end;
end;
end;
No entando quando chamo a rotina ....
LimparForm(frmFormularioPrincipal);
o parâmetro ´frmFormularioPrincipal ´é igual a nil, e então dá o seguinte erro ´EAccessViolation´.
Até agora não consegui achar onde estou errando. Como resolver?
Onde declarar a variável?
Se alguém por gentileza puder fazer o teste e me enviar a resposta fico muito grato.
mazeu :lol:
Mazeu
Curtidas 0
Respostas
Ipc$
18/10/2004
Tente assim:
LimparForm(Application.MainForm);
LimparForm(Application.MainForm);
GOSTEI 0
Mazeu
18/10/2004
Desta maneira eu testei e foi passado o parâmetro, porém nada aconteceu, todos os edits e outros compenentes do formulário não foram limpos.
A rotina precisa verificar o MDIChild Ativo e fazer a limpeza de seus componentes....
Essa rotina esta na mesma unit do MDIChild.
A rotina precisa verificar o MDIChild Ativo e fazer a limpeza de seus componentes....
Essa rotina esta na mesma unit do MDIChild.
GOSTEI 0
Ipc$
18/10/2004
Utilize as propriedades MDIChildCount e MDIChildren[x] do Application.MainForm
GOSTEI 0