Вверх ↑
Разработчик
Ответов: 26061
Рейтинг: 2120
#1: 2022-04-23 15:40:33 ЛС | профиль | цитата
Попробуй потестировать вот это код


  procedure Enum(prn: cardinal; CheckBoxes: boolean; CheckBoxIndex: integer);
var
j: integer;
FCurNode: PData;
begin
if prn > 0 then
begin
FCurNode := PData(Sender.TVItemData[prn]);
j := 0;
while FCurNode <> nil do
begin
if CheckBoxes and (j = CheckBoxIndex) and (ItemStateImg <> ToInteger(FCurNode^) + 1) then
begin
if ItemStateImg <> 0 then
begin
if _IsInteger(FCurNode^) then
FCurNode.idata := ItemStateImg - 1
else if _IsStr(fd^) then
FCurNode.sdata := Int2Str(ItemStateImg - 1)
else
begin
FCurNode.idata := ItemStateImg - 1;
FCurNode.sdata := Int2Str(ItemStateImg - 1);
FCurNode.rdata := ItemStateImg - 1;
end;
Sender.TVItemStateImg[prn] := ItemStateImg;
end;
end;
inc(j);
FCurNode := FCurNode.ldata;
end;
if Sender.TVItemChild[prn] > 0 then Enum(Sender.TVItemChild[prn], CheckBoxes, CheckBoxIndex);
Enum(Sender.TVItemNext[prn], CheckBoxes, CheckBoxIndex);
end;
end;

--- Добавлено в 2022-04-23 15:42:53

Прикол с наследованием распространяется не только на -1, но и на все остальные значения. Я пока не знаю как это закостылять, попробую подумать над этим. Код выше имеет защиту только от родительского -1.
карма: 22

0
Редактировалось 1 раз(а), последний 2022-04-23 15:42:53