Delphi经验技巧集锦
---- 一.为列表框添光彩
---- 为了改变Listbox和Combobox两个控件的单调风格, 我想在它们的每一项前面加上个图标。从表面上看好像不大可能啦。就在走投无路的时候,我忽然发现这两个构件都有一个style属性, 它可以设为lbOwnerDrawFixed,Draw这个单词吸引了我,然后我又从Delphi的在线帮助中找到了一个相关的事件OnDrawItem,在这个事件中写一段代码,就可以在列表框中的每一项前面添加一个小图标啦。
---- 下面是在Listbox 的OnDrawItem事件中添加的代码:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var Bitmap: TBitmap; Offset: Integer; begin with (Control as TListBox).Canvas do begin FillRect(Rect); Offset := 2; Bitmap := TBitmap.create; Bitmap.LoadFromFile(′d:/temp1/1.bmp′); //指定图文件是d:/temp1/1.bmp BrushCopy(Bounds(Rect.Left + 2, Rect.Top, Bitmap.Width, Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), clRed); Offset := Bitmap.width + 6; TextOut(Rect.Left + Offset, Rect.Top, (Control as TListBox).Items[Index]) end; end;---- 进一步,利用OnDrawItem事件的参数Index还可以在不同项前面添加不同的图标。还要告诉你的是, 当用add方法为列表框或下拉框添加项目时, 会自动执行 OnDrawItem事件,这样新添加的项目前面也就有了一个图标。
---- 二.获取count值
---- Delphi与Power Builder一样,都提供了SQL语言,来实现对数据库的访问,仅仅是实现语句的长短不同。Delphi是在Pascal语言基础之上发展起来的,它提供了强大的功能,各种控件提供了丰富的属性和方法。我们应该充分利用这些属性和方法。要想知道某数据库的记录数, 用一个简单的语句即可完成。例如求Delphi的DBDemos数据库中表 day.db的记录总数,假设Table控件已加到Form上,具体实现语句为:
Edit1.text:=inttostr(Table1.recordcount); 如果是要知道符合某条件的记录数,也非常方便,具体实现语句为: Edit1.text:=inttostr(Query1.recordcount); Recordcount属性用来表示为数据集相连的表的记录总数。 还有一种通用的方法,具体实现语句为: VAR i:integer; Begin i:=0; Table1.open; Table1.First; While not Table1.eof do BEG1N i:=i+1; Table1.next; End; Edit1.text:=inttostr(i); 如果使用了TQuery控件,具体步骤如下: Query1.close; Query1.SQl.clear; query1.SQL.add (′ ...... ′); //某查询语句 Query1.open Query1.first; i:=0; While not Query1.eof do BEG1N i:=i+1; Query1.next; EnD Edit1.text:=Inttostr(i);---- 三.给数据库报表加上网格线
---- Delphi 1.0和2.0版捆绑了Reportsmith报表制作工具,实现报表打印。如果打印一个很简单的报表,在程序