摘要:我们为了将hint显示在statusbar1上需要如下方法
public
procedure displayhint(sender: tobject);
end;
var
form1: tform1;
implementation
{$r *.dfm}
{ here is the implementation of the onhint event handler }
{......
摘要:在应用程序的开发中,常常要将某些控件对象(如标签)用鼠标选中后进行拖动操作,用以改变控件的位置,在delphi中如何实现这一功能呢?笔者想了一个方法:通过在 public 中定义全局变量用以跟踪 鼠标在移动和拖动控件时的坐标,然后在拖动结束时将鼠标的坐标值赋给控件的 top和left属性,以达到拖动的目的。
举例如下:创建一个 panel,再创建一个label,通过编程使控件 lable 可......
Delphi中实现多线程同步查询 优秀的数据库应用应当充分考虑数据库访问的速度问题.通常可以通过优化数据库.优化 查询语句.分页查询等途径收到明显的效果.即使是这样,也不可避免地会在查询时闪现一个带有 sql符号的沙漏,即鼠标变成了查询等待.最可怜的是用户,他(她)在此时只能无奈地等待.遇到急性子的,干脆在此时尝试 windows中的其它应用程序,结果致使你的数据库应用显示一大片白色的窗口.真是无奈!
本文将以简单的例子告诉你如何实现线程查询.还等什么,赶快打开delphi对照着下面的完整源代码试试吧. 在查询时能够做别的事情或者取消查询,这只是基本的线程查询,在你阅读了delphi有关线程帮助之后能立刻实现.这里介绍的是多个线程查询的同步进行. 【程序编程相关:
让Fastreport3.x支持中文PD】 【推荐阅读:
序列化FastReport
】
在delphi数据库应用中,都有一个缺省的数据库会话 session.通常情况下,每个数据库应用中只有这一个会话.无论是查询函数修改数据,在同一时间内只能进行其中的一件事情, 而且进行这一件事情的时候应用程序不能响应键盘.鼠标以及其它的 windows消息.这就是在 窗口区域会显示一片空白的原因所在.当然,只要将查询或数据操纵构造成线程对象,情况会好一些,至少可以接受窗口消息,也可以随时终止查询或数据操纵,而不会在屏幕上显示出太难看的白色.不过,这只是解决了问题的一部分.假如在进行一个线程查询的时候,用户通过 按钮或菜单又发出了另一个查询的命令,这可如何是好,难道终止正在执行的数据库访问吗? 解决之道就是:多线程同步查询. 【扩展信息:
在TWebBrowser 屏蔽右键的弹出】
实现多线程同步查询的基本思想是,为每一个查询组件(如tquery组件)创建一个独占的 数据库会话,然后各自进行数据库访问.需要特别注意的是,因为delphi中的 vcl组件大多都 不是线程安全的,所以应当在线程查询结束后再将datasource组件与查询组件关联,从而显示 在dbgrid组件中.
下面的例子只实现了静态的线程同步查询,即线程对象是固定的,并随窗体的创建与销毁 而创建与销毁.你可以就此进行改进,为每一个数据查询或数据操纵命令创建一个单独的线程对象,从而达到多线程同步查询的目的.
注意:应用程序中的线程不是越多越好,因为线程将严重吞噬cpu资源,尽管看上去并不明显.谨慎创建与销毁线程将避免你的应用程序导致系统资源崩溃.
下面的例子给出了同时进行的两个线程查询....
下一页 摘要:single, double和extended型的浮点变量存在着四舍五入问题。举个例子,假设我们用电脑使用4位数字,那么:
1 / 3 = 0.3333
我们知道3 * 1/3 = 1,但如果我们这样:
x := 1 / 3;
x := x * 3;
if x = 1 then //结果将会不正确
为什么?因为x = 0.9999而不是1。
电脑不会有无限的小数位。从s......