Fórum Duvida com procedure que testa o form atual... ?????? #239482
24/06/2004
0
Acho que talvez alguém possa me ajudar com esta duvida....
vejam.....
Tenho uma procedure que faz um incremento numa variavel de controle, mas esta variavel é individual em cada form especifico.
E tenho uma variavel de controle que guarda o nome do form atual
Então a procedure é assim....
Procedure AutoIncremento;
Begin
If NomeForm=F_CadEntidades then
F_CadEntidades.Codigo := AutoInc_Controle(Tabela);
If NomeForm=F_CadTiposEnder then
F_CadTiposEnder.Codigo := AutoInc_Controle(Tabela);
//Etc. E assim sucessivamente.. na sequencia eu tenho if´s que testam todos os forms de cadastro do projeto. São uns 30 forms....
End;
Já que tenho a variavel NomeForm(Tform) que guarda o nome do form atual(Ela é atribuida no show do form)
Quando tento nesta mesma procedure fazer o seguinte....
Ao invés de :
If NomeForm=F_CadTiposEnder then
F_CadTiposEnder.Codigo := AutoInc_Controle(Tabela);
Tento fazer:
If NomeForm=F_CadTiposEnder then
NomeForm.Codigo := AutoInc_Controle(Tabela);
Dá um erro dizendo que a variavel Codigo não existe,
Gostaria que o sistema entendesse que citando a Variavel.Codigo sendo que a Variavel contem o nome do form, é o mesmo que F_CadTiposEnder.Codigo
Se eu conseguisse resolver isso, ao inves de eu ficar fazendo if´s com o nome de todos os forms de cadastro do projeto, eu teria apenas o seguinte codigo na procedure:
Procedure AutoIncremento;
Begin
NomeForm.Codigo := AutoInc_Controle(Tabela);
End
Mas Desta forma dá erro dizendo que a variavel codigo não existe. O sistema não entende que a variavel NomeForm e F_CadTiposEnder são a mesma coisa.
Se puderem me ajudar ficarei muito grato.
Um grande abraço a todos.
Pablo - Marília
Pablo_lima
Curtir tópico
+ 0Posts
24/06/2004
Paulo_amorim
Sua variável NomeForm é String? Se sim, tente assim
TForm( Application.FindComponent(NomeForm) ).Codigo := AutoInc_Controle(Tabela);
Espero que ajude
Até+
Gostei + 0
24/06/2004
Pablo_lima
A minha variavel é do tipo TForm
Gostei + 0
24/06/2004
Cabelo
espero ter ajudado..
sem mais
Cabelo
Gostei + 0
24/06/2004
Marcelo Saviski
O erro ocorre porque a variável Codigo esta declarada dentro da classe especifica do seu form, O Delphi não encontra ela dentro de TForm, uma solução seria que todos os formulários herdassem de um outro, que implementasse a variavel Codigo, e a variavel que armazena o form atual fosse desse tipo
outra coisa, vc tambem pode usar [color=green:a6b22575f1]Screen.ActiveForm[/color:a6b22575f1] para saber qual o Form Ativo
a solução mais simples agora, já que você tem vários forms prontos, é não usar a variavel Codigo que você criou, e sim a propriedade Tag do form, se AutoInc_Controle retornar um Integer
Procedure AutoIncremento; Begin NomeForm.Tag:= AutoInc_Controle(Tabela); End
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)