这个BUG只能去问DELPHI开发者了!----About ToolBar (已经修改了一半) (100分)

  • 主题发起人 主题发起人 kiss2
  • 开始时间 开始时间
我现在发现用ToolBar1.Perform(TB_DELTETBUTTON, 1, 0); 删除一个按钮后
再ToolBar1.Perform(TB_CUSTOMIZE, 0, 0);
刚才那个按钮就会出现在左栏中
 
看了
http://msdn.microsoft.com/library/en-us/shellcc/platform/CommCtls/ToolBar/ToolBar_Using.asp?frame=true#Customizing_Toolbars

现在的问题是怎样接收notification消息?
 
to kiss2,是bug还是没错的。
我现在在对话框中乱点一阵,经常能出现"list out of range"的错误。
你试试看。
 
正在试图重写ttoolbar,faint。。。
 
我正在努力搞定它..........累死我了........谁来帮帮我啊.........

to Adnil: 写好了发给我一份,谢谢! kiss2@yeah.net
 
Foxmail 4.1好像是用DELPHI做的,但好的TOOLBAR都可以"自定义"的.
我想DELPHI的TOOLBAR不是BUG,而是我们还没有找到方法实现罢了.
 
》》有人如果想出来了,我就决定不使用toolbar97了,并且马上送500分! 不食言。
不要这么绝对嘛,赔500分不说,这么好的控件也不用了?呵呵~~~
一个小时的寻找,发现。。。

修改unit ComCtrls;很简单的,只要注释掉几行就行了,不过只是急功近利,
不知道这样的修改有没有其它的影响,目前没有发现。

procedure TToolBar.CNNotify(var Message: TWMNotify);
var
Button: TToolButton;
DefaultDraw: Boolean;
R: TRect;
Flags: TTBCustomDrawFlags;
LogFont: TLogFont;
begin
with Message do
case NMHdr^.code of
TBN_DROPDOWN:
//...
TBN_ENDADJUST:
begin
把下面几行注释掉就行了。
{ if not FRestoring then
begin
RecreateButtonsFromToolbar;
FCustomizing := False;
end
else }if Assigned(FOnCustomizeReset) then
FOnCustomizeReset(Self);
FRestoring := False;
end;
TBN_TOOLBARCHANGE:
//...
end;
end;
end;
 
to savenight:
按照你的修改后但是没有任何变化啊??为什么??
 
我不知道你说的没有变化是指什么?
是你不会修改源码还是我的方法有问题,如果是前者,那么在本论坛查一下怎样修改源码。:)
 
to savenight:
我已经修改了代码,但是还是会出现错误。
请问你修改代码后,不会出现我说的那个错误吗?
 
》》但是改变了几个按钮后,当再次呼出自定义窗口时,刚刚几个按钮消失了,也就是说自定义窗口不能保存设置
我解决的是你说的这个错误。按我的做法就可以保存了。
 
to savenight:
我已经按你的做法做了,但是没有用啊,好象他没有重新编译ComCtrls文件
 
修改VCL源码的方法:
1。把要修改的文件(这里是ComCtrls.pas)拷到工程所在的目录,并把该文件加入本工程。
2.rebuild工程(这时应该能看到效果了)。
3. 用工程所在的目录里新产生的ComCtrls.dcu覆盖掉../Borland/Delphi6/Lib里同名文件,
用工程所在的目录里新产生的ComCtrls.pas覆盖掉../Borland/Delphi6/Source/Vcl里同名文件。
 
to savenight:
按照你的方法果然可以保存了,但是BUG还是很多,比如我在上面乱按,有些按钮就会消失或者
在会增加出很多按钮,还有按下重至,而他还原的却不是原来的那样!
 
》》增加出很多按钮
这些按钮是separater。
》》还有按下重至,而他还原的却不是原来的那样!
确实有这种情况,也希望大家也一起来看看,(怎么半天总是我在说?)
 
FLASHGET的工具栏自定义窗口中的重置也没有用

FOXMAIL4.1的工具栏好用像是用的其它控件。
 
[h4]有谁解决了吗??? [/h4]
 
自己编一个拉,最简单。
 
后退
顶部