我試圖從使用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