ActiveControl = nil

Delphi

25/02/2005

Olá,

O meu problema é o seguinte:
Tenho 2 forms, um Pai e outro filho. Quando tento usar a propriedade ActiveControl no form filho, a mesma vem nil. Acredito que isso seja aconteça devido ao form pai estar aberto, mas não tenho certeza. A questão é preciso usar o ActiveControl para saber o Parent dele.

Gostaria de saber se estou certo e se alguém teria alguma dica ou sugestão.

Agradeço desde já!!!! :D


Roswel

Roswel

Curtidas 0

Respostas

Delphi32

Delphi32

25/02/2005

Olha, eu nunca trabalhei com forms pai e filho, mas até onde eu sei a propriedade ActiveControl retorna qual controle possui o foco no form. Através dessa propriedade você tem como saber se o controle que tem o foco é um edit, ou um botão, etc.
Para saber quem é o form pai do seu form use a propriedade Parent do form filho. Ex.:

   FormFilho.Parent.Caption := variavel;


Até!


GOSTEI 0
Roswel

Roswel

25/02/2005

Certo, mas o ActiveControl esta vindo nil e ai não dá pau se for usá-lo ...


GOSTEI 0
Roswel

Roswel

25/02/2005

Quer dizer: Dá pau quando vou usá-lo ...


GOSTEI 0
Massuda

Massuda

25/02/2005

Como o colega delphi32 escreveu, a propriedade ActiveControl é usada para saber qual controle tem o foco de entrada e é válido ter ActiveControl = nil, pois o form pode estar desativado.

Acho que tem duas alternativas... você inclui no seu código o caso do ActiveControl ser nil (o form está desativado) ou você poderia explicar melhor o que deseja fazer para vermos se existe alguma alternativa.


GOSTEI 0
Delphi32

Delphi32

25/02/2005

entendi. Então o seu problema não é acessar o form pai e sim acessar o controle ativo, certo? é isso mesmo? mas você quer acessar o controle ativo de quem? form pai ou filho? qual dos dois está retornando nil e como você está chamando a propriedade?

Não esqueça que existem duas propriedades ActiveControl. Uma do TCustomForm e outra do TScreen. Por isso perguntei como você está chamando a propriedade. O mais correto (acredito eu) seja chamar com o nome do form antes. Por exemplo Form.ActiveControl. Porque se você estiver chamando Screen.ActiveControl aí ele retorna o controle ativo do form ativo que no caso acredito eu que seria o form filho.

Faça um teste aqui e depois diga se funcionou ou não. Até!


GOSTEI 0
Roswel

Roswel

25/02/2005

Olá,

Testei usando o Screen.activecontrol e deu certo!!!! Ele pegou o ActiveControl do Form Filho, do jeito que eu queria!!!!!!!!!

Muito Obrigado à todos que postaram :D


GOSTEI 0
POSTAR