KeyDown não funciona em alguns controles...

25/11/2020

0

tenho, uma dbGrid no meu form e quando eu aperto a tecla Down ele vai direto para o FormKeyDown, la eu tenho o seguinte código:
 if (key = VK_DOWN) and not (Pos(Copy(TControl(ActiveControl).Name,1,3),'mem.cbb.dbg') > 0) then
    selectNext(ActiveControl,True,True);


Quando eu tento navegar na dbGrid e passa por esse código da erro de violação de acesso por que o ActiveControl deveria ser o dbGrid e está vindo NIL.
vou deixar ai o código.

procedure TfrmTelaPrincipal.btnTelaPrincipal_ProcessosClick(Sender: TObject);
begin
  if frmManutencaoProcessos = Nil then
  begin
    frmManutencaoProcessos        := TfrmManutencaoProcessos.Create(self);
    frmManutencaoProcessos.Parent := frmTelaPrincipal;
  end;

  vOpcaoMenu := 'PROCESSOS';
  frmManutencaoProcessos.Show;
end;

procedure TfrmManutencaoProcessos.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (key = VK_RETURN) and not (Copy(TControl(ActiveControl).Name,1,3) = 'dbm') then
    selectNext(ActiveControl,True,True);

  if (key = VK_DOWN) and not (Pos(Copy(TControl(Sender).Name,1,3),'mem.cbb.dbg') > 0) then    <== Aqui da o erro
    selectNext(ActiveControl,True,True);

  if (key = VK_UP) and not (Copy(TControl(ActiveControl).Name,1,3) = 'cbb.') then
    selectNext(ActiveControl,False,True);

  if (key = VK_ESCAPE) and (pnStatusManutencao.Caption='Consultando') then
    btnTelaInicialClick(Sender);

  if (key = VK_ESCAPE) and (Pos(pnStatusManutencao.Caption,'Incluindo.Alterando') > 0) then
    btnCancelarClick(Sender);
end;
Eduardo Silva

Eduardo Silva

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar