Fórum Duvida com procedure que testa o form atual... ?????? #239482

24/06/2004

0

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


Pablo_lima

Pablo_lima

Responder

Posts

24/06/2004

Paulo_amorim

Olá

Sua variável NomeForm é String? Se sim, tente assim

TForm( Application.FindComponent(NomeForm) ).Codigo := AutoInc_Controle(Tabela); 


Espero que ajude
Até+


Responder

Gostei + 0

24/06/2004

Pablo_lima

Amigo Paulo.....


A minha variavel é do tipo TForm


Responder

Gostei + 0

24/06/2004

Cabelo

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


Responder

Gostei + 0

24/06/2004

Marcelo Saviski

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

Procedure AutoIncremento; 
Begin 
NomeForm.Tag:= AutoInc_Controle(Tabela); 
End 



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar