Q&A

  • 스트링그리드이 데이터를 읽어야 하는데요...
델마당에 올린글을 여기에 또 올리게 되어 죄송합니다.

절박한 심정에 혹시나 해서... 이해해 주시기 바랍니다.



전에도 비슷한 유형의 질문을 몇번정도 올린적이 있는데 답변글이 없어

부끄러움을 감수하며 이렇게 다시 글을 올립니다.



다른 실행프로그램을 비주얼멘더로 분석한 결과 화면상에 스트링그리드가 있어군요.

다른 컴포넌트상의 데이터는 좌표와 핸들을 이용해서 그 값을 읽었으나, 스트링 그리트는 GETTEXT가 되지 않더군요.



스트링그리드의 각 셀별 데이터를 읽을 수 있는 방법을 없을까요?

부탁드립니다.





2  COMMENTS
  • Profile
    홍성락 2001.11.23 23:30
    폴 wrote:

    > 델마당에 올린글을 여기에 또 올리게 되어 죄송합니다.

    > 절박한 심정에 혹시나 해서... 이해해 주시기 바랍니다.

    >

    > 전에도 비슷한 유형의 질문을 몇번정도 올린적이 있는데 답변글이 없어

    > 부끄러움을 감수하며 이렇게 다시 글을 올립니다.

    >

    > 다른 실행프로그램을 비주얼멘더로 분석한 결과 화면상에 스트링그리드가 있어군요.

    > 다른 컴포넌트상의 데이터는 좌표와 핸들을 이용해서 그 값을 읽었으나, 스트링 그리트는 GETTEXT가 되지 않더군요.

    >

    > 스트링그리드의 각 셀별 데이터를 읽을 수 있는 방법을 없을까요?

    > 부탁드립니다.

    /////////////////////////////////////////////////////////////////////

    혹시 스스링그리드의 화면 좌표로 셀을 찾아 그값을 알고자함인지요?

    어떻게 쓰실지는 모르겠으나 아래 참조하세요.



    procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;

    X, Y: Integer);

    var

    CCol, CRow: Integer;

    Rect : TRect;

    begin



    with TStringGrid(Sender) do begin

    Refresh;

    MouseToCell(x,y,CCol, CRow); //화면좌표로 셀구함



    Rect := CellRect(CCol, CRow);

    if (CRow>=0)and(CCol>=0) then begin

    Panel1.Caption := cells[CCol, CRow]; //셀의 값을 패널에 씀

    Canvas.Brush.Color := clRed;

    Canvas.FillRect(Rect);

    Canvas.Font.Color := clWhite;

    canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 3, cells[CCol, CRow]);

    end;

    end;



    end;

  • Profile
    2001.11.24 01:09
    이렇게 답변글 올려주신 홍성락님께 진심으로 감사드립니다.



    그런데, 저의 질문과 약간 엊갈리는 부분이 있어서요...



    음. 스트링그리드의 데이터를 읽기를 하긴 하는데 내프로그램내에 있는 스트링그리드가 아니라

    다른 프로그램상의 스트링 그리드입니다. 즉, 타업체의 프로그램이라 볼 수 있죠?



    뭐 좋은 방법이 있을 까요?

    부탁드립니다.





    홍성락 wrote:

    > 폴 wrote:

    > > 델마당에 올린글을 여기에 또 올리게 되어 죄송합니다.

    > > 절박한 심정에 혹시나 해서... 이해해 주시기 바랍니다.

    > >

    > > 전에도 비슷한 유형의 질문을 몇번정도 올린적이 있는데 답변글이 없어

    > > 부끄러움을 감수하며 이렇게 다시 글을 올립니다.

    > >

    > > 다른 실행프로그램을 비주얼멘더로 분석한 결과 화면상에 스트링그리드가 있어군요.

    > > 다른 컴포넌트상의 데이터는 좌표와 핸들을 이용해서 그 값을 읽었으나, 스트링 그리트는 GETTEXT가 되지 않더군요.

    > >

    > > 스트링그리드의 각 셀별 데이터를 읽을 수 있는 방법을 없을까요?

    > > 부탁드립니다.

    > /////////////////////////////////////////////////////////////////////

    > 혹시 스스링그리드의 화면 좌표로 셀을 찾아 그값을 알고자함인지요?

    > 어떻게 쓰실지는 모르겠으나 아래 참조하세요.

    >

    > procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;

    > X, Y: Integer);

    > var

    > CCol, CRow: Integer;

    > Rect : TRect;

    > begin

    >

    > with TStringGrid(Sender) do begin

    > Refresh;

    > MouseToCell(x,y,CCol, CRow); //화면좌표로 셀구함

    >

    > Rect := CellRect(CCol, CRow);

    > if (CRow>=0)and(CCol>=0) then begin

    > Panel1.Caption := cells[CCol, CRow]; //셀의 값을 패널에 씀

    > Canvas.Brush.Color := clRed;

    > Canvas.FillRect(Rect);

    > Canvas.Font.Color := clWhite;

    > canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 3, cells[CCol, CRow]);

    > end;

    > end;

    >

    > end;