안녕하세요?
델파이 3에 ms-sql을 사용하고 있는데요...
text형 필드에 Tmemo로 디비에 저장을 했는데...
DBGrid에는 (memo)라는 표시만 되고... 내용은 보이질 않네요...
내용을 보이게 하려면 어찌 해야 하나요...
참고로 dbgrid는 table과 연결했습니다.
밑에 누군가 답을 올리셨는데.....
-------------------------------------------------------------------------
// 이 예제의 DatabaseName은 'DBDEMOS'이고 TableName은 'BIOLIFE.DB' 입니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Db, DBTables;
type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1Notes: TMemoField;
procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
const
MAX_CHARSIZE = 50; // DBGrid에 출력할 Memo 필드의 글자수
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
P: array [0..MAX_CHARSIZE] of char;
BS: TBlobStream;
S: String;
begin
if Field is TMemoField then
begin
with (Sender as TDBGrid).Canvas do
begin
{Table1Notes 은 TMemoField 형입니다}
BS := tBlobStream.Create(Table1Notes, bmRead);
FillChar(P,SizeOf(P),#0);
BS.Read(P, MAX_CHARSIZE); {blobStream 에서 MAX_CHARSIZE 바이트만큼 읽는다}
BS.Free;
S := StrPas(P);
while Pos(#13, S) > 0 do {CR 문자 제거}
S[Pos(#13, S)] := ' ';
while Pos(#10, S) > 0 do {LF 문자 제거}
S[Pos(#10, S)] := ' ';
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, S);
end;
end;
end;
-------------------------------------------------------------------
이대로 하니까 전 안되더라구요...
Table1Notes: TMemoField; --> 이게 없다고 그러구요...
tBlobStream --> 이것도 잘못됐다구 그러는데요...
어떻게 해결을 해야 하나요?
부탁드립니다.