Q&A

  • DBGrid에서 메모필드를 클릭하면
안녕하세요~

하드웨어 자산의 Spec값을 메모필드로 저장하고
메모필드를 DBGrid에 표시하게 하는 것은 아래의 코드로 해결 했습니다.


<!--CodeS-->
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
        {Table1Notes is the TMemoField}
            BS := TblobStream.Create(Query1.FieldByName('Column') as TBlogField, 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 {remove carriage returns and}
                S[Pos(#13, S)]:=' '; {line feeds}
            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;

<!--CodeE-->


문제는 이 필드값을 그리드상에서 클릭하면 (MEMO)란 내용으로 바뀌어서 보이게 되네요.

이걸 막으려면 어떻게 해야하나요?
0  COMMENTS