把一个"结构体"当做属性后碰到的问题
摘要:当我把一个"结构体"在类中当做属性后, 在实用中可以直接读取结构体成员, 但不能直接写入...下面是由此引发的小练习:unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TBut
阅读全文
posted @
2012-01-05 16:56
万一
阅读(4337)
推荐(3) 编辑
覆盖、再覆盖
摘要:在实践中真的会发现更多问题.unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; IA = Interface function GetName: string; p...
阅读全文
posted @
2012-01-03 22:09
万一
阅读(2561)
推荐(0) 编辑
Delphi 中的自动释放策略
摘要:一、指定 Owner 后, 随 Owner 连带释放://uses Vcl.StdCtrls, Vcl.ExtCtrls;var panel: TPanel;procedure TForm1.Button1Click(Sender: TObject);begin panel := TPanel.Create(Self); panel.Parent := Self; with TButton.Create(panel) do //AOwner = panel begin Parent := panel; Caption := 'New Button'; end;end;p...
阅读全文
posted @
2011-12-21 15:42
万一
阅读(18325)
推荐(0) 编辑
做了一个浏览指定文件格式的 TreeView
摘要:unit DirTreeView;interfaceuses SysUtils, Classes, Controls, Forms, ComCtrls;type TDirTreeView = class(TTreeView) private FRootPath: string; FExt: string; FFileName: string; protected procedure Collapse(Node: TTreeNode); override; procedure Expand(Node: TTreeNode); override; procedure Change(Node: TT
阅读全文
posted @
2011-07-07 14:39
万一
阅读(4416)
推荐(2) 编辑
发现 TSplitter 在嵌套时不好用, 索性写了个替代品
摘要:代替 TSplitter 的 TDirPanel 类:unit DirPanel;interfaceuses Classes, Controls, Forms, ExtCtrls;type TDirPanel = class(TCustomPanel) private FLine: TPanel; B: Boolean; F: Integer; protected procedure LineMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer); procedur
阅读全文
posted @
2011-05-12 17:50
万一
阅读(2693)
推荐(1) 编辑
唤醒控件曾经拥有的能力
摘要:控件的祖先 TControl 有很多功能, 但它的有些子孙确丧失了很多(为了专用).譬如 TBevel 就没有把一些常规的事件继承下来, 那些没有被继承的功能一般都隐藏在 protected 区, 如果重新继承是可以使用的.这里尝试了另外一种方法: 自己没有继承时, 问一问有继承的兄弟、叔伯获取其它亲戚; 当然应先确保自己的祖先有该功能且没被覆盖过.通过传统的继承法让 TBevel 相应双击事件:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
阅读全文
posted @
2011-05-12 10:46
万一
阅读(3578)
推荐(1) 编辑
让自己的列表类支持遍历
摘要:一个普通的数字列表类(TNumList), 还没有支持遍历:unit NumList;interfaceuses SysUtils;type TNumList = class private FCount: Integer; FNumArray: array of Double; function GetNum(aIndex: Integer): Double; procedure SetNum(aIndex: Integer; aNum: Double); public constructor Create(aCount: Integer); property Count: Integer
阅读全文
posted @
2011-05-09 13:19
万一
阅读(2470)
推荐(0) 编辑
一个拼图工具的制作思路 - 回复 "AlwaysBug" 的问题
摘要:测试简图:功能简介:1、双击左窗口可打开源图像;2、框选左窗口可把图像选取复制到右窗口;3、剪取的图块可以移动, 可配合 Ctrl 单选或多选, 可用 Delete 删除选择的图块;4、双击右窗口可保存拼好的图像.功能实现:1、MoveImage 主要完成 "图块" 的功能;2、ImageBox 主要完成源图像及选取功能;3、其他有主模块 Unit1 完成.窗体:Unit1:ImageBox:Mo...
阅读全文
posted @
2010-04-24 23:41
万一
阅读(6784)
推荐(0) 编辑
如何把类中的方法做参数 - 回复 "林Lin☆☆" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/08/15/1268301.html#1806783
阅读全文
posted @
2010-04-21 16:03
万一
阅读(3835)
推荐(0) 编辑
关于 class helper for ... 语法
摘要:class helper 可能是从 Delphi 2007 增加的新语法, 因为感觉不太实用, 直到今天才测试了一下.试过之后才知道: 挺有意思的! 基本功能就是修改已存在的类.Txxx = class helper for T... {T... 表示已存在的类} {可以替换已存在的方法} {也可以有新的方法、成员}end;//这之后再使用 T... 类及其子孙类时, 都会优先使用 Txxx ...
阅读全文
posted @
2009-10-13 21:33
万一
阅读(9246)
推荐(0) 编辑
制作放两个小图片的按钮 - 回复 "xhui" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2009/03/12/1409708.html#1475240 本例效果图: 自定义的类(TMyButton): unit Unit2; interface uses Windows, Messages, Classes, Graphics, StdCtrls; type TMyButton ...
阅读全文
posted @
2009-03-12 18:27
万一
阅读(3711)
推荐(0) 编辑
写一个可拖动的 TShape - 回复 "韦韦" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2009/03/09/1234066.html#1471535 本例效果图: 自定义类(TMyShape)单元 : unit Unit2; interface uses Classes, Controls, ExtCtrls; type TMyShape = class(TShape) pr...
阅读全文
posted @
2009-03-09 11:15
万一
阅读(3399)
推荐(0) 编辑
Delphi 的运算符重载(2) - 可重载运算符列表
摘要:类别 运算符 运算符标识 使用 转换 隐式转换 Implicit Implicit(a: type): resultType; 显式转换 Explicit Explicit(a: type): resultType; 一元 - Negative Negative(a: type): resultType; ...
阅读全文
posted @
2008-12-09 23:50
万一
阅读(5783)
推荐(0) 编辑
Delphi 的运算符重载(1)
摘要:其实 Delphi 2006 就已经支持运算符重载了, 不过 for Win32 的版本只是在 record 里支持. 运算符重载有什么用处呢? 举个例子: 譬如 "张三"、"李四" 两人一起来拜见你, 你可能会问: "你们两个谁大?" 其实你是在问: "你们两个谁的年龄大?"; 但生活中人们一般都不这么罗嗦. 在程序中能否这样简化呢? 这只能通过 "运算符重载" 做到! 先按 "你们两...
阅读全文
posted @
2008-12-09 23:49
万一
阅读(9388)
推荐(0) 编辑
Controls 属性与继承 TShape 类的小练习
摘要:本例效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TMyShape = class(TShape) protected ...
阅读全文
posted @
2008-10-23 14:50
万一
阅读(3734)
推荐(0) 编辑
如何获取重载函数的地址 - 回复 "flq_00000" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/07/30/1039045.html#1272783 在编译器看来, 重载函数根本就是完全不同的几个函数, 当然就会有不同的函数地址; 我们用常规方法获取的地址只是第一种重载的地址. 代码文件: unit Unit1; interface uses Windows, Messages, SysUt...
阅读全文
posted @
2008-07-30 23:46
万一
阅读(4540)
推荐(0) 编辑
理解 Delphi 的类(十二) - 深入属性[1] - 先复习
摘要:关于属性的话题还有很多, 譬如: 数组属性、默认属性、class 属性等等. 先总结一下前面提到过的属性吧. TMyClass = class(TObject) private FName: string; procedure SetName(const Value: string); published property Name: string read FN...
阅读全文
posted @
2008-01-18 13:41
万一
阅读(6402)
推荐(0) 编辑
理解 Delphi 的类(十一) - 深入类中的方法[13] - 方法的调用约定
摘要:因为使用方法参数的不同, 所以有了调用约定. 譬如 Delphi 默认的是从左到右读取参数; Window API 是从右到左读取参数. 如果没有调用约定, Delphi 就无法使用由 C 语言编写的 Window API; 如果没有调用约定, 别的语言也无法使用由 Delphi 编写的 DLL 文件中的方法. 指示字 参数读取顺序 参数删除 参数传递 备注 register 左→右...
阅读全文
posted @
2008-01-18 13:31
万一
阅读(4537)
推荐(0) 编辑
理解 Delphi 的类(十一) - 深入类中的方法[12] - 消息方法
摘要://一个前导示例: {创建一 Win32 工程, 给窗体添加 OnKeyDown 事件} procedure Tbu.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Self.Text := Char(Key); end; {功能: 在键盘上按一个键, 窗体的标题栏会显示键名} //现在我们...
阅读全文
posted @
2008-01-17 17:09
万一
阅读(5744)
推荐(0) 编辑
理解 Delphi 的类(十一) - 深入类中的方法[11] - 事件方法
摘要:在方法的类别中, 应该还有一种事件方法; 事件是一种特殊的属性, 使用事件, 就是使用属性; 然后属性再调用事件方法. 到属性里面再深入学习吧.
阅读全文
posted @
2008-01-17 14:11
万一
阅读(4157)
推荐(0) 编辑