3

TTabSet から 1 つのタブを無効にすることはできますか (ただし、完全に削除することはできません)。どのように?

これを行うための明白な方法があるようには見えません。

4

1 に答える 1

4

ラベルの色を無効なフォントの色に変更するには、Style プロパティを 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;
于 2013-05-24T19:56:24.110 に答える