把一个"结构体"当做属性后碰到的问题
当我把一个"结构体"在类中当做属性后, 在实用中可以直接读取结构体成员, 但不能直接写入...下面是由此引发的小练习:unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System...
以接口为主导的设计中, 我在使用的框架模式
在今后的 Delphi 中, 以接口、结构为主的设计应该会越来越多, 因为这样太方便了.System.RegularExpressions 就是以结构为主体设计的非常好的示范; 但更多东西使用接口会更合适.有见过他人早就使用接口写程序, 从手头的这个程序开始我才开始使用.现在基本总结出四种框架模式:...
使用 idHTTP 获取 UTF-8 编码的中文网页 - 回复同学 "Delphi学习者" 的问题
uses IdHTTP;const Url = 'http://del.cnblogs.com';procedure TForm1.Button1Click(Sender: TObject);var stream: TStringStream; idHttpObj: TIdHTTP;...
使用泛型, 写一个为任意类型的动态数组添加元素的方法
一、使用泛型类:unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Fo...
Delphi 中的自动释放策略
一、指定 Owner 后, 随 Owner 连带释放://uses Vcl.StdCtrls, Vcl.ExtCtrls;var panel: TPanel;procedure TForm1.Button1Click(Sender: TObject);begin panel := TPanel.Cr...
如何使用 SendMessage 选择 ListBox、ComboBox 中的项 - 回复 "倪慧刚" 的问题
const i = 1;//初始测试数据procedure TForm1.FormCreate(Sender: TObject);begin ListBox1.Items.CommaText := 'aaa,bbb,ccc'; ComboBox1.Items.CommaText :=...
在 Delphi 中使用微软全文翻译的小例子
刚刚从博客园看到有朋友用 C# 做了这么个东西, 我用 Delphi 尝试了一下.需要先去申请一个 AppID: http://www.bing.com/toolbox/bingdeveloper/使用帮助在: http://msdn.microsoft.com/en-us/library/dd57...
FireMonkey 绘图(1)
FMX 的 Canvas 在不同的系统上会分别使用:WinVista、Win7: D2D (FMX.Canvas.D2D.pas)WinXP: GDI+ (FMX.Canvas.GDIP.pas)Mac 系列: Core Graphics (FMX.Canvas.Mac.pas)和 HTML5 中的...
获取程序自身大小的函数
function GetExeSize: Int64;var SearchRec: TSearchRec;begin Result := -1; if FindFirst(Application.ExeName, faAnyFile, SearchRec) = 0 then Result := Se...
看看 Delphi XE2 为 VCL 提供的 14 种样式
其实只提供了 13 个 vsf 样式文件, 还有默认的 Windows 样式, 共 14 种.在空白窗体上添加 ListBox1 等控件, 测试代码:uses IOUtils, Vcl.Styles, vcl.Themes;procedure TForm1.FormCreate(Sender: TO...
终于, Delphi XE2 携带 GDI+ 库了
使用了较早的 http://www.progdigy.comuses Winapi.GDIPAPI, Winapi.GDIPOBJ{, Winapi.GDIPUTIL};procedure TForm1.FormPaint(Sender: TObject);var graphics: TGPGrap...
捕捉 midi 输入消息的基本程序
uses MMSystem;var hMidiIn: Integer;procedure midiCallBack(hdrvr: HDRVR; uMsg: UINT; dwUser: DWORD; dw1, dw2: DWORD) stdcall;begin case uMsg of MIM_OPE...
关于禁止程序重复启动的另一种需要与实现
手头的程序需要禁止重复启动, 但需要保留新的、关闭旧的.我想还是从主窗口的类名下手吧; 写了一个函数, 在 OnCreate 中调用即可:{ 函数 }procedure CloseSameClassNameWindow(ACurrentWindow: HWND; const AClassName: ...
Delphi XE2 新增 System.Zip 单元, 可用一句话压缩整个文件夹了
单元内主要就是 TZipFile 类, 最方便使用的是它的类方法:TZipFile.ExtractZipFile() //解压 Zip 文件到指定文件夹TZipFile.IsValid() //判断指定文件是否是有效的 Zip 文件TZipFile.ZipDirectoryContents() //...
Delphi XE2 之 FireMonkey 入门(45) - 结题与问题
很喜欢 FMX 的一些新控件, 如: TExpander、TArcDial、TComboTrackBar、TPathLabel 等等, 没时间继续学习了.对 FMX 的整体感觉: 还不成熟, 但肯定有前景; 它的构架师有远见、了不起, 很难估计他开启的是多大一扇门!本将继续学习:1、TCanvas、...
Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem
TScrollBox -> TCustomTreeView -> TTreeView 子项类型是 TTreeViewItem.测试, 先在窗体上放一个 TTreeView, 并需要它的 OnChange 事件:unit Unit1;interfaceuses System.SysUtil...
Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid
TStringGrid、TGrid 都是从 TCustomGrid 继承; 区别有:1、它们的列对象分别是: TStringColumn、TColumn;2、TStringGrid 比 TGrid 多出了 Cells[] 属性.因为 TGrid 没有 Cells[] 属性, 暂时不方便使用; 我尝试...