제가 구현한 것은...
DBgrid의 특정 레코드를 클릭하여 StringGrid로 값을 넘겨준후
StringGrid의 특정셀(숫자값셀)의 값을 바꾸면 그 Column의 세로로 입력되어 있는
값들의 합을 for문으로 더하여 Panel.Caption 에 표시해주는 것입니다.
StringGrid의 특정셀에서 OnKey 이벤트에서 key=#13 일때 합을 구하는 것 말고
값을 입력후에 마우스로 다른 셀을 클릭해도 한Column의 세로 합계값이 바뀌게 하려면
OnDrawCell에서 처리하면 되더군요
OnDrawCell안에 입력해 넣은 구문은
대략...---------------------------------------
Col_hab := 0;
If ACol=4 then
begin
for R := 1 to SGrid1.RowCount - 1 do
Col_hab := Col_hab + StrToInt(StringGrid1(5,R)); <--- 이부분에서 에러
end;
Panel_hab.Caption := IntToStr(Col_hab);
end;
인데... ----------------------------------------
OnDrawCell안에 처리된 문이라서
맨처음 얘기한듯이
DBgrid의 특정레코드를 클릭하여 StringGrid의 레코드를 늘리면서
값이 입력될때도 이 구문을 실행하죠...
그래서 Column의 합도 자동적으로 같이 변하여 잘 되는데...
*그런데 문제는*
StringGrid의 Row수가 StringGrid의 크기보다 많으면 수직 스크롤바가 생기면서
한레코드 추가때마다 처음레코드가 위로 스크롤 되죠.. 말하자면
처음 스크롤바가 생기는 순간 이상하게도
위의 문장에서 StringGrid(5,R) 값은 읽어오는데
<위소스중 ('<--이 부분에러')부분>
StrToInt 함수에서 에러가 나더군요
OnDrawCell 이벤트는 넘 어렵군요...
긴 내용 읽어주신 분들께 감사드리며 아시는 분 좀 갈켜주세요...
-- StrToInt에서 나는 에러는 발생하진 않을겁니다.
__ StrToInt 부분을 ValInt 로 바꾸어 써보지여...
-- 그럼...
Functon ValInt(aValue: String): Integer;
var
lr_code: Integer;
Begin
val(aValue, result, lr_code);
if lr_code <> 0 Then Result := 0;
End;
급궁금 wrote:
> 제가 구현한 것은...
> DBgrid의 특정 레코드를 클릭하여 StringGrid로 값을 넘겨준후
> StringGrid의 특정셀(숫자값셀)의 값을 바꾸면 그 Column의 세로로 입력되어 있는
> 값들의 합을 for문으로 더하여 Panel.Caption 에 표시해주는 것입니다.
>
> StringGrid의 특정셀에서 OnKey 이벤트에서 key=#13 일때 합을 구하는 것 말고
> 값을 입력후에 마우스로 다른 셀을 클릭해도 한Column의 세로 합계값이 바뀌게 하려면
> OnDrawCell에서 처리하면 되더군요
>
>
> OnDrawCell안에 입력해 넣은 구문은
>
> 대략...---------------------------------------
> Col_hab := 0;
>
> If ACol=4 then
> begin
> for R := 1 to SGrid1.RowCount - 1 do
> Col_hab := Col_hab + StrToInt(StringGrid1(5,R)); <--- 이부분에서 에러
> end;
> Panel_hab.Caption := IntToStr(Col_hab);
> end;
>
> 인데... ----------------------------------------
>
> OnDrawCell안에 처리된 문이라서
> 맨처음 얘기한듯이
> DBgrid의 특정레코드를 클릭하여 StringGrid의 레코드를 늘리면서
> 값이 입력될때도 이 구문을 실행하죠...
> 그래서 Column의 합도 자동적으로 같이 변하여 잘 되는데...
>
> *그런데 문제는*
> StringGrid의 Row수가 StringGrid의 크기보다 많으면 수직 스크롤바가 생기면서
> 한레코드 추가때마다 처음레코드가 위로 스크롤 되죠.. 말하자면
>
> 처음 스크롤바가 생기는 순간 이상하게도
> 위의 문장에서 StringGrid(5,R) 값은 읽어오는데
> <위소스중 ('<--이 부분에러')부분>
>
> StrToInt 함수에서 에러가 나더군요
>
> OnDrawCell 이벤트는 넘 어렵군요...
>
> 긴 내용 읽어주신 분들께 감사드리며 아시는 분 좀 갈켜주세요...