1、 Taborder Tabstop:
这组表识号本来是用来表示组件的按键顺序以及在该组件上是否停留的标识号。但是如果在某些时候稍微重视一下的话,将会事半功倍。下面略举一例:桌面上有几个编辑框,用户希望按回车键、上下方向键而不是TAB在其间来回游动。
> 属性及相关值:
MainFrame: KeyPreview = True
Edit_Name :TabOrder = 0;
Edit_Age :TabOrder = 1;
Edit_Adress :TabOrder = 2;
> 代码及说明:
在interface 的private定义一个过程
procedure TForm1.Tab(Sender: TObject; var Key: Word;
Shift: TShiftState);
Begin
(**)
if (key=VK_Down) or (key=13) then
SelectNext(ActiveControl,True,True);
if key=VK_Up then
SelectNext(ActiveControl,False,True);
Key:=0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit_Name. OnKeyDown = Tab;
Edit_Age .OnKeyDown = Tab;
Edit_Adress . OnKeyDown = Tab;
end;
---- 当然,我们可以利用Delphi的灵活性更加方便的达到这个目的:移动到对象查看器,在Edit_Name的OnKeyDown中输入Tab后回车,Delphi自动创建该事件,然后将Edit_Age及Edit_Adress 的OnKeyDown事件连接到Tab即可(方法很简单:分别到各组件的OnKeyDown事件处下拉并选择Tab即可)。
---- 2、 Tag:
---- 该属性也有很多比较精妙的用处,特别是在提炼代码的时候。
---- 下面略举一例(概括性的):
case (Sender as TEdit).Tag of
10..100:begin
//处理过程
end;//end 10_100
//其他情况
end;//end case
---- 这样避免了分别为每个组件写代码的劳动,增强了程序的可读性,也减少了程序的体积。
---- 3、 Handle:
---- 这就是所谓的句柄,在Windows中,句柄是系统内部数据结构的引用。例如,我们正在使用某个窗体时,系统会知道正在使用的窗体的号码,也因此能接受我们的(应用程序)请求,对该窗体进行各种操作。当然,它不仅仅指的是我们平时常见的窗体句柄,还包括菜单、位图、图表、鼠标、菜单等。常规的用法不是我们这里要讨论的,比如:
procedure TForm1.ChangeTitleClick(Sender: TObject);
begin
SetWindowText(handle,'Liangming''s here');
end;
---- 下面举一个利用Handle传递位图的例子:
procedure TForm1.LoadBmpClick(Sender: TObject);
var
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
try
bmp.LoadFromFile('c:\windows\setup.bmp');
with image1 do begin
Picture.Bitmap.Handle:=bmp.Handle;
Update;
Refresh;
end;
finally
bmp.Free;
end;
end;