关于delphi 数据库导入listview显示,如何控制显示的速度,想要一秒显示一行数据

趁年轻可劲疯 2020-06-06 07:10:52
贴上代码。大神们,我想用timer控制,但是调试不出来了。能给个详细的代码吗
unit ;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls,
Data.DB, Data.Win.ADODB;

type
TForm1 = class(TForm)
ListView1: TListView;
Label1: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
Panel1: TPanel;
CheckBox5: TCheckBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
Button4: TButton;
Label2: TLabel;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);

var
i:integer;
TempColumn:TListColumn;
TempItem:TListItem;
begin
begin
Timer1.Enabled:=false;

with adoquery1 do
begin
close;
ADOConnection1:=TADOConnection.Create(nil);
Adoconnection1.LoginPrompt:=false;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Persist Security Info=False';
adoquery1.Connection := ADOConnection1;
SQL.Clear;
SQL.add('select * from 旺旺号');
Open;
end;
for i:=0 to adoquery1.FieldCount-1 do
begin
TempColumn:=self.ListView1.Columns.Add;
TempColumn.Caption:=adoquery1.Fields[i].FieldName;
end;
adoquery1.First;
while not adoquery1.Eof do
begin
TempItem:=self.ListView1.Items.Add;
TempItem.Caption:=adoquery1.Fields[0].AsString;
for i:=1 to adoquery1.FieldCount-1 do
begin
TempItem.SubItems.Add(adoquery1.Fields[i].AsString);
end;
adoquery1.Next;

end;
Timer1.Enabled:=false;
end;
end;
//显示在listview1


procedure TForm1.Button3Click(Sender: TObject); //保存

var
mylist:TstringList ;
n,i: integer;
str,tem:string;
begin
if listview1.Items.Count>0 then
begin
try
mylist:=TStringlist.Create;
for n := 0 to listview1.Items.Count - 1 do begin
str:='';
for i := 0 to listview1.Items.Item[n].SubItems.Count -1 do
begin
tem:=listview1.Items.Item[n].SubItems.Strings[i];
if (tem ='') then tem:='####';
if (str='') then str:=tem
else str:=str+'+' +tem;
end;
mylist.Add(str);
end;
showmessage(mylist.Text) ;
mylist.SaveToFile('d:\123.txt');
finally
Mylist.Free;
end;
end
else begin
application.MessageBox('没有数据可以导出!','提示信息',MB_OK+MB_Iconinformation);
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
listview1.Items.Clear;
end;

procedure TForm1.Memo1Change(Sender: TObject); //按钮真假
begin
if not(memo1.Lines.Text = '') then
begin
Button1.Enabled:=true;
end
else
begin
Button1.Enabled:=false;

end;
end;


end.
...全文
144 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 2020-06-06
  • 打赏
  • 举报
回复
Timer1的处理事件你没写呀。你没用对Timer1的。

procedure TForm1.Button1Click(Sender: TObject);

    var
   i:integer;
   TempColumn:TListColumn;
   TempItem:TListItem;
  begin
   begin
     Timer1.Enabled:=false;

   with adoquery1 do
   begin
    close;
    ADOConnection1:=TADOConnection.Create(nil);
    Adoconnection1.LoginPrompt:=false;
    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Persist Security Info=False';
    adoquery1.Connection :=  ADOConnection1;
    SQL.Clear;
    SQL.add('select * from 旺旺号');
    Open;
   end;
  for i:=0 to adoquery1.FieldCount-1 do
   begin
   TempColumn:=self.ListView1.Columns.Add;
   TempColumn.Caption:=adoquery1.Fields[i].FieldName;
   end;
   adoquery1.First;  //数据准备好,到第一条记录  ,上面代码是你自己的

      Timer1.Interval:=1000;  //定时执行,每秒一次。
      Timer1.Enabled:=true;  //启动定时器
    end;
  end;

//定时 的事件要写代码的
procedure TFormMain.Timer1Timer(Sender: TObject);
begin
   //如果没到数据库尾,就加一行
    if not adoquery1.Eof then
    begin
      TempItem:=self.ListView1.Items.Add;
      TempItem.Caption:=adoquery1.Fields[0].AsString;
      for i:=1 to adoquery1.FieldCount-1 do
       begin
         TempItem.SubItems.Add(adoquery1.Fields[i].AsString);
       end;
       adoquery1.Next;  //准备好下次使用
   end
    else
    Timer1.Enabled:=false;  //没数据了,就不再执行定时任务、
end;

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧