PDA

Ver la Versión Completa : Mejor manera de validar un EDIT


oscarac
25-05-2011, 08:46:27
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

if not VerificarArticulo (_Articulo) then
begin

y VerificaArticulo es mas o menos asi


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; // por si las moscas
dmComedor.vResultArticulo := dmComedor.qryBuscarArticuloKOD.AsString; // variables publicas
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


if not VerificarArticulo (_Articulo) then // Si el codigo no esta o esta mal ingresado
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


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.....

oscarac
25-05-2011, 16:30:37
voy aprobar quitandole el modal

oscarac
25-05-2011, 18:08:28
mmm no tampoco me funciona.....

oscarac
25-05-2011, 20:00:46
Solucionado...

gracias opr la atencion :rolleyes: