oscarac
02-03-2019, 04:39:53
buenas noches
tengo un edit que valida ciertos datos cuando se presiona ENTER
entonces en el procedimiento OnkeyDown hago una serie de validaciones
procedure TfrmValesdeConsumo.edtTrabajadorKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
Var _Trabajador :String;
begin
_pasar := '1';
if (Key = 13) or (key = VK_TAB) then
Begin
_Trabajador := edtTrabajador.Text;
if not VerificarTrabajador (_Trabajador) then
begin
frmCatalogoTrabajador := TfrmCatalogoTrabajador.Create(nil);
frmCatalogoTrabajador.FormStyle := fsNormal;
frmCatalogoTrabajador.Position := poMainFormCenter;
frmCatalogoTrabajador.Visible := False;
frmCatalogoTrabajador.t_para := True;
frmCatalogoTrabajador.ShowModal;
frmCatalogoTrabajador.Free;
end;
edtTrabajador.Text := dmComedor.vResultTrabajador;
_TipoTrabajador := dmComedor.vResultTrabajadorTipo;
lblTrabajador.Caption := Trim(dmComedor.vResultTrabajadorDescripcion);
if dmComedor.g_ESTADOTrabajador = 'A' Then
Begin
edtTrabajador.Text := '';
MessageDlg('Cliente Anulado', mtError, [mbAbort], 0);
end;
if dmComedor.g_StatusTrabajador = 'X' Then
Begin
edtTrabajador.Text := '';
MessageDlg('Cliente no puede consumir', mtError, [mbAbort], 0);
end;
if edtTrabajador.Text = '' then
edtTrabajador.SetFocus;
tblTrabajador.Locate('KOD', dmComedor.vResultTrabajador, []);
_NORetail := False;
_SubvTotal := False;
_SoloComedor := False;
_SubvTotal := iif (dmComedor.vResultTrabajadorSubvencion = '1', True, False);
if tblTrabajadorFechaCese.Value <> 0 Then
_SoloComedor := iif (tblTrabajadorFechaCese.Value <= Trunc(dmComedor.g_FECHA), True, False);
_NORetail := iif (tblTrabajadorFT.AsString = 'x', True, False);
if _SoloComedor Then // Preguntar por la fecha
Begin
edtTrabajador.Text := '';
MessageDlg('No puede consumir', mtError, [mbAbort], 0);
End;
end;
end;
la pregunta es....
como puedo ejecutar este procedimiento sin necesidad de presionar enter
por ejemplo
cuando quiero presionar un click en un botton seria algo asi
btnOpcion.Click;
con el OnkeyDown como seria?
se entiende?
tengo un edit que valida ciertos datos cuando se presiona ENTER
entonces en el procedimiento OnkeyDown hago una serie de validaciones
procedure TfrmValesdeConsumo.edtTrabajadorKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
Var _Trabajador :String;
begin
_pasar := '1';
if (Key = 13) or (key = VK_TAB) then
Begin
_Trabajador := edtTrabajador.Text;
if not VerificarTrabajador (_Trabajador) then
begin
frmCatalogoTrabajador := TfrmCatalogoTrabajador.Create(nil);
frmCatalogoTrabajador.FormStyle := fsNormal;
frmCatalogoTrabajador.Position := poMainFormCenter;
frmCatalogoTrabajador.Visible := False;
frmCatalogoTrabajador.t_para := True;
frmCatalogoTrabajador.ShowModal;
frmCatalogoTrabajador.Free;
end;
edtTrabajador.Text := dmComedor.vResultTrabajador;
_TipoTrabajador := dmComedor.vResultTrabajadorTipo;
lblTrabajador.Caption := Trim(dmComedor.vResultTrabajadorDescripcion);
if dmComedor.g_ESTADOTrabajador = 'A' Then
Begin
edtTrabajador.Text := '';
MessageDlg('Cliente Anulado', mtError, [mbAbort], 0);
end;
if dmComedor.g_StatusTrabajador = 'X' Then
Begin
edtTrabajador.Text := '';
MessageDlg('Cliente no puede consumir', mtError, [mbAbort], 0);
end;
if edtTrabajador.Text = '' then
edtTrabajador.SetFocus;
tblTrabajador.Locate('KOD', dmComedor.vResultTrabajador, []);
_NORetail := False;
_SubvTotal := False;
_SoloComedor := False;
_SubvTotal := iif (dmComedor.vResultTrabajadorSubvencion = '1', True, False);
if tblTrabajadorFechaCese.Value <> 0 Then
_SoloComedor := iif (tblTrabajadorFechaCese.Value <= Trunc(dmComedor.g_FECHA), True, False);
_NORetail := iif (tblTrabajadorFT.AsString = 'x', True, False);
if _SoloComedor Then // Preguntar por la fecha
Begin
edtTrabajador.Text := '';
MessageDlg('No puede consumir', mtError, [mbAbort], 0);
End;
end;
end;
la pregunta es....
como puedo ejecutar este procedimiento sin necesidad de presionar enter
por ejemplo
cuando quiero presionar un click en un botton seria algo asi
btnOpcion.Click;
con el OnkeyDown como seria?
se entiende?