Fórum Duvida procedure... #329269
13/09/2006
0
Tenho diversos formularios com dois botoes que possui a propriedade name = Inserir e name = editar respectivamente.
Gostaria de criar uma UNIT com esse procedimento da seguinte forma para poder executar a partir de qualquer formulario.
[color=darkblue:f5cc09482f]procedure tratabotoes;
begin
inserir.enabled:= not inserir.enabled;
editar.enabled:= not editar.enabled;
end;[/color:f5cc09482f]
Um amigo do forum me ajudou mas nao consegui com seu outro exemplo pois nao connsigo fazer as alteracoes pra utilizar dessa forma mas seu exemplo deu certo e segue abaixo porem desabilita todos os botoes q tenho no form. Obrigado!!!
[color=blue:f5cc09482f]unit UfrmProcedimentos;
interface
uses
StdCtrls,dialogs;
procedure Desabilitarinserir(sender:Tobject); //todo que esta qui é invisivel
implementation
procedure Desabilitarinserir(sender:Tobject);
begin
if sender is Tbutton Then
begin
Tbutton(sender).enabled:= not Tbutton(sender).enabled;
end;
end;
end.[/color:f5cc09482f]
Souzaaguiar
Curtir tópico
+ 0Posts
14/09/2006
Fabiano Góes
desculpe não entendi se o exemplo acima desabilitou todos os botoes do form, ou se você quer desabilitar todos os botoes do form.
testei aqui assim:
procedure TForm1.button1(Sender: TObject); begin Desabilitarinserir( Sender ); end;
e desabilitou apenas o botão que chamou o método.
Gostei + 0
14/09/2006
Massuda
Gostei + 0
14/09/2006
Marco Salles
Da maneira com esta , é apenas para exemplo e faz como o Fabiano Góes
disse:
desabilitou apenas o botão que chamou o método.
então faça assim
Note que em vez do nome vamos estou usando uma propriedade Tag do componentes que voce que que sofra a ação
No Objecto inspector , coloque todos os botoes <o BtSalvar , BtEditar> no seu caso com a propreidade [b:2792f98988]Tag=1[/b:2792f98988]
Para chamar o método de qualquer formulário , basta declara na secção Uses a Unit aonde esta este método
Por fim chame o método:
procedure TForm1.Button3Click(Sender: TObject); begin habilitarDesabilitar(form1); end;
Para finalizar tres coisas:
1) Qualquer dúvida , prossiga no proprio Topico e so clicar No Botão responder.. Não ha necessidade e nen é recomendádo abrir um novo tópico
2)
[b:2792f98988]isto esta errado...Tudo que for declarado na secção interface estara Visivel e tudo que for declarado na secção Implementation, pertencera exclusivamente a Unit[/b:2792f98988]
esta procedure , massuda do jeito incial , não trata nenhum evento especificamente.. Apenas desabilitava o Botao que a chamou.. [b:2792f98988]so isso[/b:2792f98988]
O fato de ser uma procedure Solta sem ser um método de alguma classe , foi propositalmente postado por mim em um outro tópico, para quebrar exatamente esta idéia que se formou a este respeito....Que todo método tem que pertencer a alguma classe.
Gostei + 0
14/09/2006
Massuda
[quote:4805559966=´Marco Salles´]...para quebrar exatamente esta idéia que se formou a este respeito....Que todo método tem que pertencer a alguma classe.[/quote:4805559966]Isso é verdade desde que não se tente atribuir a procedure ´solta´ a algum evento. Mas agora entendi o propósito disto.
Gostei + 0
16/09/2006
Souzaaguiar
Gostei + 0
18/09/2006
Marco Salles
veja , a procedure passada , ela altera exatamente a propriedade enable
de um Botão e não a propriedade tag
A propriedade tag foi usada apenas para determinar , qual serão os botoes qeu terão a sua propriedade enabled alterada , quando a procedure for chamada/executada
se voce não definir , quais são os botoes que terão sua propriedade enable alterada , a procedure alterara todos os botoes , e isto voce não quer
voce poderia usar outras limitaçoes , como o proprio nome , caption ou text , so que ai voce teria que escrever varios ifs para atender todas essas condicoes , o que certamente não é uma boa pratica
exemplo de uso não aconselhável
if (Tbutton(Formulario.Components[i]).caption = ´Salvar´)or
((Tbutton(Formulario.Components[i]).caption = ´Editar´)or
(Tbutton(Formulario.Components[i]).caption = ´outrosCaption´) Then
espero ter sido claro
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)