2005. február 23., szerda
How to display memo fields in a TDBGrid
Problem/Question/Abstract:
How to display memo fields in a TDBGrid
Answer:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
P: array[0..50] of char; {array size is number of characters needed}
BS: tBlobStream; {from the memo field}
S: string;
begin
if Field is TMemoField then
begin
with (Sender as TDBGrid).Canvas do
begin
BS := tBlobStream.Create(TBlobField(Field), bmRead);
FillChar(P, SizeOf(P), #0); {terminate the null string}
BS.Read(P, 50); {read 50 chars from memo into blobStream}
BS.Free;
S := StrPas(P);
while Pos(#13, S) > 0 do
S[Pos(#13, S)] := ' ';
while Pos(#10, S) > 0 do
S[Pos(#10, S)] := ' ';
FillRect(Rect); {clear the cell}
TextOut(Rect.Left, Rect.Top, S); {fill cell with memo data}
end;
end;
end;
For mouse right click behavior you need to intercept the right click mouse message.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése