delphi 光盘中有一个有一个演示程序名字是 coolstuf.我在这个程序中发现一个有趣的现象.一旦你将第三行工具栏“链接栏”拖动到最顶端,然后再拖回原来的位置,那么工具栏最下方会多出一个大概 40px 的空白区域.这个问题很恶心,我暂时称它作“工具栏错位”.在 google 中搜索,发现也有其他人讨论过此问题.原因大致是:当工具栏高度发生变化后,刷新消息 rbn_heightchange 发送的时候,高度没被正确计算.因此它在执行 adjustsize 时就出现了偏差,而导致了错位.
【程序编程相关:Delphi 8 for .NET As】 【推荐阅读:delphi2005探讨之一 】我没找到现成的解决方案,于是只好自己动手寻找突破口.我发现这个问题只有在当某个工具栏设置过 fixedsize = true 后才出现.于是想到了这样一个办法,就是在接受到 rbn_heightchange 后,先将所有工具栏都设置成 fixedsize = false.这样的话高度计算就正确了. 【扩展信息:function GetVersion(】 好了,我们开始着手修改 comctrls.pas 了. 1. 找到 procedure tcoolbar.cnnotify(var message: twmnotify); 2. 使用如下代码: case message.nmhdr^.code of rbn_heightchange: begin (* moved to wmsize(...) if isautosized and (componentstate * [csloading, csdestroying] = []) then begin readbands; beginupdate; try if autosize then adjustsize; finally ... 下一页