Q&A

  • ListView에서 item이 덮어 씌어집니다.
질문이 이상한데요.

TListview에서 viewstyle을 vsreport로 설정 했습니다.

특정 파일을 찾아서 listview에 집어 넣는 부분입니다.
첫번째 column에는 파일 이름, 두번째 col에는 경로, 파일 사이즈 이런식으로 집어 넣습니다.
아래처럼  for문 돌려서 계속 리스트에 집어 넣습니다.

lvAllList.Items.Add;
lvAllList.Items[ItemCount].Caption := SearchRec.Name;
lvAllList.Items[ItemCount].SubItems.Add(Dir + SearchRec.Name);
FileDate := FileDateToDateTime(SearchRec.Time);
lvAllList.Items[ItemCount].SubItems.Add(DateTimeToStr(FileDate));


그런데 실행을 시키고 나니깐 2가지 문제가 생겼습니다.

첫번째는, 만약 1000개의 행이 출력 되야 한다면 리스트에는 천개의 행이 생기고 실제 데이터는

한 700개 정도(어떤 것을 리스트에 담느냐에 따라 다릅니다) 만 생기고 나머지는 빈 공백 라인으로

남겨 집니다.


두번째는, 제가 showmessage로 한 행 출력 될때 마다 확인을 해 보니

한줄씩 한줄씩 정상적으로 출력 되다가(filename      filepath     filesize ........식으로)

일정 라인이 넘어 가면 나머지 열은 그대로 있고 filename란만 덮어 씌어 집니다.

즉,
1     11   111  1111
2     22   222  2222
3     33   333  3333
.
.
.
이렇게 가다가, 일정 라인이 넘어 가면

199 11 111 1111
200 22 222 2222

식으로 맨 앞 열만 덮어 씌워집니다.


방법을 모르겠습니다.

그냥 grid를 써야 할지...

고수님들 도움 주시면 정말 감사 하겠습니다.

3  COMMENTS
  • Profile
    강인규 2007.12.05 01:09
    코드와 이야기를 종합해보면 ItemCount이 가장 수상하네요.

    루프를 도는 과정중 ItemCount가 증가하지 않을 수 있는지 체크하시는 게 좋겠습니다.

    그리고 보통은...

    var
      Item : TListItem;

    Item := lvAllList.Items.Add;
    Item.Caption := SearchRec.Name;
    Item.SubItems.Add(Dir + SearchRec.Name);

    요런식으로들 많이 짜는 것 같습니다.


  • Profile
    황경수 2007.12.05 18:36
    님이 가르쳐 주신 일반적인 방식을 사용하니 간단히 해결 되었습니다.ㅎ

    ListView자체가 불안 하네요.ㅎ


  • Profile
    룰루랄라 2007.12.27 19:29

    이상하네요 님과 같은 방식으로 해도 별 문제는 없습니다.
    제 생각에도 ItemCount가 불안하네요....루프를 도는 과정에서 ItemCount가 맞게 증가하는지...
    보셔야할 것 같아요...

    ListView 자체가 불안하다는 결론은 너무 섣부르신 것 같아서요...
    (혹시나 원래 하신 그런 코딩은 원래 안되는거야...로 이해하고 넘어가실까봐..글 올립니다)