如果同一窗體有多個按鈕的話,追蹤原始碼發現最後是taborder來的
如: 在空白窗體上拖入兩個button (btn1,btn2)
如果在btn2設定default = true 執行後,預設焦點還是在btn1上。需要把btn2的taborder設定為0才可以。
如此看來還是以taborder 來認的。
1procedure
tcustomform.setactive(value: boolean);
2begin
3 factive :=value;
4if factiveolecontrol <> nil
then
5 factiveolecontrol.perform(cm_docwindowactivate, ord(value), 0);6
if value then
7begin
8if (activecontrol = nil) and
not (csdesigning in componentstate) then
9 activecontrol := findnextcontrol(nil
, true, true, false);
10mergemenu(true);
11setwindowfocus;
12end;13
end;
其中的 findnextcontrol 可以看出是gettaborderlist來認的
1function
twincontrol.findnextcontrol(curcontrol: twincontrol;
2goforward, checktabstop, checkparent: boolean): twincontrol;
3var
4i, startindex: integer;
5list: tlist;
6begin
7 result := nil
;8 list := tlist.create;9
try10
gettaborderlist(list);
11if list.count > 0
then
12begin
13 startindex :=list.indexof(curcontrol);
14if startindex = -1
then
15if goforward then startindex := list.count - 1
else startindex := 0
;16 i :=startindex;
17repeat
18if goforward then
19begin
20inc(i);
21if i = list.count then i := 0;22
endelse
23begin
24if i = 0
then i :=list.count;
25dec(i);
26end
;27 curcontrol :=list[i];
28if curcontrol.canfocus and
29 (not checktabstop or curcontrol.tabstop) and
30 (not checkparent or (curcontrol.parent = self)) then
31 result :=curcontrol;
32until (result <> nil) or (i =startindex);
33end;34
finally
35list.free;
36end;37
end;
delphi 控制項簡介
一 codegear interbase express 自帶的資料庫 dataset mybase dataaccess 伺服器遠端資料 data snap connection 遠端資料庫 dbexpress delphi 自己連線 db2,informix,interbase,mssql,my...
Delphi 控制項安裝
delphi 控制項安裝 比較全 由於元件提供的方式不同,所以安裝的方法也是不一樣的,下面就目前常見的各種形式的元件的安裝方法介紹一下。1只有乙個dcu檔案的元件。dcu檔案是編譯好的單元檔案,這樣的元件是作者不想把原始碼公布。一般來說,作者必須說明此元件適合delphi的哪種版本,如果版本不對,在...
Delphi遍歷控制項
var i integer begin for i 0 to panel1.controlcount do begin 控制項 panel1.controls i 加入自己 end end procedure tform1.button2click sender tobject var i inte...