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