Что делает свойство ItemObject класса TNewCheckListBox и как его правильно использовать? (Inno Setup) - PullRequest
1 голос
/ 17 апреля 2020

У нас есть класс с именем TNewCheckListBox, и у него есть это свойство:

property ItemObject[Index: Integer]: TObject; read write;

Для чего он нужен и как его правильно использовать?

Также есть 3 метода: этот класс:

function AddCheckBox(const ACaption, ASubItem: String; ALevel: Byte; AChecked, AEnabled, AHasInternalChildren, ACheckWhenParentChecked: Boolean; AObject: TObject): Integer;
function AddGroup(ACaption, ASubItem: String; ALevel: Byte; AObject: TObject): Integer;
function AddRadioButton(const ACaption, ASubItem: String; ALevel: Byte; AChecked, AEnabled: Boolean; AObject: TObject): Integer;

Для чего используется параметр AObject: TObject? Я хотел бы привести пример, если это возможно.

1 Ответ

1 голос
/ 19 апреля 2020

Когда вы добавляете элемент в список, параметр AObject присваивается внутренне для Obj :

ItemState.Obj := AObject;

, где ItemState представляет отдельный элемент (строку) в TNewCheckListBox:

  TItemState = class (TObject)
  public
    Enabled: Boolean;
    HasInternalChildren: Boolean;
    CheckWhenParentChecked: Boolean;
    IsLastChild: Boolean;
    ItemType: TItemType;
    Level: Byte;
    Obj: TObject;
    State: TCheckBoxState;
    SubItem: string;
    ThreadCache: set of Byte;
    MeasuredHeight: Integer;
    { Force update item flag }
    FUpdate: Integer;
  end;

И что

property ItemObject[Index: Integer]: TObject; read write;

используется для чтения / записи этого объекта во время выполнения.

Я предполагаю, что Obj используется для хранение любого объекта, который хочет разработчик (полезно, когда вам нужно хранить определенные c данные, относящиеся к элементу), аналогично C# Tag свойству Control.

В основном это до Вы, для чего вы используете это свойство.

...