善用泛型数组
摘要:用了一周的时间解决了一个难题; 同时第一次真正开始使用泛型数组, 感觉太好了.如用 TArray<Word> 代替 array of Word, 还可以使用 TArray 类提供的算法(就是少了点).uses Generics.Collections, Generics.Defaults;{测试 TArray 的 Sort 方法}procedure TForm1.Button1Click(Sender: TObject);var arr: TArray<string>; //同 array of string s: string;begin SetLength(arr,
阅读全文
posted @
2011-05-27 18:38
万一
阅读(11916)
推荐(2) 编辑
给 "水桶" 同学解释一下 "流" 类中的 Seek() 方法
摘要:问题来源: http://www.cnblogs.com/del/archive/2008/01/01/1022130.html#2103357TStream 有 Seek() 方法, 它的子类们(TFileStream、TMemoryStream、TBytesStream、TStringStream、TResourceStream、TStreamAdapter、THandleStream...)也都有 Seek() 方法, 且用法一样.另外它们也都有 Position 属性, 使用 Position 属性完全可以代替 Seek() 方法, 通过 Position 还可以方便地 "读
阅读全文
posted @
2011-05-22 21:54
万一
阅读(6367)
推荐(2) 编辑
现在, Delphi 的多线程已经非常易用了!
摘要:先看一个非多线程的例子, 代码执行时不能进行其它操作(譬如拖动窗体):{自定义方法: 在窗体上绘制...}procedure MyMethod;var i: Integer;begin for i := 0 to 500000 do begin Form1.Canvas.Lock; Form1.Canvas.TextOut(10, 10, IntToStr(i)); Form1.Canvas.Unlock; end;end;{调用上面的自定义方法}procedure TForm1.Button1Click(Sender: TObject);begin MyMethod;end;修改为多线程(只
阅读全文
posted @
2011-05-18 13:27
万一
阅读(77016)
推荐(4) 编辑
如何使用 TStringGrid 呈现大量的颜色信息 - 回复 "冷公子" 的问题
摘要:"冷公子" 同学需要在 TStringGrid 中通过颜色显示大量信息, 给出的方案是: 建立一个对应的颜色数组.参考代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; procedure FormCreate(Sender: TOb
阅读全文
posted @
2011-05-16 15:16
万一
阅读(4168)
推荐(0) 编辑
在 StringGrid 上画线时, 使用 GDI+ 以消除锯齿 - 回复 "gsjn_8888_6666" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2009/12/24/1631729.html#2097194GDI+ 接口: http://www.cnblogs.com/del/archive/2009/12/11/1621790.html示例代码:uses GdiPlus;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);var Graphics: IGPGraphics; Pen:
阅读全文
posted @
2011-05-15 11:56
万一
阅读(3907)
推荐(0) 编辑
关于显示透空歌词的思路 - 回复 "zhaoboaidelphi" 的问题
摘要:问题来源: http://www.cnblogs.com/del/archive/2009/12/22/1629717.html#20967341、使用 TransparentColor、TransparentColorValue 给窗体指定透明色;2、绘制非透明色的文本, 用 TLabel 呈现文本也可;3、处理 WM_NCHITTEST 消息使窗体能够被拖动;4、用 Esc 键退出.测试代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
阅读全文
posted @
2011-05-14 16:42
万一
阅读(2948)
推荐(1) 编辑
发现 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) 编辑
Action 相关组件
摘要:TAction // TEditCut、TEditCopy、TEditPaste、TEditSelectAll、TEditUndo、TEditDelete、TEditSelectAll、TEditSelectAllTWindowAction // TWindowClose、TWindowCascade、TWindowTileHorizontal、TWindowTileVertical、TWindowMinimizeAll、TWindowArrangeTHelpAction // THelpContents、THelpTopicSearch、THelpOnHelp、THelpContextAct
阅读全文
posted @
2011-05-09 18:41
万一
阅读(3313)
推荐(0) 编辑
让自己的列表类支持遍历
摘要:一个普通的数字列表类(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) 编辑
ActionScript 3.0 记要(2): 类与接口
摘要:第一个自定义类的尝试://先新建一个 ActionScript 3.0 工程保存//然后, 新建 ActionScript 3.0 类, 根据向导随意取类名为 CTest, 自动生成代码如下:package { public class CTest { public function CTest() { //与类同名的方法是构造方法 trace("Hello CTest!"); //这行是手动添加, 修改文件后须先保存再测试运行 } }}//把类文件(CTest.as)保存在和当前工程相同的目录, 然后在工程的时间轴的第一帧的动作中写入:var obj:CTest = ne
阅读全文
posted @
2011-05-05 18:59
万一
阅读(3656)
推荐(1) 编辑
ActionScript 3.0 记要(1): 基本语法
摘要:近期要做的东西既需要运行于网络又需要运行于本地, 并要尽量多地兼容各种平台(包括手机平台).大概了解了 PhoneGap、HTML5、Adobe AIR、Flash、SilverLight、uniGUI、Qt, 发现还是老牌的 Flash 更适合需求.因需全部用代码完成界面与逻辑, 所以主要的学习任务是 ActionScript 3.0;感谢 Delphi 给我的营养, 让我不再畏惧其它工具和语言.对 ActionScript 3.0 的初步感受: 很像且优于 JavaScript, 特别在面向对象方面; 另外参考资料也特别充足, 估计两三天即可修完需要的部分.测试环境 Flash CS5;
阅读全文
posted @
2011-05-03 13:26
万一
阅读(6056)
推荐(1) 编辑