我试图从使用Toolbar2000切换到常规工具栏,因为似乎没有德尔福XE2版本,它看起来像它使用一些大会,我只是不真的想要处理它,如果我不必。 (我真的很喜欢Delphi工具栏的淡入效果)德尔福toolbuttons剥离效果(TToolbutton)
但是,我不喜欢的是,按钮的背景获得了常规的蓝色按钮处理。我知道如何改变颜色,但是我可以不改变颜色并且没有在按钮周围绘制边框?
我已经实现了'OnAdvancedCustomDrawButton',但可用的标志看起来不能正常工作,我不确定它们如何与渐变色和热轨道颜色进行交互,并且发现有一些奇怪的闪烁或怪异的黑色背景。
下面是我如何创建工具栏
ToolBar1 := TToolBar.Create(Self);
ToolBar1.DoubleBuffered := true;
ToolBar1.OnAdvancedCustomDrawButton := Toolbar1CustomDrawButton;
ToolBar1.Transparent := false;
ToolBar1.Parent := Self;
ToolBar1.GradientEndColor := $7ca0c2; //RGB(194, 160, 124);
ToolBar1.GradientStartColor := $edeeed; //RGB(237, 238, 124);
ToolBar1.Indent := 5;
ToolBar1.Images := Normal;
ToolBar1.DrawingStyle := dsGradient;
ToolBar1.HotImages := Over;
ToolBar1.AutoSize := True;
ToolBar1.Visible := False;
,这里是我如何创建按钮(在一个循环中):
ToolButton := TToolButton.Create(ToolBar1);
ToolButton.Parent := ToolBar1;
ToolButton.ImageIndex := ToolButtonImages[Index].ImageIndex;
ToolButton.OnClick := ToolButtonClick;
,这里是我的AdvancedCustomDrawButton功能
procedure TMyForm.Toolbar1CustomDrawButton(Sender: TToolBar; Button: TToolButton;
State: TCustomDrawState; Stage: TCustomDrawStage;
var Flags: TTBCustomDrawFlags; var DefaultDraw: Boolean);
begin
Flags := [tbNoEdges, tbNoOffset];
DefaultDraw := True;
end;
因为它是德尔福可以从父对象继承并且在initialize()之后,如果你喜欢,你可以通过覆盖它来设置值吗?你是否有对象减号的代码示例或者如何实例化对象...? – MethodMan 2011-12-13 16:58:18
好吧,我添加了我的代码,我认为它不一定有帮助,但是你重写了什么?我不认为制作我自己的TToolButton会有帮助,因为现有的绘画功能甚至不在我想要摆脱的东西完成。也许我只需要设置`defaultdraw:= false`并自己做所有事情。 – 2011-12-13 17:07:59