dbgrid здесь ни при чем. В dbgrid нет прямого доступа к значениям полей. dbgrid связана с данными через какой-либо DataSet и только отображает эти данные.
Через DataSet и надо получать значение поля текущей записи (активная в dbgrid строка).
Код:
function DecodeEncodeStr(const S, Psw : String) : String;
var I, J : Integer;
begin
Result := S;
if (S = '') or (Psw = '') then Exit;
J := 1; I := 1;
while I <= Length(S) do begin
if Result[i] = #13 then begin Inc(I, 2); continue end;
Result[i] := Char(Byte(Result[i]) xor Byte(PSW[J]));
if Result[i] = #0 then Result[i] := Psw[J];
if J = Length(PSW) then J := 1 else Inc(J);
Inc(I);
end;
end;
//шифрование и дешифрование строкового поля активной в dbgrid записи
procedure TForm1.Button1Click(Sender : TObject);
begin
Str := DataSet1.FieldByName('FIELD2').AsString;
DataSet1.Edit;
DataSet1.FieldByName('FIELD2').AsString := DecodeEncodeStr(Str, Psw);
DataSet1.Post;
//"FIELD2" - для примера.
end;
DecodeEncodeStr - Функция для примитивного симметричного шифрования строк.
"S" - исходная строка, которую нужно шифровать или дешифровать;
"Psw" - строка, на основе которой происходит преобразование исходной. Может быть произвольной длины (более 2 символов). Должна состоять из русских букв и/или цифр.
Зашифрованая этой функцией строка должна с помощью её и дешифровываться с одинаковым набором символов в параметре "Psw".