Q&A

  • OnDrawCell 이벤트는 언제,어떻게 발생되는건가요??


procedure StringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

var

Rect1, Rect2 : TRect;

begin

if (ACol = 2) and (ARow = 2) then

begin

Rect1 := Classes.Rect(0,0,Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height);



Rect2.Left := Rect.Left;

Rect2.Top := Rect.Top;

Rect2.Right := Rect.Left + Rect1.Right;

Rect2.Bottom := Rect.Top + Rect1.Bottom;



(Sender as TStringGrid).Canvas.BrushCopy(Rect2, Image1.Picture.Bitmap, Rect1, clOlive);

end;

end;





위와 같은 코드로... 스트링그리드에 이미지를 넣는 코드를 (게시판에서 얻은건데..)

추가 했습니다.



근데, 이 event 는 마우스 클릭도 아니고... 실행되면서 자동으로 로드 되는것도

아니고.... 언제 이게 실행되도록 할 수 있습니까??



초보적인 질문이지만.. 아시는분 답변 부탁드립니다.. ^^;







4  COMMENTS
  • Profile
    이기현 2000.04.25 00:25
    procedure TForm1.BitBtn1Click(Sender: TObject);

    begin

    StringGrid1.Cells[2, 2] := ' ';

    StringGrid1.Objects[2, 2] := Image1.Picture.Bitmap;

    end;



    procedure TForm1.BitBtn2Click(Sender: TObject);

    begin

    StringGrid1.Cells[2, 2] := ' ';

    StringGrid1.Objects[2, 2] := nil;

    end;



    procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;

    Rect: TRect; State: TGridDrawState);

    var

    DrawBitmap: TBitmap;

    begin

    TStringGrid(Sender).Canvas.Draw(Rect.Left, Rect.Top + 4, TBitmap(TStringGrid(Sender).Objects[Col, Row]));

    end;



  • Profile
    최용일 2000.04.24 19:41
    안녕하세요. 최용일입니다.



    OnDrawCell이벤트는 그리드의 셀이 다시 그려질 필요가 있을때(셀이 선택된다거나,



    화면상에서 숨겨졌다 다시 나타날때, 그리드가 다시 그려질때...)에 발생하는



    이벤트로 이건 스트링그리드가 필요할때 알아서 이벤트를 발생시키므로 어떻게 그려



    주는가만 생각하시면 됩니다.



    ^^ 항상 즐코하세요.



    이수정 wrote:

    >

    > procedure StringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

    > var

    > Rect1, Rect2 : TRect;

    > begin

    > if (ACol = 2) and (ARow = 2) then

    > begin

    > Rect1 := Classes.Rect(0,0,Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height);

    >

    > Rect2.Left := Rect.Left;

    > Rect2.Top := Rect.Top;

    > Rect2.Right := Rect.Left + Rect1.Right;

    > Rect2.Bottom := Rect.Top + Rect1.Bottom;

    >

    > (Sender as TStringGrid).Canvas.BrushCopy(Rect2, Image1.Picture.Bitmap, Rect1, clOlive);

    > end;

    > end;

    >

    >

    > 위와 같은 코드로... 스트링그리드에 이미지를 넣는 코드를 (게시판에서 얻은건데..)

    > 추가 했습니다.

    >

    > 근데, 이 event 는 마우스 클릭도 아니고... 실행되면서 자동으로 로드 되는것도

    > 아니고.... 언제 이게 실행되도록 할 수 있습니까??

    >

    > 초보적인 질문이지만.. 아시는분 답변 부탁드립니다.. ^^;

    >

    >

    >

  • Profile
    이수정 2000.04.24 22:02
    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > OnDrawCell이벤트는 그리드의 셀이 다시 그려질 필요가 있을때(셀이 선택된다거나,

    >

    > 화면상에서 숨겨졌다 다시 나타날때, 그리드가 다시 그려질때...)에 발생하는

    >

    > 이벤트로 이건 스트링그리드가 필요할때 알아서 이벤트를 발생시키므로 어떻게 그려

    >

    > 주는가만 생각하시면 됩니다.

    >

    > ^^ 항상 즐코하세요.

    >

    > 이수정 wrote:

    > >

    > > procedure StringGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

    > > var

    > > Rect1, Rect2 : TRect;

    > > begin

    > > if (ACol = 2) and (ARow = 2) then

    > > begin

    > > Rect1 := Classes.Rect(0,0,Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height);

    > >

    > > Rect2.Left := Rect.Left;

    > > Rect2.Top := Rect.Top;

    > > Rect2.Right := Rect.Left + Rect1.Right;

    > > Rect2.Bottom := Rect.Top + Rect1.Bottom;

    > >

    > > (Sender as TStringGrid).Canvas.BrushCopy(Rect2, Image1.Picture.Bitmap, Rect1, clOlive);

    > > end;

    > > end;

    > >

    > >

    > > 위와 같은 코드로... 스트링그리드에 이미지를 넣는 코드를 (게시판에서 얻은건데..)

    > > 추가 했습니다.





    위와 같은 코드로 되어 있는데.. 이미지가 안나오네요..



    왜 안나오지.. 좀 봐주세요..





  • Profile
    최용일 2000.04.25 07:02
    헐~ 벌써 답을 아셨네요... 답변이 늦었군요. 죄송...