如何更改TPageControl上标签的方向?

时间:2009-04-20 17:29:05

标签: delphi delphi-2009 tabcontrol orientation tpagecontrol

我是Delphi的新手(再次 - 我在1994年使用过Delphi)。我现在有Delphi 2009专业版。

来自Java,我发现对象继承非常模糊。

我的用户想要带有左侧标签的标签页。但是,TPageControl不允许更改选项卡标签的方向或方向。他们希望标签上的文字从上到下阅读,字母旋转,使它们处于“正常”方向。使用左侧的标签,标签从下往上读取,字母旋转90度。在左侧,有一种倾向于将头部向左倾斜以阅读标签。我找到了标准TPageControl VCL的几个增强功能,它们为悬停和活动添加图像,文本和颜色更改,但没有任何内容允许在选项卡上操作字体方向或方向。

页面控制选项卡应如下所示:


一个

Ë
1


一个

Ë
2


一个

Ë
3

等等......

3 个答案:

答案 0 :(得分: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。)编译,start and enjoy

答案 1 :(得分:1)

与其说是一个DIY答案,但也想指出Delphi是一个基于组件的开发平台,并且有几个第三方VCL控件在渲染和主题控制方面提供了一些非常灵活的选项。

我已经习惯了,并建议:

HTH祝你好运

答案 2 :(得分:0)

正如X-Ray所说:你需要所有者绘制标签。这不是那么困难,我之前已经做过,但我还没有准备发布任何代码。您需要获取选项卡的画布并使用TextOut方法。