在Delphi中 新建一个控件台程序,它的程序界面有如下代码 program Project2; {$APPTYPE CONSOLE} uses

在Delphi中 新建一个控件台程序,它的程序界面有如下代码 program Project2; {$APPTYPE CONSOLE} uses,第1张

注释及示例代码如下:

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)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12401670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存