T_QuestionKind=(qkOneChoice,qkString,qkNumber,qkReorder) - перечислимый тип, RGQ_Kind:TRadioGroup, Q_Buttons:array of TRadioButton, cQKhint и cQKname - константы-массивы array[T_QuestionKind] of string - тексты хинтов и подписей для каждой кнопки, Lasts.QKindSelected переменная из ini-файла
- Код: Выделить всё
- procedure TEditForm.Init_QType;
 var i:T_QuestionKind;
 begin
 for i:=Low(T_QuestionKind) to High(T_QuestionKind) do begin
 Q_buttons[i]:=TRadioButton.Create(RGQ_Kind);
 with Q_buttons[i] do begin
 Width:=cDefRButHeight;
 Height:=cDefRButHeight;
 Hint:=cQKhint[i];
 Visible:=true;
 TabOrder:=ord(i);
 Caption:=cQKname[i];
 Parent:=RGQ_Kind;
 OnClick:=@RGQ_KindClick;
 end;
 end;
 RGQ_Kind.Height:=(ord(High(T_QuestionKind))+2)*cDefRButHeight; //растягиваем в высоту
 Q_buttons[T_QuestionKind(Lasts.QKindSelected)].Checked:=true;
 end;
Кнопки создаются, однако RGQ_Kind.items.count=0, и при выборе одной из кнопок RGQ_Kind.itemindex не меняется, оставаясь =-1.
Если же созданные кнопки добавлять через RGQ_Kind.items.AddObject, то пропадают дополнительные свойства кнопок - OnCLick, Hint и что-то еще.
Замена Parent на Owner или их совместное использование ничего не меняет.
Временный выход из положения нашелся использованием TabOrder с его запоминанием в отдельной переменной в функции OnClick, но что-то мне это не нравится, явно должен быть более ортодоксальный способ.
Прошерстил хелп по Д-7, нашел только упоминание о создании кнопок в дизайнере и ничего на тему их создания в рантайме.
Any suggestions?







