buenas madrugadas
tengo un problema... no se si a alguien mas le sucede, pero a mi me esta rompiendo la cabeza....
como dice el titulo tengo algunos edits los cuales deben ser validados, entonces yo cree una rutina en la cual se validan los campos..
esta validacion se efectua de 2 formas
la primera de ellas me busca en la tabla por ejemplo Articulo, el codigo ingresado en el edit... si existe entonces el edit toma el valor de una variable publica la cual contiene el campo buscado
mas o menos asi
Código Delphi
[-]
if not VerificarArticulo (_Articulo) then
begin
y VerificaArticulo es mas o menos asi
Código Delphi
[-]
Function VerificarArticulo(_CodigoArt :String) :Boolean;
Var SqlStr : String;
begin
if _CodigoArt <> '' then
Begin
dmComedor.qryBuscarArticulo.SQL.Clear;
SqlStr := 'Select * From tblArticulo Where KOD = ' + QuotedStr(_CodigoArt) + ' Order By KOD';
dmComedor.qryBuscarArticulo.SQL.Add(SqlStr);
dmComedor.qryBuscarArticulo.Open;
result := dmComedor.qryBuscarArticulo.RecordCount = 1;
dmComedor.qryBuscarArticulo.First; dmComedor.vResultArticulo := dmComedor.qryBuscarArticuloKOD.AsString; dmComedor.vResultArticuloDescripcion := Trim (dmComedor.qryBuscarArticuloDESCL.AsString);
dmComedor.qryBuscarArticulo.Close;
End
else
Result := False;
end;
cuando hago esto funciona de las mil maravillas...
pero que pasa si el codigo ingresado no existe... entonces muestro una grilla con la informacion buscada
algo mas o menos asi
Código Delphi
[-]
if not VerificarArticulo (_Articulo) then begin
frmCatalogoArticulo := TfrmCatalogoArticulo.Create(Self);
frmCatalogoArticulo.FormStyle := fsNormal;
frmCatalogoArticulo.Position := poMainFormCenter;
frmCatalogoArticulo.Visible := False;
frmCatalogoArticulo.t_para := True;
frmCatalogoArticulo.ShowModal;
end;
edtArticulo.Text := dmComedor.vResultArticulo;
lblArticulo.Caption := Trim(dmComedor.vResultArticuloDescripcion);
if edtArticulo.Text = '' then
edtArticulo.SetFocus;
en el frmcatalogoArticulo tengo algo como esto
Código Delphi
[-]
procedure TfrmCatalogoArticulo.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #27 then
begin
key := #0;
close;
end;
if key = #13 then
begin
if ActiveControl = dbgArticulo then
begin
if t_para then
Begin
dmComedor.vResultArticulo := qryArticuloKOD.AsString;
dmComedor.vResultArticuloDescripcion := qryArticuloDESCL.AsString;
qryArticulo.Close;
Close;
End
Else
btnModifica.Click;
end
Else
Begin
Perform(WM_NEXTDLGCTL,0,0);
key := #0;
end;
end;
end;
pero resulta que cuando el foco sale del campo validado y "deberia" entrar al siguiente campo (En esta segunda forma de validar), pues el cursor desaparece, tampoco le hace caso al autoselect del siguiente campo yel siguiente campo (que tambien deberia ser validado) ni caso, no pasa por el evento onexit (del siguiente campo al primero validado)
me vuelve loco....
alguien sabe si estoy haciendo algo mal?, no es la forma correcta de validar?... como comentario adicional, menciono que esa formulario con la grilla que muestro en el segundo caso.. me sirve tambien como un "catalogo" o un "mantenimiento" de articulos donde puedo dar altas, modificar y hasta eliminar articulos
espero me haya echo comprender.....
esperando su pronta ayuda.....