我想调试多次Buttonclick事件,但Delphi调试的时候窗体又是卡的,只能点击一次Button,第二次点的时候是卡主的不能点击,怎么办啊?
解决方案 »
- shellexecute ?
- 求救,关于dbgrid中根据时间统计某个列的和的问题
- 三层结构中BLOB字段太大的问题
- 一堆sql语句,两个输入性变量jsource和jcurrent,有分
- 请问:如何在窗体中得到名为A10的button,并对它操作
- 使用一个文见
- 怎样在delphi中调用word!
- XML是什么?Delphi6编译后能直接在linux下运行吗?李维的书出了吗?
- 谁能提供一个好的序列号的生成算法,很着急!!!!!!!!详细一点,就这些分,一定加分!
- 如何监听局域网上的IP数据报?来自:http://vr_fight.home.chinaren.com
- INDY中的TIDTcpServer和TIDTcpClient有没有OnRead之类的事件?
- delphi.新手问题。怎么设置output文件。怎么用CVS上传更新什么的。
或者把执行过程写到线程中
I: Integer;
begin
for I := 0 to 3 do
PostMessage(Button1.Handle, BM_Click, 0, 0);
end;
procedure TForm1.OpenbuttonClick(Sender: TObject); //打开按钮
Var
i,a: Integer;
Thread1, Thread2: TMyThread;
begin
if OpenDialog1.Execute then
begin
if test then //如果tst=true表示已经打开过
begin
DataArray:=nil;
TimeBox.Items.Clear;
TemperBox.Items.Clear;
PressBox.Items.Clear;
StrList.Clear;
StrList.LoadFromFile(OpenDialog1.FileName);
GetCol_Row; // 得到列数和行数
BeginNum := BeginRead; // 从第几行开始读
Setlength(DataArray, StrList.Count-beginNum-2, ColNum);
a:=beginNum + 3 + Trunc((StrList.Count - beginNum - 2) / 2);//strLIst分成两部分
Thread1 := TMyThread.Create(0,beginNum+2,a); // 解析前半部分
Thread2 := TMyThread.Create(a-beginNum-1,a+1,StrList.Count-1); // 解析后半部分
Thread1.OnTerminate := Threaddone;
Thread2.OnTerminate := Threaddone;
for i:=1 to ColNum do
begin
TimeBox.Items.Add(Format('第%d列',[i]));
TemPerBox.Items.Add(Format('第%d列',[i]));
PressBox.Items.Add(Format('第%d列',[i]));
end;
end
else //没有打开过
begin
StrList.LoadFromFile(OpenDialog1.FileName);
GetCol_Row; // 得到列数和行数
BeginNum := BeginRead; // 从第几行开始读
Setlength(DataArray, StrList.Count-beginNum-2, ColNum);
a:=beginNum + 3 + Trunc((StrList.Count - beginNum - 2) / 2);//strLIst分成两部分
Thread1 := TMyThread.Create(0,beginNum+2,a); // 解析前半部分
Thread2 := TMyThread.Create(a-beginNum-1,a+1,StrList.Count-1); // 解析后半部分
Thread1.OnTerminate := Threaddone;
Thread2.OnTerminate := Threaddone;
for i:=1 to ColNum do
begin
TimeBox.Items.Add(Format('第%d列',[i]));
TemPerBox.Items.Add(Format('第%d列',[i]));
PressBox.Items.Add(Format('第%d列',[i]));
end;
test:=True;
end;
end;
end;end.
Var
i,a: Integer;
Thread1, Thread2: TMyThread;
begin
if OpenDialog1.Execute then
begin
if test then //如果tst=true表示已经打开过
begin
DataArray:=nil;
TimeBox.Items.Clear;
TemperBox.Items.Clear;
PressBox.Items.Clear;
StrList.Clear;
StrList.LoadFromFile(OpenDialog1.FileName);
GetCol_Row; // 得到列数和行数
BeginNum := BeginRead; // 从第几行开始读
Setlength(DataArray, StrList.Count-beginNum-2, ColNum);
a:=beginNum + 3 + Trunc((StrList.Count - beginNum - 2) / 2);//strLIst分成两部分
Thread1 := TMyThread.Create(0,beginNum+2,a); // 解析前半部分
Thread2 := TMyThread.Create(a-beginNum-1,a+1,StrList.Count-1); // 解析后半部分
Thread1.OnTerminate := Threaddone;
Thread2.OnTerminate := Threaddone;
for i:=1 to ColNum do
begin
TimeBox.Items.Add(Format('第%d列',[i]));
TemPerBox.Items.Add(Format('第%d列',[i]));
PressBox.Items.Add(Format('第%d列',[i]));
end;
end
else //没有打开过
begin
StrList.LoadFromFile(OpenDialog1.FileName);
GetCol_Row; // 得到列数和行数
BeginNum := BeginRead; // 从第几行开始读
Setlength(DataArray, StrList.Count-beginNum-2, ColNum);
a:=beginNum + 3 + Trunc((StrList.Count - beginNum - 2) / 2);//strLIst分成两部分
Thread1 := TMyThread.Create(0,beginNum+2,a); // 解析前半部分
Thread2 := TMyThread.Create(a-beginNum-1,a+1,StrList.Count-1); // 解析后半部分
Thread1.OnTerminate := Threaddone;
Thread2.OnTerminate := Threaddone;
for i:=1 to ColNum do
begin
TimeBox.Items.Add(Format('第%d列',[i]));
TemPerBox.Items.Add(Format('第%d列',[i]));
PressBox.Items.Add(Format('第%d列',[i]));
end;
test:=True;
end;
end;
end;end.]
Var
i,a: Integer;
Thread1, Thread2: TMyThread;
begin
if OpenDialog1.Execute then
begin
if test then //如果tst=true表示已经打开过
begin
DataArray:=nil;
TimeBox.Items.Clear;
TemperBox.Items.Clear;
PressBox.Items.Clear;
StrList.Clear;
StrList.LoadFromFile(OpenDialog1.FileName);
GetCol_Row; // 得到列数和行数
BeginNum := BeginRead; // 从第几行开始读
Setlength(DataArray, StrList.Count-beginNum-2, ColNum);
a:=beginNum + 3 + Trunc((StrList.Count - beginNum - 2) / 2);//strLIst分成两部分
Thread1 := TMyThread.Create(0,beginNum+2,a); // 解析前半部分
Thread2 := TMyThread.Create(a-beginNum-1,a+1,StrList.Count-1); // 解析后半部分
Thread1.OnTerminate := Threaddone;
Thread2.OnTerminate := Threaddone;
for i:=1 to ColNum do
begin
TimeBox.Items.Add(Format('第%d列',[i]));
TemPerBox.Items.Add(Format('第%d列',[i]));
PressBox.Items.Add(Format('第%d列',[i]));
end;
end
else //没有打开过
begin
StrList.LoadFromFile(OpenDialog1.FileName);
GetCol_Row; // 得到列数和行数
BeginNum := BeginRead; // 从第几行开始读
Setlength(DataArray, StrList.Count-beginNum-2, ColNum);
a:=beginNum + 3 + Trunc((StrList.Count - beginNum - 2) / 2);//strLIst分成两部分
Thread1 := TMyThread.Create(0,beginNum+2,a); // 解析前半部分
Thread2 := TMyThread.Create(a-beginNum-1,a+1,StrList.Count-1); // 解析后半部分
Thread1.OnTerminate := Threaddone;
Thread2.OnTerminate := Threaddone;
for i:=1 to ColNum do
begin
TimeBox.Items.Add(Format('第%d列',[i]));
TemPerBox.Items.Add(Format('第%d列',[i]));
PressBox.Items.Add(Format('第%d列',[i]));
end;
test:=True;
end;
end;
end;end.
test:=True;
Thread1.free; //加这两句,button应该就不会卡住了。
Thread2.free; 没试,错了莫怪。