在Delphi的TTabSet中禁用选项卡?

时间:2013-05-24 19:13:11

标签: delphi

是否可以从TTabSet中禁用(但不是完全删除)单个选项卡?怎么样?

似乎没有明显的方法可以做到这一点。

1 个答案:

答案 0 :(得分:4)

为了将标签的颜色更改为禁用的字体颜色,您必须通过将标签属性更改为tsOwnerDraw来覆盖标签的绘图。完成后,您可以使用OnDrawTab事件,例如:

var
indexOfDisabledTab : Byte = 1;

procedure TForm1.TabSet1DrawTab(Sender: TObject; TabCanvas: TCanvas; R: TRect;
  Index: Integer; Selected: Boolean);
var S : String;
begin

   if IndexOfDisabledTab = Index
   then
     TabCanvas.Font.Color := clGray
   else
     TabCanvas.Font.Color := clBlack;

  S := TabSet1.Tabs.Strings[Index];
  TabCanvas.TextRect(R, S, [tfVerticalCenter,tfSingleLine]);

end;

为防止用户点击标签,您可以使用TTabSet OnChange事件,如下所示:

procedure TForm1.TabSet1Change(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
begin

 AllowChange := not (NewTab = IndexOfDisabledTab);

end;