formulario invocador

Delphi

12/02/2004

tenho um formulario padrao de pesquisa de registros em banco de dados que é chamado por outros formularios do meu sistema. meu problema é o seguinte: preciso saber qual formulario esta invocando o formulario de pesquisa, sem ter que definir no codigo cada formulario.

flaviosan


Flaviosan

Flaviosan

Curtidas 0

Respostas

Falinden

Falinden

12/02/2004

Flaviosan,

Coloque o código no OnCreate de cada form e acesse a variável

[color=red:9a19e2a9f0]var
Formulario_Ativo :string; // variável global

procedure Tform.FormCreate(Sender: TObject);
begin
Formulario_Ativo := TForm(Sender).Name;
end;[/color:9a19e2a9f0]


Espero ter ajudado,


GOSTEI 0
Vinicius2k

Vinicius2k

12/02/2004

Colega,
:idea:
crie uma variável MeChamou : String, para cada form q eh chamado...
antes de chamar vc faz : formY.QuemMeChamou:= formX.name...

Espero ter ajudado...


GOSTEI 0
Flaviosan

Flaviosan

12/02/2004

Flaviosan, Coloque o código no OnCreate de cada form e acesse a variável [color=red:c4cd8520ea]var Formulario_Ativo :string; // variável global procedure Tform.FormCreate(Sender: TObject); begin Formulario_Ativo := TForm(Sender).Name; end;[/color:c4cd8520ea] Espero ter ajudado,


deixa eu ver se entendi: coloco a variavel formulario_ativo no formulario que é invocado, no evento oncreate, certo? e depois no mesmo evento faço a variavel receber o nome do formulario invocador usando TForm(Sender).Name? Não entendi como funciona este ´sender´

desculpe a minha ignorancia :P

flaviosan


GOSTEI 0
Vinicius2k

Vinicius2k

12/02/2004

deixa eu ver se entendi: coloco a variavel formulario_ativo no formulario que é invocado, no evento oncreate, certo? e depois no mesmo evento faço a variavel receber o nome do formulario invocador usando TForm(Sender).Name? Não entendi como funciona este ´sender´ desculpe a minha ignorancia :P flaviosan


Colega, na rotina q falinden de passou, a variável formulário_ativo deve ser declarada de forma global, no form principal da aplicação... desta forma ele pode ser acessada por qualquer outro form desde q o form principal esteja na lista de uses deste form q foi chamado...
neste código,
Formulario_Ativo := TForm(Sender).Name; 

cada vez que um novo form é criado a variável muda de valor recebendo o nome do formulário atual... isso lhe indica qual é o form atual, entende ?
o código está escrito bem formalmente... vc poderia usar simplesmente Formulario_ativo:= Name; resumidamente o Sender significa o próprio Form...

:!:

Só tem um porém : pelo q eu entendi vc não quer saber quem está ativo e sim quem chamou então, acho q a minha resposta seria a mais apropriada para o seu caso... para usar seria dessa forma :

Todos seus forms teriam declaradas uma variável ´Chamador´ do tipo String; (declare na seção ´var´ da unit de cada form)
var
....     
Chamador: String;
.... 


e este é o único código de vc precisa colocar... em qualquer uma das procedures ou funções que vc precisar saber qual form que chamou o form atual é só vc ler a variável Chamador...

No Form que chama os outros antes do show/showmodal vc entra com:
FormY.Chamador:= Name;

antes de ser exibido a variável ´Chamador´ do FormY estará recebendo o nome do FormX que é quem o está chamando... dessa forma mesmo que vc faça uma cascata de 3 ou mais forms vc saberá sempre quem chamou quem bastando q para isso passe o valor para variável antes do show...


GOSTEI 0
Roberson

Roberson

12/02/2004

Utilize a variavel do delphi Screem.

Screem.Forms[0].asname - eh o nome do seu formulario ativo.

Screem.Forms[1].asname - eh o nome do formulario que o chamou.

espero ter ajudado..


GOSTEI 0
POSTAR