질문있습니다.!
마우스로 StringGrid의 cell을 마음껏 잡아서 그 선택한 범위안에 들어있는 값을 더하여 오른쪽 마우스를 찍으면 합계가 나오는 방법을 알고 싶습니다.
대충
StringGrid1.MouseToCell(x, Y, ACol, ARow);
ARect := StringGrid1.CellRect(ACol, ARow);
이런걸 쓰면 될것같은데 어느 이벤트를 탈ㄸㅒ 넣어야하는지와
범위값을 어떻게 받아서 더하기를 하는지를 알고싶습니다.
고민을 많이 했는데 답이 안나와 너무 길게 끄니까 이제 지쳐서 생각이 잘 안되네요..답변부탁드립니다. 여러분...
> 질문있습니다.!
> 마우스로 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컴포넌트가
완빵인데 말이죠. ^^