Создать время выполнения TTabItem, firemonkey

Похоже, мне нужна помощь с проектом. У меня есть подпрограмма, которая создает во время выполнения несколько TabItems для элемента управления страницы в firemonkey, и я хочу иметь кнопку закрытия на вкладке. Новая вкладка имеет флажок для загрузки кнопки закрытия из стилистера вкладок. На странице есть вкладка по умолчанию, и в некоторые кнопки я добавляю во время выполнения новые элементы вкладки. Мне удалось применить событие для закрытия вкладки по умолчанию, но она не работает в пределах созданных во время выполнения вкладок. Любая помощь будет оценена.

Это кусок кода для табем во время выполнения

procedure TForm1.Button1Click(Sender: TObject);
var
  t : TTabItem;
  o : TFmxObject;
  i : Integer;
  c : TControl;
begin
  t := TTabItem.Create(pgeControl);

  t.Parent := pgeControl;

  o := FindBinding('imgCloseTabPage');
  if o<>nil then
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if Components[i] is TCheckBox then
      begin
        TCheckBox(Components[i]).OnClick := CheckBox1Click;
      end;
    end;
  end;

  if pgeControl.TabCount - 1 <= nTab then
  begin
    nTab := nTab + 1;
    t.Index := nTab
  end
  else
  begin
    t.Index := pgeControl.TabCount - 1;
    nTab := pgeControl.TabCount - 1;
  end;
  t.Tag := nTab;

  t.Text := 'Some text...' + ' ' + IntToStr(nTab);
  t.Name := 'tabPatient' + IntToStr(nTab);

  t.Height := 35;
  t.Width := 250;
  t.Margins.Top := 0;
  t.Margins.Left := 0;
  t.Margins.Bottom := 0;
  t.Margins.Right := 0;

  t.Padding.Top := -5;
  t.Padding.Left := 0;
  t.Padding.Bottom := 0;
  t.Padding.Right := 0;

  t.TextAlign := TTextAlign.taLeading;
  t.Width := (Length(t.Text) * 6 ) + 60;
  t.Font.Size := 15;
  t.StyleLookup := 'tabMainStyle1';

  l := TLayout.Create(t);
  l.Parent := t;
  l.Align := TAlignLayout.alClient;
  l.Margins.Top := -5;
  l.Margins.Left := 5;
  l.Margins.Right := 5;
  l.Margins.Bottom := 5;
  l.Padding.Top := 0;
  l.Padding.Left := 0;
  l.Padding.Bottom := 0;
  l.Padding.Right := 0;

  pgeControl.ActiveTab := pgeControl.Tabs[pgeControl.TabCount - 1];
end;
 Peacelyk21 июн. 2012 г., 11:50
Вы создаете новый флажок для каждого нового табита?
 ManosM21 июн. 2012 г., 14:41
Нет, я не создаю флажок для каждого нового tabitem, он на стилизаторе, который загружается внутри элементов вкладки, когда они создаются во время выполнения.

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

Решение Вопроса

after применив собственный стиль. В настоящее время вы называете этоbeforeтак что он не может найти объект. Кроме того, была ошибка, когда вы искали объект.

так что положи это

o := t.FindBinding('imgCloseTabPage');
if o<>nil then
begin
  if o is TCheckBox then
    TCheckBox(o).OnClick := CheckBox1Click;
end;

после

t.StyleLookup := 'tabMainStyle1';

и событие должно быть назначено.

 ManosM21 июн. 2012 г., 13:53
Спасибо за помощь, но, похоже, не работает. Даже если я изменю код по вашему предложению, событие не сработает. Событие игнорируется в обоих случаях. У тебя есть другая идея? Я могу послать вам проект дыры, в случае необходимости. Еще раз спасибо С наилучшими пожеланиями
 ManosM21 июн. 2012 г., 14:52
Забудьте мой комментарий. Мне удалось решить, с вашей помощью. Большое спасибо.

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