Muchisimas gracias Julia es una solución muy buena pero al final he octado por la opción de de Ruben, es casi la misma que la tuya pero a diferencia no hace falta crear esa lista para introducir los dbedits que encuentra sino que directamente hace referencia a ellos, al final el código ha quedado así:
Código:
procedure TForm1.aceptar;
var
componente: integer;
Data:Tdataset;
begin
Data := nil;
for componente := 0 to ComponentCount - 1 do begin
if Components[componente] is TDBedit then begin
Data := (Components[componente] as TDBedit).DataSource.DataSet;
if ( Data.Fields[componente].Required) and (Data.Fields[componente].Text = '') then begin
showmessage('Debe introducir un valor en el campo '+ Data.Fields[componente].DisplayName);
(Components[componente] as TDBedit).setfocus;
Exit;
end;
end;
end;
Data.post;
Data.Free;
end;
Una última pregunta, es necesario hacer el free de la variable creada del tipo Dataset?
De nuevo gracias a los dos que habeis dado vuestras soluciones a este problemilla que había planteado, saludos.