0
我在Delphi XE2(WinXP Pro 32b下的Update 4)中遇到了SELECTNEXT和FINDNEXTCONTROL程序的下一個問題,這些程序無法正常工作。當控制獲得焦點,我試圖通過與下面的代碼下一個控件,它不只是工作:關於Delphi XE2中的SelectNext程序
procedure TformMain.cbServicioKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
SelectNext(TWinControl(Sender), True, True);
end;
我已經審查了FINDNEXTCONTROL代碼,我創建了一個相似的過程,我VE檢測到的問題是,在這些線路:
function TWinControl.FindNextControl(CurControl: TWinControl;
GoForward, CheckTabStop, CheckParent: Boolean): TWinControl;
...........
GetTabOrderList(List);
if List.Count > 0 then
begin
StartIndex := List.IndexOf(CurControl);
...........
end;
對於任何奇怪的原因,過程GETTABORDERLIST給出了除電流控制集中有效的參考名單,但它確實是LIST.INDEXOF返回-1,並在位置當前控制集中的LIST對象用於其NAME屬性爲空字符串的另一個對象。
我開發這個代碼:
procedure TformMain.GoNextControl(T: TWinControl; CheckTabStop: Boolean);
var
vParent, vNextChild : TWinControl;
List : TList;
CurIndex, i : Integer;
S:String;
begin
vParent:= Self; //T.Parent;
vNextChild:= nil;
List:= TList.Create;
try
vParent.GetTabOrderList(List);
if List.Count > 0 then
begin
//CurIndex:= List.IndexOf(T);
CurIndex:= -1;
for i:= 0 to List.Count-1 do begin
S:= TWinControl(List[i]).Name;
if S = EmptyStr then
begin
CurIndex:= i;
Break;
end;
end;
...........................
任何人有這種異常或更好的解決方案的迴應?提前致謝。
d
文件到QC的bug報告。 – 2012-03-27 08:10:08