
delphi
肥仔胧
这个作者很懒,什么都没留下…
展开
-
动态增加字段
//ADOQuery已打开 //在数据集打开的情况下新增加一个字段 with Self.ADOQuery1 do begin TDataSetDesigner.Create(Self.ADOQuery1); try Designer.BeginDesign; //Keep Old Field //保留旧的字段转载 2009-12-10 00:27:00 · 1009 阅读 · 0 评论 -
实现Ribbon风格的窗体
<br />随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格。<br />那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的。<br />首先,Delphi本身并没有Ribbon风格的窗口可以直接拿来使用,而市面上很多类似于Ribbon的风格都是用截图法做出来的,那样做很麻烦,而且对于图片的控制要求非常高。这样无疑是增加了软件的成本,这里介绍的方法是使用第三方控件,DevExpress Bar 6 来完成Ribbon转载 2010-07-19 01:04:00 · 1341 阅读 · 0 评论 -
FastReport中隔行显示不同的背景颜色及导出PDF文档出现中文字符
<br />今天下午,同事反映:FastReport报表显示正常,但是导出到PDF文档后,备注文字便全部显示为乱码。 <br /><br /> 我先查找网上资料,得知这属於字体显示问题:像宋体,标楷体,新明细体及明细体这些属於系统默认支持的,都是可以显示为正常的。我再查看报表,发现备注字段字体为"Arial",问题显然出现在这里。 <br /><br /> 我试著把字体修改为"新明细体",结果发现导出PDF文档后,一行显示正常,隔行就显示为乱码;显示为乱码的行背景色和显示正常的行不一样。 这就又涉及到隔转载 2010-06-01 21:33:00 · 5334 阅读 · 1 评论 -
Delphi2010强化的反射
<br />http://hi.baidu.com/rarnu/blog/item/880c68810337f3d1bc3e1e9e.html<br />http://hi.baidu.com/rarnu/blog/item/29914b4a32faac2a08f7ef7f.html原创 2010-06-04 22:58:00 · 443 阅读 · 0 评论 -
使用Expressprinting打印DbGridEh
<br /> 在多年的程序开发中一直使用dbgridEh这个轻量级的表格组件,但对它本身所提供的打印功能却不太满意,这之前程序中的报表打印一直在用Fastreport。<br /> 近来一个新的程序中,客户要求对表格的内容进行直接打印(即所见所得)。本来想直接修改dbgrideh中的打印代码,以满足要求,但看过一遍代码之后就放弃这想法了:dbgrideh的打印代码实在不敢恭维,如果实在要修改,后期的维护工作不敢保证。虽然Fastreport也能动态打印dbgrideh,但毕竟也是用程序生成模板,灵活转载 2010-06-15 23:56:00 · 1066 阅读 · 0 评论 -
D2010 RTTI + Attribute 简单实现ORM
还记得David I 今年四月来盛大时,被问及“反射机制能再做得好一点吗?我们想放弃RTTI ”,David I 回答“这的确是需要考虑的地方,当然RTTI我们不会放弃的”。(这个白胡子的老哥哥还真很可爱,当年Borland几经起落,唯一能看得顺眼的就是David I)。 我还以为RTTI在D2010最多只是改良,炒冷饭而已。没想到,RTTI不仅能反射Public、protected、Private里的信息,还能动态执行该类里的方法,更惊奇的是,还支持Attribute。D2010 New RTTI 在某种转载 2010-08-15 00:19:00 · 494 阅读 · 0 评论 -
使用cxGrid对数据集进行Sort和Locate操作
<br />function GridSortColumn(View : TcxGridDBTableView; FieldName : String) : Boolean;<br />var<br /> i : Integer;<br />begin<br /> {数据排序}<br /> Result := False;<br /> for i := 0 to View.ColumnCount -1 do<br /> begin<br /> if (UpperCase(View.Colum原创 2010-09-02 00:11:00 · 736 阅读 · 0 评论 -
创建一个弹出时不会立即得到焦点的窗口
<br />这样创建的窗口除非用户主动点击,否则不会获得焦点。 <br /> TForm1 = class(TForm)<br /> private<br /> protected<br /> procedure SetZOrder(TopMost: Boolean); override;<br /> procedure CMShowingchanged(var Message: TMessage); message CM_SHOWINGCHANGED;<br /> public<br原创 2010-09-02 00:22:00 · 704 阅读 · 0 评论 -
实现最小化模态子窗口时,同时最小化应用程序
<br />procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;<br />procedure TForm2.WMSysCommand(var Message: TMessage);<br />begin<br /> if (Message.WParam = SC_ICON)<br /> then Application.Minimize<br /> else inherited;<br />end;转载 2010-09-01 23:49:00 · 486 阅读 · 0 评论 -
批量创建控件时,各优化方式比较
<br />InVisible Panel + DisableAlign这种方法的速度是最快的原创 2010-09-02 00:02:00 · 483 阅读 · 0 评论 -
动态建立计算、参照字段的方法
建立此类字段的关键,是必须先为数据集现有的字段建立固定字段(运行时运态创建)procedure BuildCalcField;var i : Integer; Field : TField;begin DataSet.FieldDefs.Update; for i := 0 to DataSet.FieldDefs.Count -1 do begin Field := DataSet.FieldDefs.Items[i].FieldClass.Crea原创 2010-09-02 00:27:00 · 602 阅读 · 0 评论 -
现有Delphi项目迁移到D2009中的注意事项
<br />随着 Embarcadero 8 月 25 号 发布 RAD Studio 2009 (Tiburon) 以来(Tiburon 的 RTM 日期可能要延后到 9 - 10 月),随 着 Tiburon 全面支持 Unicode,现有的 Delphi / C++ Builder 项目要迁移到 Unicode 下应该注意些什么也 成为大家最为关心的问题。Tiburon 对 Unicode 的支持不仅仅是将原来 类型映射为 AnsiString 的 String 类型直接改 成 WideString,原创 2010-07-02 20:32:00 · 482 阅读 · 0 评论 -
关于返回汉字首写字母的函数浅谈?
在网上找到的返回汉字首写字母的函数,精简实用 ,至少我没找到什么问题.private string GetGbkX(string str) { if(str.CompareTo(" 吖")原创 2010-06-27 09:13:00 · 627 阅读 · 0 评论 -
delphi如何获取屏幕的分辨率
屏幕的分辨率用这个 x=GetSystemMetrics(SM_CXSCREEN) y=GetSystemMetrics(SM_CYSCREEN) 同上。.而且获得屏幕上的像素好像应该使用screen.pixelsperinch函数int GetDeviceCaps( HDC hdc, //转载 2009-12-15 09:18:00 · 9321 阅读 · 0 评论 -
CXGrid的使用技巧
cxGrid技巧汇总2009-04-01 12:48 ========================================================================== 在主从TableView中根据主TableView得到对应的从TableView var ADetailDC: TcxGridDataCon原创 2009-12-28 08:55:00 · 714 阅读 · 0 评论 -
《Delphi 算法与数据结构》: 关于 const
如果参数在函数中不可能修改, 一定要使用 const;不然, 编译器就会:假定先修改, 先要备份; 使用前后要增减引用计数; 还要套上 try finally.指定了 const 就可以避免以上过程从而提高效率. unit Unit1;interfaceuses Windows, Messages, SysUtils转载 2010-01-01 10:32:00 · 476 阅读 · 0 评论 -
简体中文与繁体中文的转换函数
function GB2Big(GB: string): string;var Len: Integer;begin Len := Length(GB); SetLength(Result, Len); LCMapString(GetUserDefaultLCID, LCMAP_TRADITIONAL_CHINESE, PCh转载 2010-01-02 20:43:00 · 493 阅读 · 0 评论 -
防止程序重复执行的单元
//工程引用此单元就能防止同时出现多个实例unit MultInst;interfaceuses Windows ,Messages, SysUtils, Classes, Forms;implementationconst STR_UNIQUE = {2BE6D96E-827F-4BF9-B33E-8原创 2010-01-01 02:05:00 · 409 阅读 · 0 评论 -
参数的传递-out与var的区别
out与var都是传址参数。而out仅仅接受返回的值,对out的任何输入都会被忽略,其它的类似var。例如 procedure Hello(out s:String); begin s:=Hello,+ S; end; procedure TestOut; var s:String;转载 2010-01-01 01:37:00 · 1018 阅读 · 0 评论 -
《Delphi 算法与数据结构》: 数据对齐
为了加快硬件的访问速度, 编译器通常要使用"数据对齐", 譬如://下面结构中: SizeOf(TRec) = 6; 因为 b 在这里也要占 2 字节.TRec = record a: Word; b: Byte; c: Word;end;//下面结构中: SizeOf(TRec) = 16; 这里的 a 和 b 共占了 8 个转载 2010-01-01 10:31:00 · 631 阅读 · 0 评论 -
汉字与 Unicode 转换
{感谢 robin(xuebin418@163.com)提供}//转换function Str_Gb2UniCode(text: string): String; var i,len: Integer; cur: Integer; t: String; ws: WideString;begin Result转载 2010-01-02 20:44:00 · 495 阅读 · 0 评论 -
二分查找
function BinarySearch(List: TStringList; const str: string): Integer;var L,R,M: Integer; CompareResult: Integer;begin Result := -1; L := 0; R := List.Count - 1; while L begin转载 2010-01-01 02:13:00 · 322 阅读 · 0 评论 -
Delphi2009中的几处问题
http://bbs.2ccc.com/topic.asp?topicid=319928上有网友问我D2009还有什么问题.就简单的说一下我所发现的. 上一段时间一直在用Delphi给其他软件开发一个电子地图的ActiveX控件. Delphi2009已经出到Update4了.有几个问题一直都还没解决. 1.泛型类库的一处Bug.Generics.Collectio转载 2010-01-12 16:22:00 · 841 阅读 · 0 评论 -
Delphi编写和调用DLL的重点
<br />使用ADO封装一个类,结果调试了我一整天。原来问题出在DLL里面有一个函数,这个函数返回TDataSet对象。所以现在总结DLL的编写要注意的地方如下:<br />1、DLL以及调用该DLL的应用程序,其第一个Uses必须为ShareMem或FastMM4。<br />2、绝对不能在DLL中创建一个对象后,返回该对象给调用的应用程序使用,否则释放对象时总会出问题(用的时候没有问题的)。<br />3、如果真的需要创建对象,则应该返回该对象的类(如:class of TComponent),然后由原创 2010-09-02 00:06:00 · 594 阅读 · 0 评论