procedure
08/02/2006
0
preciso da ajuda de voces para montar um procedure.
por exemplo, preciso desabilitar um Tedit, um Tbutton e um item do TMAINMENU
como fazer para criar um procedure q desabilite qualquer componente...independente de qual ele seja.
separado eu sei fazer numa boa...por exemplo se fosse para desabilitar um Tedit faria assim:
procedure Tform1.desabilita(campo: Tedit); begin campo.enabled := false; end;
e chamaria assim:
form1.desabilita(NOME DO EDIT);
so que preciso fazer uma procedure q nem essa so que eu não sei qual tipo de componente será...pode ser um TEDIT...um TMEMO...uma TLABEL...
fico no aguardo!
Fernando_ramos
Posts
08/02/2006
Motta
procedure Tform1.desabilita(controle: TControl);
begin
controle.Enabled := false;
end;
Acho que funciona , não peguei bem o que se quer.
08/02/2006
Fernando_ramos
funcionou 99¬.....
o unico problema é...quando aplico isso para um item do TMAINMENU o seguinte erro me retorna....
[Error] Unit2.pas(44): Incompatible types: ´TControl´ and ´TMenuItem´
09/02/2006
Bico
Faça o seguinte colega:
Crie duas rotinas com o mesmo nome e defina-as como overload.
procedure desabilita(controle: TControl); overload; procedure desabilita(controle: TMenuItem); overload;
A implementação de cada uma:
procedure TForm1.desabilita(controle: TControl); begin controle.Enabled := false; end;
procedure TForm1.desabilita(controle: TMenuItem); begin controle.Enabled := False; end;
Chamando as rotinas:
procedure TForm1.Button1Click(Sender: TObject); begin desabilita(Edit1); desabilita(Teste1); end;
Atenciosamente,
Fernando.
09/02/2006
Motta
Vc pode fazer ...
procedure Tform1.desabilita(obj: TObject);
begin
if obj is TControl then
TControl(obj).Enabled := false;
if obj is TMainMenu then
TMainMenu(obj).Enabled := false;
...
end;
é uma solução
23/02/2006
Fernando_ramos
como base de teste amigo...
copiei e colei seu codigo...logico tirando os ´...´, e apresentou o seguinte erro...
[Error] frmsplash.pas(130): Undeclared identifier: ´TMainMenu´
se puder me ajudar...
23/02/2006
Michael
procedure AtivarDesativarControle(Controle: TComponent; Ativar: Boolean); begin if Controle is TControl then (Controle as TControl).Enabled := Ativar else if Controle is TMenuItem then (Controle as TMenuItem).Enabled := Ativar; end;
Lembrando que vc pode usar Actions associadas a mais de um controle. E neste caso só precisaria desativar a ação e os controles ligados a ele tbm seriam automaticamente.
[]´s
24/02/2006
Fernando_ramos
deu o seguinte erro!
[Error] frmsplash.pas(130): Undeclared identifier: ´TMenuItem´
24/02/2006
Michael
Quando este tipo de erro ocorrer, a primeira coisa que vc deve fazer é ir no help do Delphi e procurar pelo identificador não declarado, no caso [b:5f781fd284]TMenuItem[/b:5f781fd284]. Lá vc pode ver em qual unit ele está.
No nosso contexto, é a unit [b:5f781fd284]Menus[/b:5f781fd284]. Esqueci de citar no último post. Adicione-a, portando, à cláusula [b:5f781fd284]uses [/b:5f781fd284]do seu arquivo.
[]´s
Clique aqui para fazer login e interagir na Comunidade :)