bueno encontre una solucion, tal ves no sea la mas adecuada, pero bueno...
como se desmadraba cuando el dataset encontraba un espacio en blanco o sin un valor asignado... entonces tuve que recurrir a la implementacion del siguiente metodo... lo pongo para retroalimentar la pagina con una solucion final....
Código Delphi
[-]
procedure TForm1.Refill(Data : TDataSet);
var
i : integer;
archivo : TStringList;
s:String;
begin
while not(Data.eof) do
begin
s:='';
for i := 0 to dbgrid1.Columns.Count-1 do
begin
s:= Data.FieldByName(DBGrid1.Columns[i].FieldName).asString ;
if (s='')or (s=' ') then
begin
s:='$$';
end;
Data.Edit;
Data.FieldByName(DBGrid1.Columns[i].FieldName).asString := s;
end;
data.Next;
end;
showmessage('esta porqueria no sirve, debe tener un valor asignado si viene en blanco se desmadra');
end;
Esto para la primera solucion que empezamos a construir, gracias a los comentarios de uds, aqui en el foro... pero que habia desechado por el problema del field required... cuando habia un espacio vacio en la tabla de la base de datos o consulta sql...
(por cierto si alguien averigua por que de ese error, les agradesco, al menos para proyectos a futuro)
en cuanto al evento ongettext()... es una idea bastante convincente... pero cada vez que se mueve la ventana, se da clic en el DBgrid, o cualquier cosita minima... el evento se dispara, por lo que al menos para este caso no es muy recomendable, ademas del problema que me tope, de que el evento modifica todas las columnas a las que se lo asignaba, de manera integral, pues las variables que se leenvian de parametros ya estan definidas... y si se maneja con gobales, se hace un arroz con leche para poder manejar con diferentes eventos cada columna, sobre todo cuando siempre son N columnas...
muchas gracias a todos, por sus aportes,
___________________________________________________________
hoy aprendi algo, que ayer no sabia...