Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[5145] [답변] HS0608/ StringGrid에서 Insert,Delete?
솔뫼마당 [ ] 2414 읽음    1998-11-13 09:04

스트링그리드에서는 삽입, 삭제 기능이 전혀 없습니다.
그러나,...
없다고 해서 못 만들면 프로그래머가 아니겠지요?

현재 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를 감소시키지 말아야 겠지요.

이상입니다.



+ -

관련 글 리스트
5145 [답변] HS0608/ StringGrid에서 Insert,Delete? 솔뫼마당 2414 1998/11/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.