Windows、Linux、Unix应用开发
1.开始前的准备工作

1.1.Qt简介
  Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt,基于 Framebuffer的Qt Embedded,快速开发工具Qt Designer,国际化工具Qt Linguist等部分Qt支持所有Unix系统,当然也包括linux,还支持 WinNT/Win2k,Win95/98 平台。
  Trolltech 公司在 1994 年成立,但是在 1992 年,成立 Trolltech 公司的那批程序员就已经开始设计 Qt 了,Qt 的第一个商业版本于 1995 年推出然后 Qt 的发展就很快了。
  基本上,Qt同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但QT最大的优点是跨平台特性:Qt支持Microsoft Windows 95/98, Microsoft Windows NT, MAC,linux,Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
  但是真正使得Qt在自由软件界的众多 Widgets (如lesstif,Gtk,EZWGL,Xforms,fltk 等等)中脱颖而出的还是基于 QT 的重量级软件 KDE。
  如果用户使用 C++,对库的稳定性,健壮性要求比较高,并且希望跨平台开发的话,那么使用 Qt 是较好的选择。
  Qt现在的版本是4.6.2。有商用License和FreeLicense。但是值得注意的是,虽然 Qt的 Free Edition 采用了 GPL 宣言,但是如果你开发Windows 上的 Qt 软件或者是 Unix 上的商业软件,还是需要向 Trolltech 公司支付版权费用的。
Tags: , , ,

KOL-CE TKOLListView的用法

[不指定 2009/10/21 13:42 | by 袁旭东 ]
  使用KOL-CE后,就不能使用Lazarus自带的可视化控件了,而KOL控件的使用方法与标准的Lazarus控件有些不同,因此有必要针对我使用过程中遇到的问题说明一下。这次要说的是,ListView控件,在KOL-CE里叫做KOLListView。最常用到的方法就是往控件中增加数据行,用到了LVItemAdd方法。用法参考以下代码,我就不用文字描述了。

procedure TfrmMain.ShowClientInfo(cid: string);
begin
   lvClient.Clear;
   qryMain.SQL.Text := 'select cname,contact,tel,mobile,address,complete from clients where cid=' + cid;
   qryMain.Open;
   lvClient.LVItemAdd('名称');
   lvClient.LVItems[0,1] := qryMain.Fields[0].AsString;
   lvClient.LVItemAdd('联系人');
   lvClient.LVItems[1,1] := qryMain.Fields[1].AsString;
   lvClient.LVItemAdd('电话');
   lvClient.LVItems[2,1] := qryMain.Fields[2].AsString;
   lvClient.LVItemAdd('手机');
   lvClient.LVItems[3,1] := qryMain.Fields[3].AsString;
   lvClient.LVItemAdd('地址');
   lvClient.LVItems[4,1] := qryMain.Fields[4].AsString;
   lvClient.LVItemAdd('是否完成');
   if qryMain.Fields[5].AsString = '0' then
      lvClient.LVItems[5,1] := '否'
   else
      lvClient.LVItems[5,1] := '是';
   qryMain.Close;
end;

Tags: , ,

Lazarus编译文件减肥

[不指定 2009/08/16 17:39 | by 袁旭东 ]
  什么是Lazarus?Lazarus是Free Pascal 的IDE,与Delphi非常的类似,操作方式和界面几乎一模一样。与Free Pascal 一样,Lazarus是一个开源项目。Lazarus相比Delphi有很多优点,比如:跨平台、支持的操作系统极为丰富、可在同一操作系统下交叉编译生成不同操作系统的程序等。

  Lazarus有如此多的优点,使用的人在渐渐多起来。每一位第一次使用Lazarus的人都会遇到这样一个问题——为什么Lazarus编译出来的可执行文件如此之大,不写任何代码,编译出来的就有11兆之巨,而Delphi同样情况编译出来的就只有500多K。实际上Lazarus也可以编译出比较小的文件,只要简单的设置就可以。

  运行Lazarus(我安装的是Lazarus 0.9.27测试版,以下就以此版本为例),点开“工程”->“编译选项”,在出现的对话框中点“链接”标签,将“当出现错误时显示行号”前面的对勾去掉,确定保存设置。按照上面的设置,重新编译一下工程文件,编译出来的程序文件就减小到1.7兆了。如果想继续压缩,那么就该使用UPX之类的压缩工具了。我用Lazarus自带的UPX压缩了一下,减小到了600多K,差不多可以接受了。

  如果想进一步减少生成的程序文件体积,那么只能用KOL了。

Tags: , , ,
  很久没写博客了,因为实在没什么东西可写。不过,今天以前的同事问我,关于TreeView的操作,那我就顺便写在博客里,稍微展开一下,说说TreeView吧。

  TTreeView是VCL里面一个类,也是我们经常会用到的,而且功能也是很强大的。与TreeView相关的一个极其重要的类就是TTreeNode,我们下面的操作,几乎都是在围绕着它进行的。下面直接切入正题,要实现节点间的拖动,都需要实现哪几个事件呢?
引用
首先,要实现 OnMouseDown ,在其内要写入开启拖动的代码。
然后,要实现 OnDragOver ,其主要作用是在拖动过程中,实现对节点拖动目的(di)的控制。
最后,要实现 OnDragDrop ,其是实现拖动释放的操作。
Tags:

Delphi获取文件版本号

[不指定 2009/04/10 23:16 | by 袁旭东 ]
  曾经在写的一个程序里面用到过,今天又用到了,顺便写在这里。
引用
procedure TfrmMain.FormShow(Sender: TObject);
var
   BufSize, Len: DWORD;
   Buf, Value: PChar;
begin
   BufSize := GetFileVersionInfoSize(PChar(Application.ExeName), BufSize);
   if BufSize > 0 then
   begin
      Buf := AllocMem(BufSize);
      GetFileVersionInfo(PChar(Application.ExeName), 0, BufSize, Buf);
      if VerQueryValue(Buf, PChar('StringFileInfo\080403A8\ProductVersion'), Pointer(Value), Len) then
         Self.Caption := Self.Caption + ' ' + Value;
   end;
   Application.Title := Self.Caption;
end;

Tags:
  今天好容易有了一个比较轻松的下午,好久没有用Delphi做东西了,今天正好写一个小工具。小工具使用TADOQuery对数据库进行存取,并且使用到了TMemo控件。大家都知道,TMemo控件与TEdit控件的区别就是,TMemo控件是多行文本输入框,允许有回车。当我们update TMemo.Text的时候,会提示错误,具体错误忘记是什么了,造成错误的原因就是TMemo.Text中有回车。

  解决问题的方法,修改TADOQuery的ParamCheck属性为False,即可解决问题。顺便说一下,为了防止TMemo自动增加换行,需要将TMemo的WordWrap属性修改为False。
Tags: ,

Delphi读写INI文件

[不指定 2009/03/26 16:59 | by 袁旭东 ]
  今天为了导用户库,用Delphi写了一个小工具,其中用到了ini文件保存数据库连接参数,所以这里顺便写写Delphi如何对ini文件进行操作。

  第一步就是要uses IniFiles;

  然后就是定义一个TIniFile对象;

  接下来就是调用TIniFile对象的方法进行读写了;

  最后是释放资源。
Tags: ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]