⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9915.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 4 页
字号:
===========================================================

                         《编 程 技 术》

               一份属于广大编程爱好者的电子杂志

             这是一份完全关于探讨编程的免费电子杂志
             您可以任意传播本刊,但必须保持它的完整
            本刊承诺绝不向订户发送任何形式的垃圾邮件!
===========================================================     
           第15期 99/07/04          本期发送数: 2067 
===========================================================

<本期栏目>
 *刊首语*
 *雕虫小技*
    C++Builder 3技巧 
 *技术文档*
    用DELPHI实现状态栏上的工具条
    如何在Delphi4 BDE中配置Access数据库
    用DirectDraw编写动画程序
    如何在C++Builder中检测硬件 
 *疑难杂症*

***********************************************************

<刊首语>
    
    本人从今天开始正式进入暑假了,呵呵,爽! 今后我将有更多时
间为大家搜索一些实用文章了。也有更多的时间和大家交流了。
    最近不少朋友都建议我多提供一些C++Builder的文章,其实我现
在也在学这个东东,我的感觉就是确实简单易用,很容易上手。但因
为没有VB、VC等那么“历史悠久”,所以相关的文章资料确实非常少
我也是心有余而力不足。当然我会竭尽所能,不惜在电话账单上出现
天文数字的代价,为C++Builder的用户(其实也为自己)多搜寻些相
关文章。本期就有我吐血找到的两篇,希望您能可怜哦是喜欢。

***********************************************************
***********************************************************

<雕虫小技>

                         C++Builder 3技巧 

                         (成都 陈寒秋)


  Insprise公司(原Borland公司)推出的C++ Builder 3.0是新一代的
基于C语言的可视化开发工具。但由于它推出的时间不长,所以有关它的资料
不是很多。在这里,我向大家介绍一些使用C++ Builder 3.0编程的技巧。
  (一):读写注册表。
  现在的Windows程序大都使用了注册表来存储软件的配置信息。C++ 
Builder 3.0中给我们提供了一个TRegistry类帮助我们管理注册表,它有以
下几个常用的方法:
  OpenKey   打开一个键值
  ReadBool 从注册表中读取布尔值
  ReadInteger 从注册表中读取整型值
  ReadString  从注册表中读取字符串值
  WriteBool  向注册表中写入布尔值
  WriteInteger 向注册表中写入整型值
  WriteString  向注册表中写入字符串值
  代码演示:
  TRegistry &regkey=*new TRegistry();
  regkey.OpenKey(“software\myapp”,true);
  regkey.WriteInteger(“Max”,100);
  int x=regkey.ReadInteger(“Max”);
  delete &regkey;
  注意:使用TRegistry类时应包含头文件。
  (二):模仿超级链接。
  用过Winamp的朋友知道Winamp的界面中有一些模仿的超级链接,可以把你
直接带到它的相关网站中去。下面这个例子就实现了这种功能,当鼠标点击其
中的仿超级链接时,你就会直接到达《电脑商情报》的网址:
  新建一个应用,在窗体Form1上添加一个名为Label1的TLabel组件,然后
在代码编辑器中添加以下代码:
  void __fastcall TForm1::FormCreate(TObject *Sender)
  {
   Label1→Cursor=crHandPoint;
   Label1→Font→Color=clBlue;
   Label1→Font→Style=Label1→Font→Style< Label1→Caption=“http://www.cbinews.com”;
  }
  
  void __fastcall TForm1::Label1Click(TObject *Sender)
  {
   ShellExecute(Handle,NULL,Label1→Caption.c_str(),NULL,NULL,SW_SHOWNORMAL);
  }
  
  void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
   int X, int Y)
  {
   Label1→Font→Color=clRed;
  }
  
  void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
   int X, int Y)
  {
   Label1→Font→Color=clBlue;
  }
  注意:本示例应该包含头文件。
  (三)取得Memo的行和列
  新建一个应用,在窗体Form1上添加两个TLabel组件名为Label1,Label2;
添加两个TButton组件名为Button1,Button2;添加一个TMemo组件名为Memo1。
然后在代码编辑器中添加以下代码。
  void __fastcall TForm1::Button1Click(TObject *Sender)
  {
  Label1→Caption=SendMessage(Memo1→Handle,EM_LINEFROMCHAR,-1,0)+1;
  }
  
  void __fastcall TForm1::Button2Click(TObject *Sender)
  {
  Label2→Caption=Memo1→SelStart-SendMessage(Memo1→Handle,EM_LINEINDEX,-1,0)+1;
  }
  这种方法同样适用于RichEdit。
  
***********************************************************
***********************************************************

<技术文档>
             
                    用DELPHI实现状态栏上的工具条 

                           (成都 邓波)

  Inprise(即以前的Borland)公司的新一代编程语言Delphi是一种非常优
秀的编程工具,它丝毫不逊于Microsoft公司的Visual BASIC和Visual C++,
尤其是它在数据库管理方面的特长深受广大程序员的喜爱。
  当今,软件开发商们已经开发出了多种类型的关系数据库系统,如Borland
公司自身设计的dBASE、paradox、Interbase,Microsoft公司的Foxpro、Access、
SQL Server以及其它像Sybase、Oracle、DB2等成熟的产品。面对如此众多的选
择,Delphi通过其自带的数据库引擎BDE对它们以及任何ODBC数据源提供了很好
的支持。只需很少的设置步骤,开发者不用修改任何数据库的结构就能直接引
用数据库对象。综合起来说,BDE有以下几点优势:
  1. 使用BDE使开发客户机/服务器的数据库应用更加方便,数据库应用程序
不仅可访问本地数据库,也可访问远程的大型数据库。
  2. 内建的标准数据库paradox使数据库格式更加紧凑,使用更高效。
  3. 通过别名(Aliase)的设置,允许数据库直接、灵活地访问数据源,多
个数据库应用可访问同一个数据库文件。
  4. BDE能够共享不同数据库之间的数据,支持它们之间的相互转化,例如
Access到paradox的数据复制;甚至建立Interbase和Oracle表之间的一对多关系。
  5. 通过对查询语言SQL的支持,使用户定义和访问数据库的能力更加强大。
  笔者注意到许多新接触Delphi的人对怎样设置BDE还不甚了解,因此,在此
为大家具体说明BDE在数据库程序中的配置,以Delphi4中引用MSACCESS数据库为
例。
  启动BDE Administrator需选择Windows 98的
“开始\程序\Borland Delphi 4\BDE Administrator”来启动,显示出BDE管理者
窗口。窗体左边有两页,分别是数据库别名页(Databases)和配置页Configuration)。
选择配置页,单击Configuration左边的加号展开两层目录树,可以看见安装在缺
省路径下的所有种类的本地(Native)数据库驱动程序。选择相应的数据库种类,
就会在右边列出它的配置情况。用同样的方法也可以看到ODBC的配置情况。从中
可以看到MSACCESS有VERSION、TYPE、DLL32、DATABASE NAME、USER NAME、
OPEN MODE、LANGDRIVER等几个主要的属性,其中用黑体表示不可更改,下面是
它们的一些设置方法:
  1. VERSION属性
  Access驱动程序的内部版本号,由系统自动生成,不可更改。
  2. TYPE属性
  当前驱动程序可以连接的服务器种类。它通常有两个值可选:SERVER(SQL服
务器和FILE(标准文件服务器),由系统自动生成,不可更改。
  3. DLL32属性
  驱动程序的32位动态链接库名。缺省的IDDA3532.DLL适用于Access 97,
IDDAO32.DLL适用于Access 95和Jet Engine 3.0。
  4. DRIVER FLAGS属性
  驱动程序内部产品标识。
  5. TRACE MODE属性
  通过数位值设置需纪录的日志量。
  6. DATABASE NAME属性
  Access数据库文件的访问路径。
  7. USER NAM属性
  访问数据库的缺省用户名,通常不予设置。
  8. OPEN MODE属性
  确定数据库打开时的状态,READ/WRITE或READ ONLY。这将影响到数据访问的
权限。
  9. LANGDRIVER属性
  语言驱动程序定义了数据库使用的语言种类,用于选择与数据库纪录文本一致
的语言种类。
  10.SYSTEM DATABASE属性
  指定打开系统安全数据库的路径,当驱动程序的上载或下载时这个改变将产
生影响。现在我们为Delphi应用程序配置一个新的Access数据库ALesson。选择
BDE管理器的Object下拉菜单中的New,在弹出的窗口中选择MSACCESS。之后在
Databases页面内会增加新的数据库项目,为它输入新的别名ALesson,在以后
的数据库程序中将直接引用其别名。选择ALesson,在右边的Definition页面中
点击DATABASE NAME项输入ALesson.mdb的路径,其它项目则置为默认值。在左
边ALesson别名上点击鼠标右键,选择弹出菜单中的应用(Apply),存储所有
的设置。这样,ALesson库就与BDE连结起了。
  在程序中只需在Table组件的DatabaseName属性中选择ALesson就行了。除
此之外,Access还可以通过ODBC的数据源来设置,也可达到同样的目的。

***********************************************************

                     如何在Delphi4 BDE中配置Access数据库 

                              (福建 许晓明)

  在使用Netscape的navigator时不知你有没有注意到:在它的状态栏有一组按钮,
这使我们能很方便地打开另一个窗体,更有效地利用时间(要知道网上冲浪时间就是
金钱啊!)。
  接下来我要讲的是如何在我们的程序中加入此功能,我们可以用DELPHI很轻易
地实现,在DELPHI中我们可以指定某个Twincontrol类(如Ttoolbar)的父级为另一个
Twincontrol(这里是Tstatusbar),然后通过动态创建Ttoolbar就可以在Tstarbar上
创建TToolbar了,并且为工具条(Toolbar)添加按钮及其事件,通过调用API中的
winexec实现对Window的应用程序的调用。下面给出了详细的代码和注释给大家分享。
  unit superbar;
  interface
  uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
Dialogs,ComCtrls;
  type
   TForm1 = class(TForm)
   StatusBar1: TStatusBar;{为窗体添加一个状态栏}
   procedure FormCreate(Sender: TObject);
   private
   {声明以下过程}
   procedure createsuperbar(sender:Tobject;Imagelist:TImagelist);
   {创建工具条}
   procedure createbutton(toolbar:TToolbar;Const ButtonCaptions: array of String);
   {创建工具条的按钮}
   procedure superbuttonclick(sender:Tobject);
   {为工具条按钮添加事件}
   public
   end;
  var
   Form1: TForm1;
   toolbar:TToolbar;
  implementation
  uses shellapi,commctrl;{注意要加入此句,否则程序运行无法通过}
  {$R *.DFM}
  procedure TForm1.createsuperbar(sender:Tobject;Imagelist:Timagelist);
  begin
   toolbar:=TToolbar.Create(self);{动态创建一个工具条}
   with toolbar do
   begin
   parent:=statusbar1;{定义toolbar的父类为状态栏,这样就可以创建出状态栏的工具条了}
   top:=1;left:=1;height:=18;
   buttonheight:=16;buttonwidth:=16;{定出toolbar和toolbutton的宽度长度};
   flat:=true;autosize:=true; {设置toolbutton为浮动形式}
   images:=imagelist;{设置toolbutton的图标}
   {使工具条可以脱离状态栏.注意:如果你用的是DELPHI3.0需删除此两句,即可用}
   dragkind:=dkdock;
   dragmode:=dmautomatic;
   end;
  end;
  procedure TForm1.createbutton(Toolbar:TToolbar;Const ButtonCaptions: array of String);
  var
   I,m: Integer;
  begin
   m:=0;
   for I := 0 to High(ButtonCaptions) do

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -