Chamar procedure em outro form
Sou iniciante em Delphi e preciso de ajuda. Tenho vários forms que podem ter a mesma programação. Por exemplo:
Form 1 com o Edit1
Form 2 com o Edit1
Form 3 com o Edit1
criei uma procedure na unit 1 (do form1) que, por exemplo, dá o foco ao edit1. Gostaria de saber como eu faço para chamar a procedure nos outros forms para então o edit 1 do respctivo form receba o foco.
O que eu consegui fazer é, em outro form, ao chamar a procedure, o edit do form que tem a procedure receber o foco. Se eu chamo a procedure no form 3, o edit que recebe o foco é o do form1 (onde está a procedure), e eu NÂO quero que isso aconteça. Quero que quando chame a procedure o edit 1 do form respectivo receba o foco. Não estou conseguindo fazer isso.
Por favor, me ajudem.
Obrigado.
Form 1 com o Edit1
Form 2 com o Edit1
Form 3 com o Edit1
criei uma procedure na unit 1 (do form1) que, por exemplo, dá o foco ao edit1. Gostaria de saber como eu faço para chamar a procedure nos outros forms para então o edit 1 do respctivo form receba o foco.
O que eu consegui fazer é, em outro form, ao chamar a procedure, o edit do form que tem a procedure receber o foco. Se eu chamo a procedure no form 3, o edit que recebe o foco é o do form1 (onde está a procedure), e eu NÂO quero que isso aconteça. Quero que quando chame a procedure o edit 1 do form respectivo receba o foco. Não estou conseguindo fazer isso.
Por favor, me ajudem.
Obrigado.
Alvarosou
Curtidas 0
Respostas
M@rk Knopfler
17/10/2003
A sua procedure poderia receber um parâmetro do tipo TEdit, indicando qual caixa vai receber o foco. Como vc a fez na Unit1, ela ficaria assim:
procedure TForm1.AtivaCaixa(QualCaixa: TEdit);
begin
QualCaixa.SetFocus;
end;
Agora suponha um clique em um botão do Form2:
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.AtivaCaixa(Form2.Edit1); // Ativar o Edit do Form2
end;
procedure TForm1.AtivaCaixa(QualCaixa: TEdit);
begin
QualCaixa.SetFocus;
end;
Agora suponha um clique em um botão do Form2:
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.AtivaCaixa(Form2.Edit1); // Ativar o Edit do Form2
end;
GOSTEI 0
Rômulo Barros
17/10/2003
procedure Form1.colocarFocus;
Var
X:Byte;
Begin
For x:=0 to self.componentCount -1 Do
Begin
if(component[x] is tdbedit)then
Begin
(Tdbedit(component[x]).setfocus);
end;
End;
End;
// Não testei. tenho dúvidas se o correto é [color=red:a126ddbd3f]componentcount() [/color:a126ddbd3f]ou [color=red:a126ddbd3f]componentscount();[/color:a126ddbd3f]
//Só funcionará para o primeiro edit de cada form q vc colocar primeiro...
Var
X:Byte;
Begin
For x:=0 to self.componentCount -1 Do
Begin
if(component[x] is tdbedit)then
Begin
(Tdbedit(component[x]).setfocus);
end;
End;
End;
// Não testei. tenho dúvidas se o correto é [color=red:a126ddbd3f]componentcount() [/color:a126ddbd3f]ou [color=red:a126ddbd3f]componentscount();[/color:a126ddbd3f]
//Só funcionará para o primeiro edit de cada form q vc colocar primeiro...
GOSTEI 0
Marcelo.c
17/10/2003
[quote:d39ad8d523=´Undeclared Identifier´]// Não testei. tenho dúvidas se o correto é [color=red:d39ad8d523]componentcount() [/color:d39ad8d523]ou [color=red:d39ad8d523]componentscount();[/color:d39ad8d523][/quote:d39ad8d523]ComponentCount
Component[b:d39ad8d523]s[/b:d39ad8d523][x]
Component[b:d39ad8d523]s[/b:d39ad8d523][x]
GOSTEI 0
Rômulo Barros
17/10/2003
Para de entrar e ficar criticando o código dos outros. Ao invés de postar os meus erros, pq vc num respondeu a dúvida do nosso amigo?? Será q vc num sabia e ficou com inveja??? é... com certeza estou mais certo do que vc, uma vez que o fórum foi feito para tirar dúvidas, e não para ficar recebendo críticas inúteis, já que o que escrevi para o nosso amigo poderia ser resolvido rapidamento com o CodeInseght(Ctrl + Barra de espaço). No seu caso, acho q num ajudou muito não... Agora eu já sei pq vc possui tantas mensagens... só fica botando besteiras..... :P
GOSTEI 0
Aroldo Zanela
17/10/2003
[quote:174d707803=´Undeclared Identifier´]Para de entrar e ficar criticando o código dos outros. Ao invés de postar os meus erros, pq vc num respondeu a dúvida do nosso amigo?? Será q vc num sabia e ficou com inveja??? é... com certeza estou mais certo do que vc, uma vez que o fórum foi feito para tirar dúvidas, e não para ficar recebendo críticas inúteis, já que o que escrevi para o nosso amigo poderia ser resolvido rapidamento com o CodeInseght(Ctrl + Barra de espaço). No seu caso, acho q num ajudou muito não... Agora eu já sei pq vc possui tantas mensagens... só fica botando besteiras..... :P[/quote:174d707803]
Calma Rômulo,
Você é um grande colaborador do fórum e ninguém tem dúvida quanto a isso, bem como, o Marcelo.C também. No que eu percebi na mensagem do Marcelo, ele não teve a intenção de lhe expor, apenas retificou a deixa que você mesmo já havia exposto, nesta expressão:
[quote:174d707803=´Undeclared Identifier´]
// Não testei. tenho dúvidas se o correto é componentcount() ou componentscount();
[/quote:174d707803]
Calma Rômulo,
Você é um grande colaborador do fórum e ninguém tem dúvida quanto a isso, bem como, o Marcelo.C também. No que eu percebi na mensagem do Marcelo, ele não teve a intenção de lhe expor, apenas retificou a deixa que você mesmo já havia exposto, nesta expressão:
[quote:174d707803=´Undeclared Identifier´]
// Não testei. tenho dúvidas se o correto é componentcount() ou componentscount();
[/quote:174d707803]
GOSTEI 0