Q&A

  • ListView사용중..데이타를 입력할때 윈도우 리소스가 줄어드는이유..
DB 의 데이타를 뿌려주구..Drag&drop할때면... 다운이되더라구여...

여러번 테스트결과.. 데이타가 이동할때 리소스가 무지하게 많이 줄어드는 겁니다...

그래서 Delphi5의 데모인 virtuallistview를 해보았는데...

역시나... 데이타를 다시 뿌려줄때마다 리소스가 팍팍 줄더라구요...

왜그런지 아시는 분 없나요????

읽어주셔서 감사하구요... 빠른 답변 부탁드려요.

===소스============================================

// 색상넣기

procedure TfrmTax.ListView_SourceCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
    With Sender.Canvas Do Begin
        If Item = Nil Then Exit;


        font.Color := clGreen;
    End;
end;

// 드래그 드롭부분........

procedure TfrmTax.ListView_SourceDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
    if Source is TListView then begin
        Accept := True;
    End
    Else
        Accept := False;
end;

procedure TfrmTax.ListView_SourceDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
    if Sender = Source then exit;
    if Source is TListView then begin

         (Sender as TListView).Items.Add.Caption :=
              (Source as TListView).Selected.Caption;

         (Sender as TListView).Items[(Sender as TListView).Items.Count-1].Subitems :=
              (Source as TListView).Selected.SubItems;
         (Source as TListView).Selected.SubItems.Destroy;
         (Source as TListView).Selected.Delete;
//         (Source as TListView).Items.Delete((Source as TListView).Selected.Index);
    End;
end;

//  팝업선택시 데이타 이동...
procedure TfrmTax.Menu_AddClick(Sender: TObject);
begin
    ListView_Target.Items.Add.Caption :=
       ListView_Source.Selected.Caption;

    ListView_Target.Items[ListView_Target.Items.Count-1].Subitems :=
       ListView_Source.Selected.SubItems;
    ListView_Source.Selected.Delete;

end;

procedure TfrmTax.Menu_CancelClick(Sender: TObject);
begin
    ListView_Source.Items.Add.Caption :=
       ListView_Target.Selected.Caption;

    ListView_Source.Items[ListView_Source.Items.Count-1].Subitems :=
       ListView_Target.Selected.SubItems;
    ListView_Target.Selected.Delete;
end;
0  COMMENTS