Ver Mensaje Individual
  #7  
Antiguo 11-09-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Reputación: 22
Julià T. Va por buen camino
Una solución mixta puede ser llenar una lista de componentes asociados a los campos del dataset

Código:
//Definimos las variables y las funciones
 private
   Lista:TstringList;
   procedure CanvioFoco(NombreCampo:string);

//llenamos la lista con los objetos y los nombre del campo
//si hay diferentes dataset con nombres de campo igual se deberá cambiar un poco el código
procedure TForm1.FormCreate(Sender: TObject);
Var
 i:integer;
begin
 Lista:=TstringList.Create;
 For i:=0 to ComponentCount-1 do
  if Components[i] is TDbEdit then
   Lista.AddObject(TDbEdit(Components[i]).DataField,Components[i]);
end;

//en el código original añadimos tan solo una línea
for datos := 0 to tabla.FieldCount-1 do
  if (tabla.Fields[datos].Required) and (tabla.Fields datos].Text  '')   then begin
   showmessage('Debe introducir un valor en '+ tabla.Fields   datos].DisplayName);
//cambiamos el foco
   TDbEdit(Lista.Objects[Lista.IndexOf(tabla.Fields[datos].FieldName)]).setfocus;
exit;
 end;

//liberamos la lista al cerrar
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Lista.Free;
end;
si el código no es correcto ahora me tocará aprender a escribir
Responder Con Cita