Q&A

  • ListView에서 데이타를 2초간격으로 받을때 깜박임방지지는


안녕하세요 .. TlistView를 사용하고 있습니다..


TCP를사용하여 TLiviewView에서 서버에서 2초간격으로 리스트를

한꺼번에 받아서 문자열을 쪼개서 TListView에다가 넣는데요

문제는 2초간격으로 데이타를 받으니까 지웠다가 새로운 데이타를

다시 뿌려주는데요 그러니까 깜박임 현상이 나타 납니다

깜빡임이 없이 할려면 어떻게 해야 하나요



지금 하고 있는것은  접속자 정보 리스트 입니다 .근데 그 접속자 리스트에서

상태들이 변하는것을  2초간격으로 테이타를 가지고 와서

다 지웠다가 다시 뿌려주거든요 근데 만약 상태subitem이  대기중 채팅중 이

있으면 상태값만 변경할수 잇는지 도무지 모르겟네요..!

고수님들 좀 알려주세요

도우말 봐도 예제는 없는거 같고 있다 해도 못찾겠어요

밑에는  데이타를 요청해서 받은 테이타를 집어 넣습니다


for i:=0 to Packet.Count-1 do

    begin
      PacketDetail.Clear;
      ExtractStrings(['$'],[], PChar(Packet.Strings[i]), PacketDetail );

    

        ListItem := UserListView.Items.Add;

        ListItem.Caption := Trim(PacketDetail.Strings[3]);
         ListItem.Caption  부분에 이미지적으로 이미지 아이콘을 (이미지+ TExt로 늘려고 하면 어떻게 해요
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[4]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[7]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[9]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[10]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[11]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[12]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[13]));

        ListItem.SubItems.Add(Trim(PacketDetail.Strings[0]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[1]));
        ListItem.SubItems.Add(Trim(PacketDetail.Strings[2]));

        

     end;



타이머 2초간격으로 작동
procedure TTelePhone.ReflashTimerTimer(Sender: TObject);


begin
UserListView.Items.Clear;
위에 방식으로 데이타를 다 지운후에 밑에서 다시 데이타 요청을 합니다

ClientSocket.Socket.SendText('UserList|'+Myinfo.UHCD1+'|'+Myinfo.UH323ID1+#10);
end;

이런식으로 타이머가 작동해서.. 데이타를 가지고 옵니다



4  COMMENTS
  • Profile
    KDDG_BaSTaD 2005.01.07 20:23

    ==> KDDG_BaSTaD 입니다..
    DoubleBuffered 를 True하시구요... TListView를 사용하실
  • Profile
    111 2005.01.07 21:00
    제가 ListView 를 처음 써보거든요,..

    답변 달아주신건 정말 감사합니다 ..!

    BeginUpdate 와 EndUpdate 이 부분을 전혀 모르는데

    간단하게 예제로 설명좀 해주시면 정말 고맙겠습니다.

    한번만 설명좀 해주세요 부탁드립니다.

    제가 아직 초짜라서 전혀 모르네요 그냥 사수도 없고 혼자 살려니까.

    매일 이리저리 헤메기만 하네요 Delphi 5 책을 봐도 잘 안나와 있구요

    부탁드립니다


  • Profile
    도끼로이마까 2005.01.08 02:57

    ListView Clear 부분과...새로운 정보를 Add하는 부분을 다음과 같이 BeginUpdate와 EndUpdate로 묶어주세요..

    =========
    ListView.Items.BeginUpdate;
    ListView.Items.Clear;

    FillListView;

    ListView.Items.EndUpdate;
    =====

  • Profile
    권태훈 2005.01.08 00:48

    begin
      listview1.items.beginupdate;
      listview1.items.add("aaa");
      listview1.items.endupdate;
    end;