Para os Experts!! Controlar Keypreview em um Componente

16/12/2003

1

Estou fazendo um componente do tipo memo, onde eu gostaria que toda vez que o componente fosse ´Focalizado´ eu passaria a propriedade Keypreview do form para false. Alguém tem alguma idéia de como faço isso??!!


Responder

Posts

16/12/2003

Nildo

Coloca isso aqui no Private do seu componente:

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 +


Responder

16/12/2003

Kenji_rh

Eu declarei a uses FORMS e deu OK, mas estava testando e quando eu focava o Memo, o comando TForm(parent).keypreview:=false não era aceito, explico:
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!!!


Responder

16/12/2003

Nildo

Fico feliz em saber que você soube fazer sozinho!
É 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


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira