PDA

Ver la Versión Completa : Mandar llamar Manualmente Evento


AGAG4
14-09-2004, 17:10:43
Como mandar a llamar "Manualmente" el evento OnKeyDown, ya se que es una pregunta sencilla pero no le encuentro :(

delphi.com.ar
14-09-2004, 17:16:57
¿De que componente se trata? ¿Lo tienes "pegado" en un formulario y el evento tiene código? de ser así, lo puedes llamar como a cualquier método

Saludos!

AGAG4
14-09-2004, 18:09:12
Estoy haciendo pruebas de como detectar el TAB dependiendo de que componente tenga el control en ese momento, ahora todo bien, pero, necesito llamar un evento por ejemplo del OnKeyDown, porque aqui hago las validaciones de todos los componentes(Edit's, bdEdit's, MaskEdit's, dbGrid) que tengo en un formulario para cachar el TAB y hacer que sea un ENTER, hago esto, porque estoy llamando MANUALMENTE el OnExit en el OnKeyDown de cada componente, tengo el siguiente código que hace esto:

Private
procedure TfFacturas.CMDialogKey(var Message: TCMDialogKey);

Implementation
procedure TfFacturas.CMDialogKey(var Message: TCMDialogKey);
begin
// Comprobar estado
if GetKeyState(VK_MENU) >= 0 then begin
with Message do begin
// Segun la tecla
case CharCode of
VK_TAB:begin
if ActiveControl.Name='edSerie' then begin
if length(edSerie.text)=2 then
edSerieExit(sender)
else edSerie.SetFocus;
end else
if ActiveControl.Name='edFolio' then begin
edFolioExit(sender)
end else
if ActiveControl.Name='edNumCli' then begin
if length(edNumCli.text)>0 then
edNumCliExit(sender)
else edNumCli.SetFocus;
end else
if ActiveControl.Name='maFecEmision' then begin
bdTipoPago.SetFocus;
end else
if ActiveControl.Name='maFecVenci' then begin
bdOrdenCompra.SetFocus;
end else
if ActiveControl.Name='bdOrdenCompra' then
bdIvA.SetFocus
else
if ActiveControl.Name='edVendedor' then
if edVendedor.text<>'' then begin
edVendedorExit(Sender);
gridFac.SetFocus;
end else
edVendedor.SetFocus;
end; //end..VK_TAB
end; // end..case
end; // end..with
end; // end..if
// Método padre para que salte al siguiente control,...
inherited;
end;

Este procedimiento que es para cachar el TAB, por lo que NO puedo llamar al EVENTO ONKEYDOWN para evitarme de Escribir las validaciones que tengo.
Que puedo hacer???? de antemano Gracias.

delphi.com.ar
14-09-2004, 19:59:55
Podrías hacerlo desde el formulario, utilizando la propiedad KeyPreview en true, para que el TForm reciba el evento antes que los controles, entonces podrías programar solo el evento de tu formulario.

Saludos!

AGAG4
14-09-2004, 20:28:29
Ya lo tengo asi, tengo la propiedad KeyPreview=true, y lo mando a llamar desde el formulario, dentro del mismo procedimiento que le mencione arriba, pero no me funciona.

delphi.com.ar
14-09-2004, 21:10:13
Ya lo tengo asi, tengo la propiedad KeyPreview=true, y lo mando a llamar desde el formulario, dentro del mismo procedimiento que le mencione arriba, pero no me funciona.
¿Queres disparar o capturar el evento?

AGAG4
14-09-2004, 21:43:15
Quiero disparar el evento OnKeyDown al momento de presionar el TAB dentro del procedimiento que le mencione arriba.