delphi 中 怎么做线程单元里调用主窗口单元的控件事件 给个例子····

 我来答
qintingyue3
2011-10-10 · TA获得超过103个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:107万
展开全部
这有很多方法,你可以在线程里面写个方法,方法里面的代码恰好是控件事件里面的代码就行啦,然后在线程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)。
salausbeijing
2011-10-19
知道答主
回答量:33
采纳率:0%
帮助的人:24万
展开全部
1.解决多线程冲突:
定义一个对象A,类型为TCriticalSection;
进入临界区:A.Enter;离开:A.Leave;

2.多线程使用主窗口的事件,直接向主窗口控件发送事件即可;为了安全起见,定义一个过程ProcAAA,将发送事件的代码在该过程中实现,在线程中用Synchronize(ProcAAA)即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luckyso111
2011-10-10 · TA获得超过208个赞
知道大有可为答主
回答量:261
采纳率:0%
帮助的人:233万
展开全部
使用线程的时候,遇到的一个基本的问题,就是多个线程访问同

一个对象,比如访问相同的文件、DLL、相同的通讯资源,特别是数

据库的访问,当多个线程对同一数据库字段写入的时候,其结果会出

现不确定性。

临界区用于解决这个问题,它可以保证线程使用敏感数据的时候,

阻赛其他的线程访问名干数据,使用时首先要初始化,其声明一个

TRTLCriticalSection类型的变量:

var

CS:TRTLCriticalSection;

初始化:

initializeCriticalSection(cs);

独占

线程中的代码先
EnterCriticalSection(cs);

********************************************
在这儿写调用主窗口控件的代码就行了
*********************************************

后解除独占

LeaveCriticalSection(CS);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名_热心网友
2011-10-22 · TA获得超过719个赞
知道大有可为答主
回答量:3827
采纳率:0%
帮助的人:8400万
展开全部
在开发IE插件时,如何将自己的插件功能嵌入IE右键便捷菜单中得以实现?打开BitComet程序的选项,点击左侧“任务设置”中的“Http/Ftp下载”
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mit1208
2011-10-10 · TA获得超过2347个赞
知道大有可为答主
回答量:2743
采纳率:0%
帮助的人:1855万
展开全部
把主窗口单元的控件事件设置为public就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式