3

私は Delphi を初めて使用します (繰り返しますが、1994 年に Delphi を使用していました)。現在、Delphi 2009 Pro を使用しています。

Java 出身の私は、オブジェクトの継承が非常にわかりにくいと感じています。

ユーザーは、左側にタブがあるタブ付きページを望んでいます。ただし、TPageControl では、タブ ラベルの方向や向きを変更することはできません。彼らは、タブの単語を上から下に読み、文字を回転させて「通常の」向きにすることを望んでいます。左側のタブを使用すると、ラベルは下から上に読み取られ、文字は 90 度回転します。タブを読むために頭を左に傾ける傾向があります。標準の TPageControl VCL には、ホバーとアクティブのイメージ、テキスト、および色の変更を追加するいくつかの機能強化が見つかりましたが、タブのフォントの方向や方向を操作できるものは何もありませんでした。

ページ コントロール テーブルは次のようになります。

ページ 1
_ _ _


ページ 2
_ _ _


ページ 3
_ _ _


等々...

4

3 に答える 3

8

1.) TPageControl プロパティを設定します。

TabPosition := tpLeft;
OwnerDraw := True;
TabWidth := 180;    //set to any adequate value because
                    // TPageControl doesn't have a measure event handler 

2.) 次の OnDrawTab コードを使用します。

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  I: Integer;
  PageControl: TPageControl;
  TextFormat: TTextFormat;
  Text: string;
  TextRect: TRect;
begin
  PageControl := Control as TPageControl;

  Text := PageControl.Pages[TabIndex].Caption;

  for I := Length(Text) - 1 downto 1 do
  begin
    Text := Copy(Text, 1, I) + sLineBreak + Copy(Text, I+1, MaxInt);
  end;

  TextRect := Rect;
  TextRect.Left := TextRect.Left + 5;
  TextRect.Top := TextRect.Top + 3;

  TextFormat := [tfCenter];

  PageControl.Canvas.TextRect(
    TextRect,
    Text,
    TextFormat
    );
end;

3.) コンパイルして、起動して、楽しんでください!

于 2009-04-20T18:23:03.497 に答える
1

DIY の回答というほどではありませんが、Delphi はコンポーネント ベースの開発プラットフォームであり、レンダリングとテーマ コントロールで非常に柔軟なオプションを提供するいくつかのサード パーティ製 VCL コントロールがあることも指摘したいと思います。

私が自分で使用してお勧めするもの:

  • コントロールを上げます。
  • JVCLコントロールのボート ロードが含まれており、オープン ソース (MPL ライセンス) です。

HTHと幸運

于 2009-04-20T18:45:33.710 に答える