首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改TPageControl上标签的方向?

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

Stack Overflow用户
提问于 2009-04-20 17:29:05
回答 3查看 7K关注 0票数 3

我是第一次接触Delphi (同样,我在1994年使用过Delphi )。我现在有了Delphi 2009 Pro。

来自Java的我发现对象继承非常晦涩难懂。

我的用户想要标签页,标签在左边。但是,TPageControl不允许更改选项卡标签的方向或方向。他们希望标签上的单词在字母旋转的情况下从上到下阅读,这样它们就处于“正常”方向。标签在左边,标签从下往上读,字母旋转90度。向左倾斜,并且有向左倾斜头部来阅读标签的趋势。我发现了一些对标准TPageControl VCL的增强,它们为悬停和活动添加了图像、文本和颜色更改,但没有允许在选项卡上操纵字体方向或方向。

页面控件表格应该看起来像这样:

P

一个

G

E

1

P

一个

G

E

2

P

一个

G

E

3.

以此类推。

EN

回答 3

Stack Overflow用户

发布于 2009-04-20 18:23:03

1.)设置TPageControl属性:

代码语言:javascript
复制
TabPosition := tpLeft;
OwnerDraw := True;
TabWidth := 180;    //set to any adequate value because
                    // TPageControl doesn't have a measure event handler 

2.)使用以下OnDrawTab代码:

代码语言:javascript
复制
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

票数 8
EN

Stack Overflow用户

发布于 2009-04-20 18:45:34

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

我自己用过的几个,我推荐:

  • Raize Controls.
  • JVCL包含大量控件,并且是开源的(MPL License)。

HTH和好运

票数 1
EN

Stack Overflow用户

发布于 2009-04-20 18:14:31

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/769285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档