易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi的TThread类

 Delphi的TThread类
http://bigpower.blog.51cto.com/209892/89525
我们常有工作线程和主线程之分,工作线程负责作一些后台操作,比如接收邮件;主线程负责界面上的一些显示。工作线程的好处在某些时候是不言而喻的,你的主界面可以响应任何操作,而背后的线程却在默默地工作。
VCL中,工作线程执行在Execute方法中,你必须从TThread继承一个类并覆盖Execute方法,在这个方法中,所有代码都是在另一个线程中执行的,除此之外,你的线程类的其他方法都在主线程执行,包括构造方法,析构方法,Resume等,很多人常常忽略了这一点。
最简单的一个线程类如下:
TMyThread = class(TThread)
protected 
   procedure Execute; override; 
end; 
在Execute中的代码,有一个技术要点,如果你的代码执行时间很短,像这样,Sleep(1000),那没有关系;如果是这样Sleep (10000),10秒,那么你就不能直接这样写了,须把这10秒拆分成10个1秒,然后判断Terminated属性,像下面这样: 
procedure TMyThread.Execute; 
var
    i: Integer; 
begin 
   for i := 0 to 9 do 
     if not Terminated then 
       Sleep(1000) 
     else
        Break;
end;
这样写有什么好处呢,想想你要关闭程序,在关闭的时候调用MyThread.Free,这个时候线程并没有马上结束,它调用WaitFor,等待 Execute执行完后才能释放。你的程序就必须等10秒以后才能关闭,受得了吗。如果像上面那样写,在程序关闭时,调用Free之后,它顶多再等一秒就会关闭。为什么?答案得去线程类的Destroy中找,它会先调用Terminate方法,在这个方法里面它把Terminated设为True(仅此而已,很多人以为是结束线程,其实不是)。请记住这一切是在主线程中操作的,所以和Execute是并行执行的。既然Terminated属性已为 Ture,那么在Execute中判断之后,当然就Break了,Execute执行完毕,线程类也正常释放。 
或者有人说,TThread可以设FreeOnTerminate属性为True,线程类就能自动释放。除非你的线程执行的任务很简单,不然,还是不要去理会这个属性,一切由你来操作,才能使线程更灵活强大。
接下来的问题是如何使工作线程和主线程很好的通信,很多时候主线程


相关文档:

Delphi图像处理

前言
    尽三年来,本人陆续写了六十多篇BOLO文章,其中绝大部分是有关图像处理的,因此,有人戏称我为图像处理专家(或GDI+专家),此戏称当然是对我的赞扬,但我自己却觉得略含一丝丝贬义,即除了图像处理,别的方面(如网络、数据库等)都不咋的,事实也确实如此。
    我是一名机关工 ......

给Delphi控件设一个图标

方法一:
控件类叫做   TABC,文件名叫 abc.pas 那么新建立一个文件叫
abc.rc
里面内容是
TABC Bitmap icon.bmp
icon.bmp 就是图片文件名,不要超过256色,24x24
然后在命令行下执行 brcc32 abc.rc就会生成 abc.res
改名为 abc.dcr
打开你控件的 dpk文件, 加上 {$R ABC.DCR}
重新编译就可以了。
便捷方 ......

用delphi 在Word上面增加一个按钮

新建一个Active Library
2. 新建一个COM Object,在Class Name填一个名字,如Test。
点一下Implemented Interface后面的List按钮。再点一下对话框中的Add Library按钮,
选择“Program Files\Common Files\Designer”目录下的msaddndr.dll文件。
然后在列表中找到msaddndr.dll里面的_IDTExtensibility2接口点 ......

delphi中Webbrowser问题收集

 delphi中Webbrowser问题收集
获得网页中变量值     htm中<script> var currID=123</script>     程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID     值得说明的是,变量可以是javascript定义的,也可以是vbs ......

总结一下delphi中SQL语句中引号

总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法以及SQL语句中日期格式的表示(#)、('')
在Delphi中进行字符变量连接相加时单引号用('''),又引号用('''')表示
首先定义变量
var
AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某些情况下不对
AnIntStr:string='456'; ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号