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 回答
0

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

于 2009-04-20T18:14:30.930 回答