안녕하세요..
오전에 질문드리고 다시 질문드립니다.. ㅠ.ㅠ...
for 문을 돌려서 그리드의 조건이 맞으면 해당로우를 삭제 하려고 합니다..
그런데..
removerow 를 써서 row 삭제하다보니..
첫번째 row를 삭제하면 두번째 row가 첫번째 row가 되고..
다시 이row를 삭제하면 세번째 row 가 첫번째 row 가 되는거져...
그래서 예를 들자면..
아래와 같은 그리드에서
0 aa 12 가가
1 aa 324 나나
2 aa 234 다다
3 aa 234 라라
4 bb 55 미미
. . . .
. . . .
. . . .
7 aa 22 .
. . . .
. . . .
advstringgrid.cells[1,row] 에서 값이 for문을 돌려 'aa'인것만을 삭제 하려고 하면 ..
for i := 1 to AdvGrid_Money.Rowcount -1 do
begin
if Advstringgrid.Cells[1,i] = 'aa' then
begin
Advstringgrid.RemoveRows(i,1);
end;
end;
원래는 세번째 row까지 삭제하려는게 저의 의도인데..세번째 로우에는 'bb'라는 값이 와버려서 삭제가 안된다는 말입니다요..
i를 어떻해 증가시켜줘야 되는지 모르겠어요...
제가 무슨 소릴 하려는지 이해하실려나..- -;;
제 머리로는 다른 방법이 생각이 안나는데요..
고수님들 도와주세요..
아침부터 낑낑대고 있습니다..ㅠ.ㅠ....
아침에 답했던 사람인데요..
님이 하신 말씀을 잘 봤습니다.. 저두 앞으로 그렇게 사용해야 겠네요..
근데 이 문제는 걍 변수 하나를 더 써서 그러니까 이렇게 하면 되지 않을까요?
j := 0;
for i := 1 to AdvGrid_Money.Rowcount -1 do
begin
inc(j);
if Advstringgrid.Cells[1,j] = 'aa' then
begin
Advstringgrid.RemoveRows(j,1);
j := j -1;
end;
end;
해보지는 않았는데 로우를 다시 셀수 있도록 변수하나만 지정해주면 될것같은데요...^^;;
그럼 즐프하세염.