当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 优秀的数据库应用应当充分考虑数据库访问的速度问题。
 

 

 ·将hint显示在statusbar1上    »显示摘要«
    摘要:我们为了将hint显示在statusbar1上需要如下方法 public procedure displayhint(sender: tobject); end; var form1: tform1; implementation {$r *.dfm} { here is the implementation of the onhint event handler } {......
 ·在delphi应用程序中拖动控件    »显示摘要«
    摘要:在应用程序的开发中,常常要将某些控件对象(如标签)用鼠标选中后进行拖动操作,用以改变控件的位置,在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......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE