program Project3 //定义程序名
{$APPTYPE CONSOLE} //编译指令,指示当前程序是控制台程序
uses
SysUtils //引入系统函数单元,如果确实不需要其中的函数等,也可以不要
var //定凯枣义变量
i:Integer
s:string
_set:set of Char//集合类型
const
Author:string ='Jimmy'//常量字符串
resourcestring
Author2 = 'yjmyzz'//资源字符串
//定义一个过程
procedure MyProc(msg:string)
begin
Writeln('MyProc is Called by:' + msg)
end
//定义一个函数
function MyFunc(msg:string):string
begin
result := 'MyFunc is Called by ' + msg
end
//Main方法的开始
begin
WriteLn('Hello World')//输出,相当于c#中的Console.Writeln("xxx")
Writeln('')
for i:=0 to 10 do //循环
begin
s:= '这是数字' + IntToStr(i)
Writeln(s)
end
Writeln('--------------------------')
MyProc('jimmy')//调用过程
Writeln(MyFunc('Jimmy.Yang'))//调用函数
Writeln('盯渗拆--------------------------')
Writeln(Author) //输出常量
Writeln(Author2)//输出资源字符串
Writeln('--------------------------')
Writeln('Integer:')
Writeln(SizeOf(Integer))
Writeln(High(Integer))
Writeln(Low(Integer))
Writeln('--------------------------')
Writeln('i=' + inttostr(i))
Dec(i) //i减1,相当于i:=i-1
i:=i-1
Writeln('i=' + inttostr(i))
Writeln(Odd(i))
Writeln('--------------------------')
Writeln(FormatDateTime('yyyy年mm月dd日 hh:nn:ss',Now))
Writeln('--------------------------')
i:= Integer('A')
Writeln(i)
Writeln(Ord('a'喊闷))
Writeln(Chr(97))
Writeln(#10 + '按任意键退出...')
Readln //等待键盘输入
end.
这有很多方法,你可以在线程里面写个方法,方法里面的代码恰好是控件事件里面的代码就行啦,然后在线程run里面调用。但是如果窗口中的控件事件涉及到界面的刷新,则不应该在线程中调用,应该由线程发送一个消息给窗口,窗口捕获到该消息后,调用相散孙应控件的事件。下面是我的部分代码,可一参考:ShowCollectDataFrm.fShowTxt := '正在采集'+DataCollectFrm.fSelDevicer[i].TypeName+
'['+DataCollectFrm.fSelDevicer[i].ModelID+']'+'的数据,请稍候...'
PostMessage(ShowCollectDataFrm.Handle,WM_ThreadChangeMsg,Self.ThreadID,0)
这两句代码是在线程的run里面,是指线程运行到这里要更新窗口的提示信息,则发送一个消息到ShowCollectDataFrm,消息定义为WM_ThreadChangMsg。
const
WM_ThreadChangeMsg = WM_USER + 20
这是在嫌磨主窗体中定义的消息常量
procedure ThreadChange(var AMessage: TMessage)Message WM_ThreadChangeMsg
这是捕获消息的方法的定义,他是回调函数,不需要手动调用
procedure TShowCollectDataFrm.ThreadChange(var AMessage: TMessage)
begin
if fCollectThreadID = Cardinal(AMessage.WParam) then
begin
Application.ProcessMessages
lblShowTxt.Caption := fShowTxt//更改提示文字
Application.ProcessMessages
end
end
这是捕获到消息后的处理,你可以把里面改成你要调用的控件的事件,芹掘斗如:btnStopClick(nil)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)