Q&A

  • StringGrid에서 마우스로 선택한범위의 값을 더하는 방법
질문있습니다.!

마우스로 StringGrid의 cell을 마음껏 잡아서 그 선택한 범위안에 들어있는 값을 더하여 오른쪽 마우스를 찍으면 합계가 나오는 방법을 알고 싶습니다.



대충

StringGrid1.MouseToCell(x, Y, ACol, ARow);

ARect := StringGrid1.CellRect(ACol, ARow);

이런걸 쓰면 될것같은데 어느 이벤트를 탈ㄸㅒ 넣어야하는지와

범위값을 어떻게 받아서 더하기를 하는지를 알고싶습니다.



고민을 많이 했는데 답이 안나와 너무 길게 끄니까 이제 지쳐서 생각이 잘 안되네요..답변부탁드립니다. 여러분...

1  COMMENTS
  • Profile
    이재식 2000.03.24 19:01
    전수정 wrote:

    > 질문있습니다.!

    > 마우스로 StringGrid의 cell을 마음껏 잡아서 그 선택한 범위안에 들어있는 값을 더하여 오른쪽 마우스를 찍으면 합계가 나오는 방법을 알고 싶습니다.

    >

    > 대충

    > StringGrid1.MouseToCell(x, Y, ACol, ARow);

    > ARect := StringGrid1.CellRect(ACol, ARow);

    > 이런걸 쓰면 될것같은데 어느 이벤트를 탈ㄸㅒ 넣어야하는지와

    > 범위값을 어떻게 받아서 더하기를 하는지를 알고싶습니다.

    >

    > 고민을 많이 했는데 답이 안나와 너무 길게 끄니까 이제 지쳐서 생각이 잘 안되네요..답변부탁드립니다. 여러분...





    이재식 Wrote :

    안녕하세요?



    방향을 잘못 잡으신 것 같습니다.

    제 생각에는 Selection 명령어를 써야 쉽게 구현할 수 있으리라 생각됩니다.



    이렇게 한번 해보세요.

    먼저 폼위에 스트링그리드1 그리고, 에디트박스1이 있습니다.

    스트링그리드1에 어떤값들이 있겠죠.

    먼저, 스트링그리드의 마우스다운이벤트에 다음처럼 코딩합니다.

    이것은 오른쪽 버튼을 눌렀을때 합계가 Edit1.Text에 나오게 하는 것입니다.



    var

    i, j : integer ;

    SelRect : TGridRect ;

    sum : integer ;

    begin



    if Button in [mbRight] then

    begin

    sum := 0 ;

    SelRect := stringGrid1.Selection ; // 선택영역 알아내기



    for i := SelRect.Left to SelRect.Right do

    for j := SelRect.Top to SelRect.Bottom do

    sum := sum + StrToInt(StringGrid1.Cells[i, j]) ; // 값을 누적



    Edit1.Text := IntToStr (sum) ; // 합계 출력

    end ;

    end;



    이렇게 하시면 합계가 잘 나오리라 생각됩니다.



    사실 이런것은 스트링그리드보다는 formula나 spreedSheet컴포넌트가

    완빵인데 말이죠. ^^