ListView1使用的问题(50)

  • 主题发起人 主题发起人 why_119
  • 开始时间 开始时间
W

why_119

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我读目录下所有文件 加 到 ListView1 中我要等全读完 才能在ListView1中看到能不能 读一个就在ListView1中看到一个
 
这样就慢死了~~~
 
一般方法:(不太适应几千以上记录,太慢,加个进度条还可以接受,要不还以为死机了) ListView1.Items.BeginUpdate; //加载或者释放数据 ListView1.Items.EndUpdate;要快的话:ListView1.OwnerData 打开,但加载方法不同。
 
能不能 读一个就在ListView1中看到一个 :哈哈,做个多线程 就行!看来你对windows 的精髓不理解啊:多线程、多任务、内存管理、消息管理!多看书,多学习
 
不要求快.读一个显示一个就行...
 
// 用线程unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TMyThread = class(TThread) private FListView: TListView; protected procedure Execute; override; public constructor Create(CreateSuspend: Boolean; ALv: TListView); end; TForm1 = class(TForm) lv1: TListView; btn2: TButton; procedure btn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}{ TMyThread }constructor TMyThread.Create(CreateSuspend: Boolean; ALv: TListView);begin inherited Create(CreateSuspend); FListView := ALv;end;procedure TMyThread.Execute;var Item: TListItem; I: Integer;begin for I := 0 to 100 do begin Item := FListView.Items.Add; Item.Caption := Format('ListVie Item %d', ); Sleep(10); end;end;procedure TForm1.btn2Click(Sender: TObject);begin TMythread.Create(False, lv1);end;end.
 
在LISTVIEW上后面放一个PANCEL,然后加载时让LISTVIEW。VISIBLE := FALSE;加载完数据后再显示出来,这样就快了。
 
可以呀,在读的那个循环中加一句Application.ProcessMessages;让窗口接消息就好了
 
顶最后一个,前面的都是不看题目的高手
 
哈哈,这个也简单!做个ReadBuffThread!再做个WriteBuffThreed!当ReadBuffThread 有数据,就发条消息给WriteBuffThreed!这样就又慢又快!动感实足!
 
后退
顶部