2

プロジェクトについて助けが必要なようです。実行時の複数のTabItemを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;
4

1 に答える 1

1

カスタムスタイルを適用した、 FindBindingを呼び出す必要があります。現在、これを前に呼び出しているため、オブジェクトが見つかりません。さらに、オブジェクトを探していたときに間違いがありました。

だからこれを入れて

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

t.StyleLookup := 'tabMainStyle1';

イベントを割り当てる必要があります。

于 2012-06-21T11:21:58.243 に答える