…я все же лелею надежду, что когда-нибудь увижу TMemoField.DataSize, имеющим значение, отличное от нуля. Может быть значение DataSize является размером части Memo, которая сохранилась в .db-файле? Вместо этого я теперь пользуюсь объектом TBlobStream, который вполне хорошо справляется с этой работой. Все это у меня происходит примерно так:
Var
pBuffer: PChar;
Blob: TBlobStream;
begin
{FDataField – это TMemoField}
Blob := TBlobStream.Create(FDataField, bmRead);
try
if Blob.Size > 0 then try
GetMem(pBuffer, Blob.Size);
Blob.Read(pBuffer^, Blob.Size);
{ что-то тут делаем }
FreeMem(pBuffer, Blob.Size);
except
ShowMessage('Нехватка памяти' );
end;
finally
Blob.Free
end;
Как определить изменение фокуса строки в TDBGrid?
Используйте событие OnDataChange объекта Datasource, соединенного с DBGrid. Если параметр State в обработчике событие равен dsBrowse, значит вы перешли в новую строку (или только что открыли таблицу).