Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brunoguitarman

Como descobrir em qual form outro form foi chamado?

Recommended Posts

Galera, num programa aqui, dois forms usam a mesma função de uma biblioteca criada pelos desenvolvedores do programa. Teria como eu saber por qual desses forms a função foi chamada, sem que eu altere os parâmetros da função? Por exemplo: até certo ponto da função ela faz a mesma coisa pros dois forms, mas depois de certo ponto faz algo tipo Se chamado pelo form1 faz X, Se chamado pelo form2 faz Y?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, a chamada ocorre assim:if (Util.MontaDenominacaoMob(cmbxDenominacao)) = 0 then;e essa função é assim:function TUtil.MontaDenominacaoMob(var cmbxDenominacao : TComboBox) : integer;aí dentro dela tem um monte de sql e mais algumas coisinhas ali.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fazer como o Hugo falou, caso não consiga pegar o Form no primeiro Get, precisa ir pegando a classe encontrada e dar GetParentComponent até achar, pois pode estar dentro de um Painel ou Scroll

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código melhorado...

 

 

da uma olhada aew fera... e veja se lhe serve...

 

procedure TForm1.BitBtn1Click(Sender: TObject);var componente : TComponent;begin//Cria um componente  componente := TComponent.Create(Self);//Recebe o componente Pai da combobox1  componente := ComboBox1.GetParentComponent;//enquanto o componente pai não pertencer a classe TForm (não for um form)  while componente.ClassParent.ClassName <> 'TForm' do  Begin//Recebe o componente Pai do componente	componente := componente.GetParentComponent;  end;//Mostra o nome do form em que está a combobox...  Showmessage(componente.Name);end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu vou compilar aponta a linha "var componente : TComponent;" e dá a mensagem Undeclared identifier: 'TComponent'.

Segue o código melhorado...da uma olhada aew fera... e veja se lhe serve...

procedure TForm1.BitBtn1Click(Sender: TObject);var componente : TComponent;begin//Cria um componente  componente := TComponent.Create(Self);//Recebe o componente Pai da combobox1  componente := ComboBox1.GetParentComponent;//enquanto o componente pai não pertencer a classe TForm (não for um form)  while componente.ClassParent.ClassName <> 'TForm' do  Begin//Recebe o componente Pai do componente	componente := componente.GetParentComponent;  end;//Mostra o nome do form em que está a combobox...  Showmessage(componente.Name);end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se no uses esta declarado Classes.

você esta colocando dentro de uma Unit, ou dentro de um formulários com fontes ?

Unit.

 

O negócio é o seguinte:

 

Eu entro num Form através de um menu. Nesse form tem a combobox que carrega itens por um código SQL que está dentro da unit. Esse carregamento ocorre quando, dentro do código do Form, aparece o código Util.MontaDenominacaoMob(cmbxDenominacao) que chama esse método da Unit e foi nesse método que coloquei o código do Hugo, pois dois Forms fazem a mesma coisa, mas eu quero mudar uma coisa e quero que isso ocorra só em um dos Forms.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.