Raize Components 6.0 中的一点瑕疵
2012年02月25日 ? 学习交流 ? 暂无评论 ? 被围观 3 次+       
菲菲的家（ffhome.com）原创，转载请注明！

Raize Components是一组优秀的Delphi和C++builder的控件，6.0版全面支持Embarcadero RAD Studio XE2。为了达到全面支持XE2的目的，Raize公司对源代码进行了大量的改动，除支持Delphi 64bit编译外，对XE2新增的一些特性如VCL Style等也进行了支持。

刚刚到手，迫不及待安装试用，却发现了Raize Components 6.0存在的一点点瑕疵。

这个瑕疵就是TRzSizePanel组件在Align值为alTop或alBottom时，它的HotSpot自绘小箭头和点线存在问题。哈哈，有人说了，这算什么问题……这的确是个小小的问题，也许你根本用不上TRzSizePanel组件，也许你用TRzSizePanel组件时HotSpotVisible值设为false，但如果你一旦用到HotSpot，没箭头是真的不爽……

Align值为alLeft或alRight时就没有问题，见以下图片，红色框内的就是没有箭头的HotSpot。

我花时间看了一下源代码，找到了解决这个瑕疵的办法：

1、到Raize Components 6.0组件的安装目录找到Source文件夹【例如C:\Program Files (x86)\Raize\RC6\Source】，打开RzSplit.pas文件；

2、找到函数定义procedure TRzCustomSizePanel.DrawHotSpot( Highlight: Boolean );【大概是第4476行】

3、在这个函数体中有一句

R := DrawSides( Canvas, FHotSpotRect, HSFrameColor, HSFrameColor, sdAllSides );

在这句的上面增加以下两行代码：

  with Canvas, FHotSpotRect do                  //ffhome
        begin                                                        //ffhome

在函数结尾补上一个

  end;                                                         //ffhome

保存。

4、将这个改动的文件编译。

你可以载入Source文件夹内的RaizeComponentsVcl.dpk编译RzSplit.pas的32bit和64bit，然后把RzSplit.dcu文件拷贝到Lib\RS-XE2下对应的32bit和64bit文件夹内；也可以使用Raize提供的“编译安装一体化批处理文件”完成这项工作，这个文件就在Source文件夹内，文件名是!Build_RC6.cmd。

打开!Build_RC6.cmd文件进行修改，英文好一点的就不要往下看了，自己按照提示就可以修改好了，英文不好的，我会提示你更改哪几项，具体要改的值得根据你自己电脑实际更改。

①找到 rem goto InitComplete 行，吧前面的rem去掉；

②找到 set SysPath32= ，等号后面的路径改为你自己电脑的路径，64位Windows应该是SysWOW64而不是System32；

③找到 set VCLVersion= ，等号后面填写版本，XE2是16；

④找到 set DCC32EXE= 和 set DCC64EXE= ，等号后面是DCC32.exe和DCC64.exe文件的路径，这两个文件都在bin目录下【例如C:\Program Files\Embarcadero\RAD Studio\9.0\Bin\】；

⑤看到以下行

rem ****************************************************************************
      rem **** DO NOT CHANGE ANYTHING BELOW THIS POINT *******************************
      rem ****************************************************************************

之下的内容就不要动了，否则后果自负。

至此，!Build_RC6.cmd文件修改好了，应该可以执行了，你一执行，发现RzBorder.pas文件报错，TNND，还要修改这个RzBorder.pas文件。

其实修改原则很简单，找到 DotMasks: TRzLEDCharacters 行，把它后面赋值的内容加一些右大括号【 } 】，使得不应该是注释的内容变回代码就行了，本人举个例子：

请将 ( {厎 Col0: $00; Col1: $00; Col2: $00; Col3: $00; Col4: $00 ),

改为 ( {厎} Col0: $00; Col1: $00; Col2: $00; Col3: $00; Col4: $00 ),

可不少行呢，认真改哟。

全部改好后，保存。执行!Build_RC6.cmd批处理，编译并安装完成。

至此，再次使用TRzSizePanel组件，在Align值为alTop或alBottom时完全正常，箭头颜色也会跟着你设置的VCL Style而变化，……大功告成！

奇怪，Raize也是个知名公司啊，Raize Components作为公司的招牌组件怎么会有这样的低级错误呢？？

菲菲的家（ffhome.com）原创，转载请注明！

上述改动的源文件及编译后的dcu文件可以直接在此下载，劝君多动手啊，别老等现成！

Raize Components 6.0的下载就不用提供了吧~~
