Passar Valor Para O Handle De Um Form
Amigos.. nao sei se vou conseguir me espressar..
Seguinte.. tenho uma rotina q recebe o nome do form dinamicamente, a ser carregado, numa variável classe TForm.. e dentro desse form tenho um CREATE, q precisa de 2 parametros... porém na criação do form a variável TForm só aceita um parametro para o create, me disse q pode ser passado o valor pro handle da classe (TForm), mas eu nao tenho nem idéia de como fazer isso..
segue abaixo as rotinas para melhor entendimento..
begin
AForm := TComponentClass(APersistentClass).
Create(Application) as TForm;
AForm := AForm.Create(Dm.SQLConnection1, Self); //´Aki estou com problema´
AForm.Show;
end;
No caso ali tenho q passar os dois parametros.. para o create, mas ele só aceita um... lebrando q AForm é só uma variável classe TForm..
o create q recebe esse vaor é:
Constructor Create(Conexao: TSQLConnection; AOwner: TComponent);Overload;
Lembrando novamente q nao tenho o nome do form, nao tenho como declarar ele pois a rotina é comum pra todos os itens do menu.
entaum fica a questao como passar os dois parametros para a classe TForm q só aceita 1?
Em anexo esta o projeto exemplo, para quem quiser me ajudar e entender melhor.
At.
Magno
Seguinte.. tenho uma rotina q recebe o nome do form dinamicamente, a ser carregado, numa variável classe TForm.. e dentro desse form tenho um CREATE, q precisa de 2 parametros... porém na criação do form a variável TForm só aceita um parametro para o create, me disse q pode ser passado o valor pro handle da classe (TForm), mas eu nao tenho nem idéia de como fazer isso..
segue abaixo as rotinas para melhor entendimento..
begin
AForm := TComponentClass(APersistentClass).
Create(Application) as TForm;
AForm := AForm.Create(Dm.SQLConnection1, Self); //´Aki estou com problema´
AForm.Show;
end;
No caso ali tenho q passar os dois parametros.. para o create, mas ele só aceita um... lebrando q AForm é só uma variável classe TForm..
o create q recebe esse vaor é:
Constructor Create(Conexao: TSQLConnection; AOwner: TComponent);Overload;
Lembrando novamente q nao tenho o nome do form, nao tenho como declarar ele pois a rotina é comum pra todos os itens do menu.
entaum fica a questao como passar os dois parametros para a classe TForm q só aceita 1?
Em anexo esta o projeto exemplo, para quem quiser me ajudar e entender melhor.
At.
Magno
Oespiao
Curtidas 0
Respostas
Rjun
25/08/2005
Para fazer isso você teria q sobrecarregar o método create do Form. Não sei como fazer isso em Delphi.
Você não pode criar uma propriedade para sua Connection e fazer a atribuição depois que você cria o Form?
Você não pode criar uma propriedade para sua Connection e fazer a atribuição depois que você cria o Form?
GOSTEI 0
Oespiao
25/08/2005
Nao sei se daria certo.. pois é carga dinamica de pacotes... ou BPL, o form nao esta na aplicação.. este foi o unico meio q achei pra passar os parametros de conexão..
mas se vc tem outra alternativa .. posso testar
mas se vc tem outra alternativa .. posso testar
GOSTEI 0
Rjun
25/08/2005
Acho que mesmo o form não estando na aplicaçao, você esta criando um objeto. Depois que você cria o objeto você pode acessar suas propriedades, por isso crie uma propriedade no seu form que guarde sua conexão. Depois que você cria o form e só colocar a conexão na sua propriedade.
GOSTEI 0
Oespiao
25/08/2005
Desculpe mas.. num é isso q eu estou fazendo???
tenho a propriedade no form q guarda a conexão, e estou tentando passar o valor pra ela.. porém nao acho como.. pois eu nao posso usar o nome do form...
tenho a propriedade no form q guarda a conexão, e estou tentando passar o valor pra ela.. porém nao acho como.. pois eu nao posso usar o nome do form...
GOSTEI 0
Rjun
25/08/2005
Como assim você não pode usar o nome do Form? Você não tem um objeto que recebe o seu form?
GOSTEI 0
Fabiano Góes
25/08/2005
OEspiao, não sei se entendi bem ,
mais tenta fazer assim:
Cria uma procedure assim:
procedure CriaForm(ClasseDoForm: TFormClass);
var
Form: TForm;
begin
Form := ClasseDoForm.Create(Application.MainForm);
Form.Show;
end;
---------------------------------------------------------------
Usa assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
CriaForm(TForm2); // não se esqueça do ´T´ antes do nome do form
end;
mais tenta fazer assim:
Cria uma procedure assim:
procedure CriaForm(ClasseDoForm: TFormClass);
var
Form: TForm;
begin
Form := ClasseDoForm.Create(Application.MainForm);
Form.Show;
end;
---------------------------------------------------------------
Usa assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
CriaForm(TForm2); // não se esqueça do ´T´ antes do nome do form
end;
GOSTEI 0
Oespiao
25/08/2005
RJun.. nao posso usar.. pois o nome do form é passado em tempo de execução entende...
ai a o que acontece é que essa rotina fica unica pra todos os itens do menu... 1 só rotina pra todos os formulários existentes.
Fabiano.. a questao de apresentar o form nao há problema.. o prob é instancia a conexão..
ai a o que acontece é que essa rotina fica unica pra todos os itens do menu... 1 só rotina pra todos os formulários existentes.
Fabiano.. a questao de apresentar o form nao há problema.. o prob é instancia a conexão..
GOSTEI 0