学习PASCAL小记(二)

第三个例子,用两视图去显示ini文件的数据。

一看到这个就用了poro类,也顾不了那么多了,把这样一个实体类建立起来,接着就想用了。找了很久没有发现有get/set生成coding的选项,只能自己一个一个属性地去添加它们的方法。当把这个类弄完之后,想起Pascal还有一个数据类型叫做record的没有用,到现在还未用。下一步要考究的课程。

下一步就去让delphi去连接ini文件,然后就是对ini文件的读。这个时候遇到一个TStrings类型,空上类型很有趣的,就像JAVA中的List这个接口一样,不可以创建的。声明ss变量,然后ss := TStringList.Create ;这样去创建对象。

读取ini文件的DAO

unit DAOUnt;

interface

uses

   StaffDM, IniFiles, Classes;

type

  TStaffDAO = class

  private

  var

     Staff : TStaff ;

     IniFile : TIniFile ;

  public

    function GetStaff(FileName,StaffID : string) : TStaff ;

    function GetStaffIDSet(FileName : string):TStrings ;

  end;

implementation

 

function TStaffDAO.GetStaffIDSet(FileName : string):TSTrings;

var

   ss : Tstrings ;

begin

      ss := TStringList.Create ;

      IniFile := TIniFile.Create(FileName) ;

      IniFile.ReadSections(ss);

      IniFile.free ;

      GetStaffIDSet := ss ;

end;

 

function TStaffDAO.GetStaff(FileName, StaffID : string) : TStaff ;

var

   str : string;

begin

  Staff := TStaff.Create() ;

  IniFile := TIniFile.Create(FileName);

  Staff.SetName(IniFile.ReadString(StaffID, 'name', '')) ;

  Staff.SetAge(IniFile.ReadInteger(StaffID, 'age', 0));

  IniFile.Free ;

  GetStaff := Staff ;

end;

end.

创建TiniFile对象,构造函数带上一个文件的路径名。下面显示为ini文件。

[section1]

name=张三

age=26

 [section2]

name=李四

age=26

上面读取ini文件的时候,用了两方法,第一个方法把sections读入到TStrings中,也是上面的ini文件中section1section2等这些字符串。为什么要放入TStrings类型中呢,为什么用这两个东西来封装这样的数据呢?因为这个在显示中很有用,很多控件在数据读取时很喜欢这样的数据类型。例如:CmbBoxDBTComboBox类型,CmbBoxDB.Items := ss ;就可以给空上组合框增加数据了;TreeViewDBTTreeView类型,TreeViewDB.Items.Add(nil,ss.Strings[i]) ;表示显示在树控件上,i表示循环中的i,也就是把TStrings看成一个数组,一个内容读出来的显示在树控件的节点上。

总结到现在,基大方面的知识点已经差不多了,有一个很让人头痛的问题就是内存的释放,创建了一个对象,它不会像JVM那样有一套很好的垃圾回收,你创建了什么对象,也就要释放什么对象。很令人心烦的,经常出错,经常的内存问题。这个必须去注意。

另个一个很有意思的就是工具栏:



 
结构:



 
要加上一个工具栏,先加上一个TCoolBar,然后加上一个TToolbar。下次记得在这个位置,不要错了,也不要浪费时间去找了。

 
我们看到的ToolButton是放在工具栏上面的,还有一个很特别的内容就是,这些Button里面可以加上一些图标。来自哪里?上面的结构有一个对象叫做ImageList1,这个就是存认所有图标的对象,让这个东西与TToolBar类型的一个Images属性,把ImageList1对象关联上去就可以了,在创建Button的时候,就会有一个ImagesIndex属性,选择索引就会快显示图标了。这个内容探索了很久很久。

对于ImageList1对象,加入图标很方便,如下图就可以了,注意格式ico的好。这个控件在上面的win32也能找到。

完了这个控件,还有一个组合框的,有一个小的知识点找了很久,就是设置默认显示,CmbBoxDB.ItemIndex := 0 ;这样设置。

最后,总结一下那个树控件,一个有用的就是找到选择的节点,把这个节点信息显示出来,这个事件是对TTreeView控件写的事件响应该,然后找到这个控件中被选择的树节点。

procedure TMainFrm.TreeViewDBClick(Sender: TObject);

var

    Node : TTreeNode ;

begin

       Node := treeViewDB.Selected ;

       ShowTreeStaff(Node.Text) ;

end;

 

好了,这个例子,就是熟悉vcl控件,还有一个就是对对象的创建与释放是一个很值得注意的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值