Duvida com procedure que testa o form atual... ??????
Boa Tarde amigos...
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
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
Curtidas 0
Respostas
Paulo_amorim
24/06/2004
Olá
Sua variável NomeForm é String? Se sim, tente assim
Espero que ajude
Até+
Sua variável NomeForm é String? Se sim, tente assim
TForm( Application.FindComponent(NomeForm) ).Codigo := AutoInc_Controle(Tabela);
Espero que ajude
Até+
GOSTEI 0
Pablo_lima
24/06/2004
Amigo Paulo.....
A minha variavel é do tipo TForm
A minha variavel é do tipo TForm
GOSTEI 0
Cabelo
24/06/2004
para isso vc poderis usar um vetor do tipo record, e ao ivé de usar os if´s vc usaria um for, e armazenaria 2 variáveis, o nome do form e código de controle, assim vc teria um vetor como se fosse linhas de registro de um banco, e vc usaria o index do for para ponterar os controles..
espero ter ajudado..
sem mais
Cabelo
espero ter ajudado..
sem mais
Cabelo
GOSTEI 0
Marcelo Saviski
24/06/2004
use a propriedade Tag do Form ao invéz do seu código,
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
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