Bueno ,viendo el problema de
Wbarrantes veo que la cosa se ha complicado demasiado de lo que parece.
Si lo que se desea es encriptar el contenido de una columna en un DBGrid, pues yo veo
dos alternativas:
1ra.- Hacerlo directamente en el SERVER
Tener una funcion o hacer uso de una funcion encriptadora directamente en la consulta SQL en el server es decir mi consulta SQL podría ser así:
Código SQL
[-]Select Nombre,Apellido1,Apellido2,Encryptar(CampoX) from MiTabla;
Con eso me evito la tarea de hacerlo desde Delphi.
2da.- Haciendolo desde Delphi
Desde Delphi lo que se podría hacer es utilizar el evento
OnGetText que todo
Campo Persistente tiene y poner un código sencillo como éste:
Código Delphi
[-]procedure TForm1.ZTable1CampoXGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text:=Encryptar(Text);
end;
Desde luego para hacer uso del evento
OnGetText lo primero que tendriamos que hacer es
agregar nuestro campo en cuestion(CampoX) como
campo persistente en el Dataset(Query o Table) que trae los datos de la base de dato.
.
Ésta solucion evitará estar modificando los datos en la base de datos, ya que como te han mencionado anteriormente si pones al Dataset en estado de Edicion (Data.Edit; ) se corre el riesgo de modificar los datos en la base de dato, y lo que yo veo es que solo se necesita mostrar los datos encriptado , pero que en la base de datos queden intactos , es decir que no se modifiquen.
.
Espero que te sea de ayuda.
Saludos...