第三个例子,用两视图去显示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文件中section1与section2等这些字符串。为什么要放入TStrings类型中呢,为什么用这两个东西来封装这样的数据呢?因为这个在显示中很有用,很多控件在数据读取时很喜欢这样的数据类型。例如:CmbBoxDB为TComboBox类型,CmbBoxDB.Items := ss ;就可以给空上组合框增加数据了;TreeViewDB为TTreeView类型,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控件,还有一个就是对对象的创建与释放是一个很值得注意的问题。
相关推荐
想学pascal的不下白不下,fp还是pascal的最佳选择。
Pascal精要.学习PASCAL语言的好文档,尤其想对DELPHI入门的兄弟,非常有好处的
从浅入深掌握pascal编程技术.第一节 从浅入深掌握pascal编程技术.第二节 ... ... 从浅入深掌握pascal编程技术.第二十七节
pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全pascal函数大全...
Pascal教程的学习,比较基础,简单,如果想了解,赶紧下载吧!多学一点
《Object Pascal Reference (中英文对照)》,原文出自Delphi6,CHM格式,1.6M,完全免费。发布时间:2002年10月10日。
网上下载到的Pascal学习资料,与要学习Pascal的同志分享。
这里整合了pascal初赛所需的所有内容,轻松学习pascal
Pascal转C++学习笔记——1.基本知识
第二章: 编写Pascal代码 第三章: 类型、变量及常量 第四章: 用户自定义数据类型 第五章: 语句 第六章: 过程与函数 第七章: 字符串操作 第八章: 内存 第九章: Windows编程 第十章: Variant类型 第十一章: ...
本书按照全国青少年信息学奥林匹克竞赛要求编写,立足于Free Pascal程序设计语言的普及和应用。
Pascal语言基础知识,下载下来好好学习吧,奉献了
编译原理 Pascal 编译器 Pascal语言实现 编译原理 Pascal 编译器 Pascal语言实现 编译原理 Pascal 编译器 Pascal语言实现 编译原理 Pascal 编译器 Pascal语言实现
经典的PASCAL语言编程开发工具,学习PASCAL语言课程必备。 Turbo Pascal 是由Borland公司设计、研制的一种适用于微机的Pascal语言应用开发集成环境。该产品由1983年推出1.0版本发展到1992年推出的7.0版本,功能...
pascal精要很经典的一本介绍pascal的电子书~
Pascal 教程 第一章 简单程序 2 第一节 Pascal 程序结构和基本语句 2 第二节 顺序结构程序与基本数据类型 6 第二章 分支程序 10 第一节 条件语句与复合语句 10 第二节 情况语句与算术标准函数 12 第三章 循环程序...
以前学习时用的,不过现在不好找了 留作存档吧。
这个是Pascal Script控件,能够在运行的时候解释运行
pascal程序
这里小编收集整理的关于Pascal的相关学习资料基本上都在这里额,有了这些基本上入门没问题了,包括Pascal小书、ObjectPascal中文手册等等. 目录 Delphi Object Pascal中英文手册.chm ObjectPascal中文参考手册.pdf ...