操作系统:Windows XP Pro SP3
问题:
如您所见 - 左侧位于StatusBar 控制 ;在右侧 - TabSet控件。
您建议将StatusBar样式(Top和Button的动态变暗)“复制”到TabSet控件中的方法是什么?像 clNone 或 AlphaBlend 这样的颜色处理不起作用...... TransparentColor 道具也不可用......
我再次感到困惑,因为有很多选项(imho)可供选择,但我不知道各种Windows版本中可能存在的副作用和兼容性。
非常感谢提供任何帮助。
P.S。对不起,如果很难注意到 问题我在我的小事上经历过 上面的图片,但如果我要调整它,它 会失去质量而且可能会失败 问题注意到任何事情..
重新提出问题
StatusBar1是TabSet1的Parent。现在它看起来像这样(错误):
我必须实现这个StatusBar1.Panels [0]和TabSet1外观(正确):
我还尝试对StatusBar1.Panels [0]使用psOwnerDraw技术(http://delphi.about.com/od/vclusing/a/statusbar_owner.htm)并获得此结果:
答案 0 :(得分:3)
我在Turbo Delphi中尝试了以下内容:
添加以下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的使用条款。
这是你想要的吗?
答案 1 :(得分:0)
您有两种基本方法可以实现此目的:
按照您复制的控件的方式执行此操作,即调用XP Theming引擎。你应该知道,如果你这样做,这个效果是有条件的,只在(a)支持和(b)启用主题的系统上显示,所以任何选择了Windows经典主题的用户(Windows 2000时代的外观)和感觉)不会看到它。
写一些代码来自己做这些效果。在这种情况下,将位图小心地绘制到所有者绘制选项卡顶部的区域中。这将为您提供一致的应用程序外观,但会忽略用户可能 - 有意或无意的首选项应用程序外观。
显然,这两种方法都存在权衡。