Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mandar llamar Manualmente Evento (https://www.clubdelphi.com/foros/showthread.php?t=14244)

AGAG4 14-09-2004 17:10:43

Mandar llamar Manualmente Evento
 
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

oki
 
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:
Código:

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

oki
 
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

Cita:

Empezado por AGAG4
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

oki
 
Quiero disparar el evento OnKeyDown al momento de presionar el TAB dentro del procedimiento que le mencione arriba.


La franja horaria es GMT +2. Ahora son las 05:34:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi