更改字体标签中间标题

问题描述:

我正在使用德尔福7.更改字体标签中间标题

我想在选项卡标题上指出与选项卡相关的页面有内容。如果在页面上的dbgrid中有内容,我想按照带有蜿蜒的字幕来表示,字母n表示为一个框。所以现在,而不是阅读“病人历史”的标题,它会阅读“病史”+一个小填充框。

由于符号是带有字体类型翼形的字母'n',我想要在字幕中间更改字体类型并添加字母n,从而在字幕结尾处产生一个小填充框。

Tabsheet.caption := 'Patient History ' + changefonttypetowinding + 'n'. 

可以吗?

+1

像这样的工作如此伟大与Unicode(Delphi 2009+)。 – 2011-03-05 19:30:29

+1

建议:除非您准备转向Unicode,否则请使用Andreas简单的使用*的建议。如果这是一份合同工作,告诉他们如果他们支付您迁移到DelphiXE(给出估计),他们可以让黑色方块看起来不错。他们也可以拥有它,如果他们不介意它“看起来很有趣”,与业主汲取解决方案。或者他们现在可以拥有*,无需额外费用。 – 2011-03-05 19:59:59

你在这里进入了自主绘制的领域,一旦考虑到主题,这并不是完全无足轻重的。如果你确实走了那条路线,那么我不会打扰Wingdings,我只是画一个TCanvas.FillRect

就我个人而言,我会考虑一个Unicode Delphi,并使用U + 2587(▇)或其朋友之一。

+0

应该是两个答案,因为这里有两个完全不同的解决方案。我会把每一个都提高...; - > – 2011-03-05 17:48:18

+0

@Chris非常好的你这么说!其实我不会考虑U + 2587以外的任何东西! – 2011-03-05 17:52:16

由于您没有使用支持Unicode的Delphi版本,因此您被限制为拥有者绘图或“ANSI”字符集,正如David所指出的那样。 (我的建议是,你升级到Delphi 2009+,Unicode是数字世界发生的最好的事情,使用Unicode,你可以得到数以万计的字符(理论上,每种字体!)而不是127或255。这包括各种语言以及技术和数学符号以及各种丁字形,甚至还有一个苯环:U + 232C苯环:⌬)

现在让我们假设升级是不可能的。那么,如果我是你,我会使用历史的“标准字符”来达到这个目的,即星号(*)。我在你的情况下非常强烈地推荐这个。

如果你需要一个黑色的方形,那么你必须做所有者绘图。你可以这样做:

// Please don't do this -- see comments below 
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; 
    TabIndex: Integer; const Rect: TRect; Active: Boolean); 
const 
    Padding = 8; 
    SqSize = 6; 
var 
    capt: string; 
    r: TRect; 
begin 
    capt := TTabControl(Control).Tabs[TabIndex]; 
    r := Rect; 
    r.Left := r.Left + Padding; 
    DrawText(Control.Canvas.Handle, capt, length(capt), r, DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS); 
    r.Left := r.Right - Padding - SqSize; 
    r.Right := r.Left + SqSize; 
    r.Top := (r.Bottom - r.Top - SqSize) div 2; 
    r.Bottom := r.Top + SqSize; 
    FillRect(Control.Canvas.Handle, r, GetStockObject(BLACK_BRUSH)); 
end; 

但是,请注意,这将禁用视觉主题!它看起来很可怕!请不要这样做!

+2

+1我知道你不能抵制写一些所有者绘制代码的尝试! – 2011-03-05 19:56:24

+0

代码+1。不过,如果我可以为你的答案的最后一行添加一个或两个额外的投票。除非你知道你在做什么,否则所有者绘制是*丑陋的,并且启用了主题。 – 2011-03-05 19:56:44

+0

@大卫,你认识我!但是这次更多的是说明为什么你不应该试图自己画它。 – 2011-03-05 19:57:44