下面是线程的代码:
此代码有和错误!
请问:我要在另外的窗口单击时调用调ReadRealInfo(x,y),该如何写?
{x,y的值不同!}调试成功后给分ReadRealInfo(x,y)
type
suityou = class(TThread)
private
li_Term,li_Com:integer;
{ Private declarations }
protected
procedure Execute; override;
procedure ReadRealInfo(iTerp,iCom:integer); virtual; abstract;
public
constructor Create(iTerm,iCom:integer);
end;{number1} TNum1 = class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;{number2} TNum2 = class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;{ number3 } TNum3= class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;{ number4 } TNum4= class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;implementation
uses DDMSTYou;
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure suityou.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }{ suityou }constructor suityou.Create(iTerm, iCom: integer);
begin
li_Term:=iTerm;
li_com:=iCom;
end;procedure suityou.Execute;
begin
{ Place thread code here }
ReadRealInfo(li_Term,li_Com);
inherited Create(False);
end;{ TNum1 }procedure TNum1.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)
end;{ TNum2 }procedure TNum2.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)
end;{ TNum3 }procedure TNum3.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)end;{ TNum4 }procedure TNum4.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)end;end.
此代码有和错误!
请问:我要在另外的窗口单击时调用调ReadRealInfo(x,y),该如何写?
{x,y的值不同!}调试成功后给分ReadRealInfo(x,y)
type
suityou = class(TThread)
private
li_Term,li_Com:integer;
{ Private declarations }
protected
procedure Execute; override;
procedure ReadRealInfo(iTerp,iCom:integer); virtual; abstract;
public
constructor Create(iTerm,iCom:integer);
end;{number1} TNum1 = class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;{number2} TNum2 = class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;{ number3 } TNum3= class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;{ number4 } TNum4= class(suityou)
protected
procedure ReadRealInfo(iTerp,iCom:integer); override;
end;implementation
uses DDMSTYou;
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure suityou.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }{ suityou }constructor suityou.Create(iTerm, iCom: integer);
begin
li_Term:=iTerm;
li_com:=iCom;
end;procedure suityou.Execute;
begin
{ Place thread code here }
ReadRealInfo(li_Term,li_Com);
inherited Create(False);
end;{ TNum1 }procedure TNum1.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)
end;{ TNum2 }procedure TNum2.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)
end;{ TNum3 }procedure TNum3.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)end;{ TNum4 }procedure TNum4.ReadRealInfo(iTerp, iCom: integer);
begin
DMSTYou.ReadRealDownLoad(iTerp,iCom)end;end.
解决方案 »
- ACCESS数据库+DELPHI,如何用ADO得到字符表达式:'1+1' 的计算结果.(可能是很没有水平的问题,可我不会)
- www.delphibbs.com怎么回事了,好几天都访问不了了。
- 三层式数据库,怎样在客户端实现数据备份到客户端磁盘
- sql 语句中可以有变量吗???
- 悲哀!我将dbgredeh中的数据导入到excel中了,但不知怎样导入数据库中(同一个表)
- 老问题,IE 中使用 activx 组件,怎么获得调用它的IWebBrowser2?
- 百分请教!急救!delphi6中QReport组件中的QRPreview如何使用!!!
- hook是一个什么样的软件?
- 关于日期型的操作
- 有没有DELPHI5的BDE发布工具,不然还要装DELPHI!
- 控件显示问题
- 我的COM+组件为什么每次调用时都得到组件服务那里关闭再打开后才行?
begin
li_Term:=iTerm;
li_com:=iCom;
end;procedure suityou.Execute;
begin
{ Place thread code here }
ReadRealInfo(li_Term,li_Com);
inherited Create(False);
end;改:
{ suityou }constructor suityou.Create(iTerm, iCom: integer);
begin
li_Term:=iTerm;
li_com:=iCom;
inherited Create(False);
end;procedure suityou.Execute;
begin
{ Place thread code here }
ReadRealInfo(li_Term,li_Com);
end;
ReadRealInfo(li_Term,li_Com);其中Li_Term=1,2,3,4,li_Com=1
代码如何写?在Delphiz中的DEMO中有一段是这么写的:
procedure TThreadSortForm.StartBtnClick(Sender: TObject);
begin
RandomizeArrays;
ThreadsRunning := 3;
with TBubbleSort.Create(BubbleSortBox, BubbleSortArray) do
OnTerminate := ThreadDone;
with TSelectionSort.Create(SelectionSortBox, SelectionSortArray) do
OnTerminate := ThreadDone;
with TQuickSort.Create(QuickSortBox, QuickSortArray) do
OnTerminate := ThreadDone;
StartBtn.Enabled := False;
end;
//要用TNum1的ReadRealInfo()就:
with TNum1.Create(1, 1) do
OnTerminate := OnTNum1Done;//要用TNum2的ReadRealInfo()就:
with TNum2.Create(2, 1) do
OnTerminate := OnTNum2Done;//要用TNum3的ReadRealInfo()就:
with TNum3.Create(3, 1) do
OnTerminate := OnTNum3Done;//要用TNum4的ReadRealInfo()就:
with TNum4.Create(4, 1) do
OnTerminate := OnTNum4Done;其实我没有看明白你的第二问是问什么.如果说我回答的不是你要的,那么你再说清楚些.
ReadRealInfo(li_Term,li_Com);其中Li_Term=1,2,3,4,li_Com=1
代码如何写?你可以看看我开始发出的代码!你就别照着我给出的例程。
代码是你自己写的。
写:TNum1.Create(1, 1);那么TNum1的ReadRealInfo(1, 1)就会执行啊,以下的类推.线程建立以后,如果 inherited Create(False);那么Excute就会自动执行,你的Excute调用了ReadRealInfo,所以你的线程建立以后就会自动执行ReadRealInfo.明白了吗?