随笔分类 -  Delphi

摘要:Ribbon_窗体_实现Ribbon风格的窗体随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格。那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的。首先,delphi本身并没有Ribbon风格的窗口可以直接拿来使用,而市面上很多类似于Ribbon的风格都是用截图法做出来的,那样做很麻烦,而且对于图片的控制要求非常高。这样无疑是增加了软件的成本,这里介绍的方法是使用第三方控件,DevExpress Bar 6 来完成Ribbon风格的界面。首先下载并安装DevExpress Bar 6,注意必须是6,以往的版本没有R 阅读全文
posted @ 2013-06-17 13:43 麦麦提敏
摘要:一名Delphi程序员的开发习惯有关开发习惯的一些想法,如鲠在喉,不吐不快。究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些建议,或者参考(希望不是误人子弟)。同时,也希望各位能够就我的这些陋习,发表一点看法,给出批评和指正的意见。谢谢。一.建立工程目录首先,第一步要做的,当然是给新项目建一个单独的目录(别笑)。目录名称与项目名称同名,或者另取一个也可,只要清楚、简练。然后,在此目录中创建以下各个目录:<Doc>:用来存放该项目相关的开发文档(需求说明,概要设计,详细设计等等等等);<Source>:用来存放Delphi源程 阅读全文
posted @ 2013-06-14 10:37 麦麦提敏
摘要:Delphi語法筆記单元 程序头:uses(子句列出了那些链接到程序的单元),block(声明,命令语句)一个程序包括:• 一个程序头(program heading)• 一个uses 子句(可选),和• 一个包含声明和命令语句的块(block)一个单元以单元头(unit heading)开始,后面跟interface、implementation、initialization和finalization 部分,后面两个部分是可选的一个uses 子句可以出现在:• 程序或库的工程文件• 单元的接口部分,和• 单元的实现部分在单元声明以及uses 子句中(尤其是在Linux 下),单元名称必须和文 阅读全文
posted @ 2013-06-14 10:34 麦麦提敏
摘要:delphi 公共函数让TDBNavigator变透明procedure TForm1.Button1Click(Sender: TObject);var i : Integer; x : Integer;begin for i := DBNavigator1.ControlCount - 1 downto 0 do begin x := DBNavigator1.Left + DBNavigator1.Controls[i].Left; with DBNavigator1.Controls[i] do begin Parent := DBNavigator1.Parent; Left := 阅读全文
posted @ 2013-06-14 10:30 麦麦提敏
摘要:很多系统都有类似于如下的表结构(table1):IDName ParentID---------------------------------------------------------001 电子类0002金属类 0003 电容电子 001004 电阻电子 001005 有色金属002而且大家都习惯于用树(TreeView)来显示,这样就可以很好的显示整个表的分类情况。但如果数据量多时会造成树的生成比较慢,特别是用递归来实现时要访问数据库的次数很多(根据层数),用在三层中效果更加显。在此提供一个好的方法来生成树形结构。这个算法只访问一次数据库,具体的实现如下:1、一次性从数据库中取出所 阅读全文
posted @ 2013-06-02 20:45 麦麦提敏
摘要:Dephi XE 编译后执行文件的路径怎么改在右侧树形结构,的工程目录下,有个Build Configurations,下面的Debug 和 Release上右键,选Edit...,在弹出的对话框中的最后一个选项即是 Output Directory 是Exe目录 Unit Output directory 是 dcu目录 阅读全文
posted @ 2013-05-30 12:10 麦麦提敏
摘要:Delphi开发DLL1.一般工程文件的头标用program关键字,而DLLs工程文件头标用library 关键字。不同的关键字通知编译器生成不同的可执行文件。用program关键字生成的是.exe文件,而用library关键字生成的是.dll文件; 2.假如DLLs要输出供其它应用程序使用的函数或过程,则必须将这些函数或过程列在exports子句中。而这些函数或过程本身必须用export编译指令进行编译。 根据DLLs完成的功能,我们把DLLs分为如下的三类:1.完成一般功能的DLLs;2.用于数据交换的DLLs;3.用于窗体重用的DLLs。一 Dll的制作一般分为以下几步:1 在一个D.. 阅读全文
posted @ 2013-05-30 12:05 麦麦提敏
摘要:Delphi AnimateWindow用法 淡入淡出窗口在OnShow加入弹出式窗口事件: procedure TForm1.FormShow(Sender: TObject);begin ANimateWindow(Handle,200,AW_SLIDE+AW_HOR_NEGATIVE);end; 关掉窗口滑动事件在OnClose加入: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin ANimateWindow(Handle,200,AW_SLIDE+AW_HOR_POSITIVE+AW 阅读全文
posted @ 2013-05-29 13:01 麦麦提敏
摘要:http://blog.csdn.net/zhnglicho/article/details/6760912 ini 文件是基于文本类型的格式文件,用于存储程序初始化和配置数据。 .ini文件是有段(Sections)和键(key)组成的,每个文件可以有 n个段(每个段有方括号括起来),每个段可以有m个键,大致格式如下: [secontion] Ke... 阅读全文
posted @ 2013-05-29 12:50 麦麦提敏
摘要:动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等。同时,DLL还为不同语言间代码共享提供了一条方便的途径。因而DLL在编程时应用较为广泛,本文将介绍如何在 Delphi 中建立和使用DLL。 一.DLL 库内存共享机制 从使用效果看,DLL和unit 很像,它们都可以被别的工程模块所调用,但二者在内部的实现机制上确存在着差别。如果一个程序模块中用uses语句引... 阅读全文
posted @ 2013-05-29 12:44 麦麦提敏
摘要:版本标识:VER10 : Turbo Pascal 1VER20 : Turbo Pascal 2VER30 : Turbo Pascal 3VER40 : Turbo Pascal 4VER50 : Turbo Pascal 5VER60 : Turbo Pascal 6VER70 : Turbo Pascal 7 / Borland Pascal 7VER80 : Delphi 1VER90 : Delphi 2VER100 : Delphi 3VER110 : ?VER120 : Delphi 4VER130 : Delphi 5VER140 : Delphi 6VER... 阅读全文
posted @ 2013-05-29 11:39 麦麦提敏
摘要:Delphi 的编译指令(2): 条件语句的更多用法1. $IFDEF 等同于 $IF DEFINED(...) :它们的结束分别是: $ENDIF、$IFEND; 例子中的 VER200 是 Delphi 2009 的标识.begin{$IFDEF VER200}ShowMessage('这是 Delphi 2009');{$ENDIF}{$IF DEFINED(VER200)}ShowMessage('这是 Delphi 2009');{$IFEND}end;2. $IFNDEF 等同于 $IF NOT DEFINED(...) :它们的结束分别是: $EN 阅读全文
posted @ 2013-05-29 11:38 麦麦提敏
摘要:Delphi 的编译指令(1): $DEFINE、$UNDEF、$IFDEF、$ELSE、$ENDIF一个程序从无到有的过程是这样的: 编辑代码 -> 预处理 -> 编译(成dcu等) -> 链接(为exe等).什么是预处理?譬如 VCL 中有很多代码是兼容 Linux 的, 在 Windows 下就需要在编译之前预处理掉那些 for Linux 的代码.1、判断操作系统:其中的 "MSWINDOWS" 和 "LINUX" 就是 Delphi 预定义的 "条件标识符".begin{$IFDEF MSWINDOWS}S 阅读全文
posted @ 2013-05-29 11:37 麦麦提敏
摘要:DELPHI的编译指令 可以检测到这种改变, (1) Shift+F9 或 Project -> Build all project. (2) Run Without Debugging Shift+ Ctrl + F9---------------------------------------------------------------------------------使用列子: procedure TForm1.Button1Click(Sender: TObject);begin{$IFDEF _ProVersion} ShowMessage(''专业版&# 阅读全文
posted @ 2013-05-29 11:07 麦麦提敏
摘要:cxGrid中列的GridMode属性 Lookup字段记录很大, GridMode=false时打开时很慢, GridMode = true 时非常快,但筛选、排序、汇总都不能用 gridmode=true 后,就无法自动实现排序. gridmode=false 模式下,数据全加载了,数据多地时候 阅读全文
posted @ 2013-05-28 19:38 麦麦提敏
摘要:16、SaveDialog1确认文件存不存在的办法?答:procedureTForm1.SaveDialog1CanClose(Sender:TObject;varCanClose:Boolean);beginifFileExists(SaveDialog1.FileName)then//如果文件已经存在ifMessageDlg('文件已经存在,保存吗?',mtConfirmation,[mbYes,mbNo],0)<>mrYesthenButton2.Click//如果选择了覆盖,则退出,否则,重新让用户选择文件end;====================== 阅读全文
posted @ 2013-05-28 19:31 麦麦提敏
摘要:历史上最全的delphi技巧集锦之1分类:delphi2008-11-16 22:00------------------------------------------------删除dbgrid中选定数据的方法:beginadotable1.Delete;adotable1.first;若要追加和修改信息:adotable1.Append;adotable1.post;------------------------------------------------将数据写入库:procedureTclassmanageform.SaveToTable;beginClassmanageFor 阅读全文
posted @ 2013-05-28 19:30 麦麦提敏
摘要:CxGrid的使用说明cxgrid分组自动展开cxgrdbtblvwGrid1DBTableView1.DataController.Groups.FullExpandcxgrid取得默认字段cxgrdbtblvwGrid1DBTableView1.ClearItems;cxgrdbtblvwGrid1DBTableView1.DataController.CreateAllItems;(1)动态设置显示格式procedure SetDisplayFormat(ACtrlData: TClientDataSet; TbView: TcxGridDBTableView);var i: integ 阅读全文
posted @ 2013-05-28 18:57 麦麦提敏
摘要:cxGrid 知识点设置 TableView.OptionsView.HeaderAutoHeight 为 True 时栏目标题高度自动调整网格上选择了记录,当焦点移走时,看不到选择的记录,解决办法:修改 TableView 的属性,OptionsSelection->HideSelection 设为 False遍历选中记录:with ATableView.DataController dobeginVOldFocusedRecordIndex := FocusedRecordIndex;for VIndex := 0 to ATableView.Controller.SelectedR 阅读全文
posted @ 2013-05-28 18:55 麦麦提敏
摘要:技巧二:在内置右键菜单的后面增加菜单项 首先应在Form上加一个cxGridPopupMenu控件 以启用右键菜单 UseBuildInPopupMenus设为True procedure TFormItemList.FormCreate(Sender: TObject); var AMenu: TComponent; FMenuItem, FSubMenuItem: TMenuItem; begin AMenu := nil; if cxGridPopupMenu.BuiltInPopupMenus.Count = 0 then ... 阅读全文
posted @ 2013-05-28 18:51 麦麦提敏