07-16-2020, 12:02 PM
hi think there is bug in - the list is not maintained correctly and some of the obj in the list don't exists
so - the render crash
------------------------------------ this is my bypass
procedure TIWForm.FillRealTabOrders;
procedure FillList(AContainer: TIWContainer; AList: TIWListBase);
var
i: Integer;
LCurrent: TObject;
LTabOrderInterface: IIWTabOrder;
begin
for i := 0 to AContainer.TabOrderList.Count - 1 do
begin
Try //Yossi
LCurrent := TObject(AContainer.TabOrderList[i]);
if Assigned(LCurrent) then //yossi
begin
if LCurrent is TIWContainer then
begin
FillList(TIWContainer(LCurrent), AList);
end
else
begin
LTabOrderInterface := TabOrderInterface(LCurrent);
if LTabOrderInterface <> nil then begin
if LTabOrderInterface.HasTabOrder then begin
AList.Add(LCurrent);
end;
end;
end;
end;
Except //yossi
on e: exception do
begin
Try
logFileAppend('Error on TabOrder FillList : I= ' + IntToStr(I) + ' Message= ' + e.Message);
Except;
End;
end;
End;
end;
end;
begin
FRealTabOrderList := TIWListBase.Create;
FillList(Self, FRealTabOrderList);
end;
so - the render crash
------------------------------------ this is my bypass
procedure TIWForm.FillRealTabOrders;
procedure FillList(AContainer: TIWContainer; AList: TIWListBase);
var
i: Integer;
LCurrent: TObject;
LTabOrderInterface: IIWTabOrder;
begin
for i := 0 to AContainer.TabOrderList.Count - 1 do
begin
Try //Yossi
LCurrent := TObject(AContainer.TabOrderList[i]);
if Assigned(LCurrent) then //yossi
begin
if LCurrent is TIWContainer then
begin
FillList(TIWContainer(LCurrent), AList);
end
else
begin
LTabOrderInterface := TabOrderInterface(LCurrent);
if LTabOrderInterface <> nil then begin
if LTabOrderInterface.HasTabOrder then begin
AList.Add(LCurrent);
end;
end;
end;
end;
Except //yossi
on e: exception do
begin
Try
logFileAppend('Error on TabOrder FillList : I= ' + IntToStr(I) + ' Message= ' + e.Message);
Except;
End;
end;
End;
end;
end;
begin
FRealTabOrderList := TIWListBase.Create;
FillList(Self, FRealTabOrderList);
end;