Il faut définir un GetText sur la zone mémo :
1) Dans ta fenêtre (ou datamodule), tu ajoutes un événement pour le GetText :
procedure memoGetText(Sender: TField; var Text: String; DisplayText: Boolean);
2) après ouverture de ton dataset, tu rediriges toutes les zones Memo vers cet d'événement :
1 2 3 4 5 6 7 8 9
| procedure TFrameSQLGrid.leDataSetAfterOpen(DataSet: TDataSet);
var
i : integer;
begin
// on redirige les zones memo vers memoGetText
for i := 0 to DataSet.FieldCount - 1 do
if (DataSet.Fields[i] is TMemoField) then
DataSet.Fields[i].OnGetText := memoGetText;
end; |
3) Le code de memoGetText :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| procedure TForm1.memoGetText(Sender: TField; var Text: String; DisplayText: Boolean);
var
i : integer;
begin
try
Text := sender.AsString;
if displayText then
begin
i := pos(#13,Text);
if i > 0 then
Text := copy(Text,1,i-1) + '...';
end;
except
on e: EDBEngineError do
if ((e.errors[0].ErrorCode = DBIERR_INVALIDBLOBHANDLE) or (e.errors[0].ErrorCode = ERRCODE_INVALIDBLOBHANDLE)) then
Text := 'Handle de blob invalide, essayez de mettre BLOBS TO CACHE=-1 dans les paramètres de la connexion'
else
Text := e.message;
on e: Exception do
Text := e.message;
end;
end; |
Bloon
Partager