[Lazarus-es] ruidito

José Mejuto joshyfun en gmail.com
Mar Jul 13 17:00:51 CEST 2010


Hello Paola,

Saturday, July 10, 2010, 11:50:43 PM, you wrote:

>> Hmmmm... eso si que no tengo ni idea... probaré.
PB> has podido probar esto? si en el tdbedit presiono enter si se dispara el
PB> evento, pero cuando presiono ESC no.

Lo que sucede es que TDBEdit tiene un control "especial" de la tecla
"ESC" para cancelar operaciones sobre el dataset. Este control
especial lo hace en el KeyDown, de modo que si pulsas "ESC" hace sus
cosas y cambia la tecla "ESC" por "VK_INVALIDKEY" para que no se siga
procesando. Por lo tanto para que tu sistema funcione tendrás que usar
el OnKeyDown en vez de OnKeyPress. He probado este código y funciona:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
     if (Key =  13) and (Shift = 0) and not(ActiveControl is TCustomButton) then
        begin
            SelectNext(ActiveControl, True, True);
            Key := 0; // VK_INVALIDKEY
        end;
     if (Key =  27) then // VK_ESC ???
        begin
          Key := 0; // VK_INVALIDKEY
          Close;
        end;
end;


-- 
Best regards,
 José





More information about the Lazarus-es mailing list