在TTabSet控件中使用TStatusBar样式和图形效果

时间:2011-01-21 12:45:55

标签: delphi controls windows-xp coding-style compatibility

操作系统:Windows XP Pro SP3

问题:

Sorry for small image. Click to enlarge.

  

如您所见 - 左侧位于StatusBar   控制 ;在右侧 - TabSet控件。

您建议将StatusBar样式(Top和Button的动态变暗)“复制”到TabSet控件中的方法是什么?像 clNone AlphaBlend 这样的颜色处理不起作用...... TransparentColor 道具也不可用......

我再次感到困惑,因为有很多选项(imho)可供选择,但我不知道各种Windows版本中可能存在的副作用和兼容性。

非常感谢提供任何帮助。

  

P.S。对不起,如果很难注意到   问题我在我的小事上经历过   上面的图片,但如果我要调整它,它   会失去质量而且可能会失败   问题注意到任何事情..


重新提出问题

StatusBar1是TabSet1的Parent。现在它看起来像这样(错误):

alt text

我必须实现这个StatusBar1.Panels [0]和TabSet1外观(正确):

http://i.stack.imgur.com/gd9r9.png


我还尝试对StatusBar1.Panels [0]使用psOwnerDraw技术(http://delphi.about.com/od/vclusing/a/statusbar_owner.htm)并获得此结果:

alt text

2 个答案:

答案 0 :(得分:3)

我在Turbo Delphi中尝试了以下内容:

  • 创建一个新的VCL应用程序。
  • 在表单上删除TStatusBar和TTabSet。
  • 添加以下OnCreate处理程序:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      StatusBar1.SimplePanel := True;
      StatusBar1.SimpleText := 'Hallo';
      TabSet1.Tabs.Add('Code');
      TabSet1.Tabs.Add('History');
      TabSet1.SetBounds(30, 0, TabSet1.Width, StatusBar1.Height); // Replace the 204
      TabSet1.ParentBackground := True;
      TabSet1.SoftTop := True;
      TabSet1.Style := tsSoftTabs;
      TabSet1.Parent := StatusBar1;
    end;
    
  • 将XPMan添加到Unit1的使用条款。

  • 在XP下运行该应用程序。这给了我以下形式:alt text

这是你想要的吗?

答案 1 :(得分:0)

您有两种基本方法可以实现此目的:

  1. 按照您复制的控件的方式执行此操作,即调用XP Theming引擎。你应该知道,如果你这样做,这个效果是有条件的,只在(a)支持和(b)启用主题的系统上显示,所以任何选择了Windows经典主题的用户(Windows 2000时代的外观)和感觉)不会看到它。

  2. 写一些代码来自己做这些效果。在这种情况下,将位图小心地绘制到所有者绘制选项卡顶部的区域中。这将为您提供一致的应用程序外观,但会忽略用户可能 - 有意或无意的首选项应用程序外观。

  3. 显然,这两种方法都存在权衡。