Delphi技巧两则
在分发数据库程序时,需要携带数据引擎(BDE、SQL Link),并且在客户端安装完程序后还需要配置数据引擎,如用户名(username)、口令(Password)等等。如果手工配置的话,工作量比较大(根据客户机数量而定)。而InstallShield For Delphi又没有这方面的选项,其实InstallShield For Delphi可以做到,在生成安装程序的目录里有一个*.iwz的文本文件,只要在[IDAPI Alias]段中手工加入即可。例如:
[IDAPI Alias]
usesname=SYSDBA
password=masterkey
安装程序执行完毕后自动完成数据引擎配置。
2.为列表框添光彩
为了改变Listbox和Combobox两个控件的单调风格,想在它们的每一项前面加上个图标,从表面上看好像不大可能啦。其实,这两个控件都有style属性,它可以设为lbOwnerDrawFixed,在事件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事件,这样新添加的项目前面就会有一个图标了。