스트링그리드에서는 삽입, 삭제 기능이 전혀 없습니다.
그러나,...
없다고 해서 못 만들면 프로그래머가 아니겠지요?
현재 RowCount가 5 라고 하고, 현재 Row가 3이라면
즉, 세번 째 줄에서 <INSERT> 키를 누르면
첫 째, RowCount를 1 증가시킨다.
StringGrid1.RowCount := StringGrid1.RowCount + 1;
둘 째, 현재 위치로부터 마지막줄 위의 내용를 한 줄씩 내려준다.
정확하게 말하면 마지막 윗줄로부터 현재 줄까지를 아래로
복사한다.
for StringGrid1.RowCount-1-1 downto StringGrid1.Row do
\___ i := 누락
for j := 0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[j,i+1] := StringGrid1.Cells[j,i];
셋 째, 현재라인을 공백처리한다.
for j := 0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[j,StringGrid1.Row] := '';
이렇게 하면 됩니다.
삭제는
먼저, 현재라인 아랫줄로부터 마지막 줄 까지를 한 줄 위로 이동하고
for i := StringGrid1.Row to StringGrid1.RowCount-1-1 do
for j := 0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[j,i] := StringGrid1.Cells[j,i+1];
다음, RowCount를 1 감소시킨다.
StringGrid1.RowCount := StringGrid1.RowCount - 1;
만약, RowCount가 1이라면 RowCount를 감소시키지 말아야 겠지요.
이상입니다.
|