Inno Setup Снимите флажок с задачи, когда другая задача отмечена

Я пытаюсь перехватитьWizardForm.TasksList.OnClickCheck событие, чтобы я мог снять задачу, когда другая задача выбрана. Я знаю, что в этой ситуации обычно используются радиокнопки, но автоматическая отмена одной задачи, когда выбрана другая, работает лучше из-за использования нескольких иерархических задач и того факта, что если используются радиокнопки, у вас всегда должна быть одна из два выбранных, когда наверху поддерева задачи. Пересоздание иерархии задач не представляется возможным для обеспечения согласованности, так как это включает две временные задачи, которые будут удалены в будущей версии программы установки. Я написал следующее, чтобы сделать это:

var
  DefaultTasksClickCheck: TNotifyEvent;

{ Uncheck tasks based on what other tasks are selected }
procedure UpdateTasks();
var
  intIndex: Integer;
begin
  with WizardForm.TasksList do
    begin
      if IsTaskSelected('Task1') then
        begin
          intIndex := WizardForm.TasksList.Items.IndexOf('Task36 Description');
          CheckItem(intIndex, coUncheck);
        end;
      if IsTaskSelected('Task36') then
        begin
          intIndex := WizardForm.TasksList.Items.IndexOf('Task1 Description');
          CheckItem(intIndex, coUncheck);
        end;
    end;
end;

{ Update the task states if the task states change and restore the original event handler procedure }
procedure TasksClickCheck(Sender: TObject);
begin
  DefaultTasksClickCheck(Sender);
  UpdateTasks;
end;

procedure InitializeWizard();
begin
  { Store the original Tasks Page OnClickCheck event procedure and assign custom procedure }
  DefaultTasksClickCheck := WizardForm.TasksList.OnClickCheck;
  WizardForm.TasksList.OnClickCheck := @TasksClickCheck;
end;

Однако когда я запускаю код, я получаю:

Вне диапазона Proc

ошибка, при нажатии любого флажка, сDefaultTasksClickCheck(Sender); выделена как оскорбительная строка. Если я закомментирую эту строку, я больше не получаю сообщение об ошибке, но, очевидно, больше не восстанавливаю исходный обработчик событий, и он по-прежнему не проверяет и не снимает флажки правильно, а Task36 не проверяется при проверке Task1. Что я сделал не так?

Ответы на вопрос(1)

Ваш ответ на вопрос