Para os Experts!! Controlar Keypreview em um Componente
16/12/2003
0
Kenji_rh
Posts
16/12/2003
Nildo
procedure hookFocusChanged (var Message: TMessage); Message cm_focuschanged;
E a seguitne procedure:
procedure TSeuComponente.hookFocusChanged(var Message: TMessage); begin inherited; TForm( Parent ).KeyPreview := False; end;
Espero que tenha ajudado.
Abraços e ateh +
16/12/2003
Kenji_rh
fazendo o passo a passo, o valor do TForm(parent) ficava como False, mas no form propriamente dito a propriedade não mudava para false.
Aí, testando alguns outras formas, com influência da sua dica fiz o seguinte:
--------------------------------------------------------------------------------------
DECLAREI NO PRIVATE:
Procedure hookEnter(var message: TCMENTER); Message cm_Enter;
Procedure hookExit(var message: TCMEXIT); Message cm_Exit;
AS PROCEDURES:
procedure TMemoX.hookEnter(var Message: Tcmenter);
var Form:TCustomForm;
begin
inherited;
Form:=GetParentForm(Parent);
Form.KeyPreview := false;
end;
procedure TScMemo.hookExit(var Message: Tcmexit);
var Form:TCustomForm;
begin
inherited;
Form:=GetParentForm(Parent);
Form.KeyPreview := true;
end;
--------------------------------------------------------------------------------------
Aí deu certo!!! :D
Valeu, sem a sua ajuda, não conseguiria, pois eu não tinha um norteamento para seguir!!!
16/12/2003
Nildo
É que da minha maneira eu nao verificava se Recebeu ou se Retirou o focus. Para saber disso, era só colocar um
If Self.Focused then
// Entrou
else
// Saiu do controle
Clique aqui para fazer login e interagir na Comunidade :)