Detectar mudança do controle atual
Preciso fazer o programa exibir na barra de status, um texto de ajuda referente ao controle com o foco.
Estava para isso, usando o hint, porém o texto aparece apenas caso o cursor do mouse esteja sobre o controle, nao necessariamente, o controle atual, com o foco, caso o usuário percorra os campos do form com a tecla TAB, essa técnica já não funciona.
Verificar o pressionamento da tecla TAB, também não funciona, visto que o usuário pode clicar em outro controle, e dessa forma, o evento não seria chamado.
No form, não existe nenhum evento que trate isso, será que alguem sabe uma forma ´elegante´ de se fazer isso, sem ter que definir este texto nos eventos OnEnter e OnExit de cada controle? Principalmente pq vários controles já têm seus eventos OnEnter e OnExit definidos para outras tarefas....
Talvez exista alguma mensagem do windows que seja enviada à cada mudança de controle... Alguem conhece?
Obrigado.
Estava para isso, usando o hint, porém o texto aparece apenas caso o cursor do mouse esteja sobre o controle, nao necessariamente, o controle atual, com o foco, caso o usuário percorra os campos do form com a tecla TAB, essa técnica já não funciona.
Verificar o pressionamento da tecla TAB, também não funciona, visto que o usuário pode clicar em outro controle, e dessa forma, o evento não seria chamado.
No form, não existe nenhum evento que trate isso, será que alguem sabe uma forma ´elegante´ de se fazer isso, sem ter que definir este texto nos eventos OnEnter e OnExit de cada controle? Principalmente pq vários controles já têm seus eventos OnEnter e OnExit definidos para outras tarefas....
Talvez exista alguma mensagem do windows que seja enviada à cada mudança de controle... Alguem conhece?
Obrigado.
Thiago Vidal
Curtidas 0
Respostas
Massuda
11/04/2005
Talvez funcione igual ao caso do hint, mas o objeto global [b:839cd9a9fb]Screen[/b:839cd9a9fb] possui um evento chamado [b:839cd9a9fb]OnActiveControlChange[/b:839cd9a9fb] que talvez sirva para sua necessidade.
GOSTEI 0
Beppe
11/04/2005
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure ScreenOnActiveControlChange(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ScreenOnActiveControlChange(Sender: TObject);
begin
// trate aqui
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := ScreenOnActiveControlChange;
end;GOSTEI 0
Thiago Vidal
11/04/2005
Muito Obrigado, era exatamente o que eu estava precisando!!!
GOSTEI 0