精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>控件开发和使用>>妙用Delphi的标识号(已经发表在“计算机

主题:妙用Delphi的标识号(已经发表在“计算机
发信人: delphifan()
整理人: (2000-12-05 19:46:45), 站内信件
妙用Delphi的标识号
〖西安  梁 明  [email protected]

在Delphi中有一些不被人们注意的属性,可是我们一旦用好这些“默默无闻”的
东东,仍将迸发奇光,以下只是罗列了几个简单例子,以期抛砖引玉。
1、 Taborder Tabstop:
这组表识号本来是用来表示组件的按键顺序以及在该组件上是否停留的标识号。
但是如果在某些时候稍微重视一下的话,将会事半功倍。
下面略举一例:桌面上有几个编辑框,用户希望按回车键、上下方向键而不是TA
B在其间来回游动(更符合用户的习惯)。
属性及相关值:
MainFrame: KeyPreview = True
Edit_Name :TabOrder = 0;
Edit_Age :TabOrder = 1;
Edit_Adress :TabOrder = 2;
代码及说明:
为MainFrame->OnKeyDown书写代码[为Tscreen->OnActiveControlChange更帅,读
者自己处理]:
procedure T MainFrame.FormKeyDown(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;
当然,如果你为每个编辑框的OnKeyDown分别写代码也可以达到目的,但是那要冗
烦的多。
2、 Tag:
该属性也有很多比较精妙的用处,特别是在提炼代码的时候。如下面略举的一例

case (Sender as TEdit).Tag of
  10,30,50:
  begin
    //处理事件
  end;//end 10_100
  20,40,60:
  begin
    //处理事件
  end;
 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;

当然,以上仅仅是举例说明了一个观点:不要忽视那些看似不重要的东西。读者
若能再细心体会,必能挖掘更多有价值的东西。

通讯地址:710007 西安市人民政府办公厅计算中心  梁明
E-mail:[email protected]
Site:http://delphifan.wojia.com  or  http://lmd.yeah.net


--
================================================= 
==          [email protected]                  == 
==    [一个真正有内容、较实用的Delphi网站]       == 
==        http://delphifan.wojia.com           == 
==  http://lmd.yeah.net  http://lmd.126.com    == 
================================================= 

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.100.19.254]

[关闭][返回]