Board logo

Subject: TCnButtonEdit 组件的 ButtonVisible 与 Alignment 属性的配合BUG [Print This Page]

Author: gaoyanan    Time: 2010-10-25 17:07     Subject: TCnButtonEdit 组件的 ButtonVisible 与 Alignment 属性的配合BUG

前几天发了一贴,一直没有被审核,我不知道是不是因为我丢了个网页链接的原因,因为我另一个回复贴也被一直审核中。

网络很烂,可能会发不出来,所以我简明说一下问题:

1.当ButtonVisible 为true的时候,Alignment 不会有任何问题,当ButtonVisible 为False时,修改Alignment 为taRightJustify,这个时候,会发现文字的右边会缺少几个字符,他们跑到右侧边界外面了,宽度大概就是按钮宽度,原因在UpdateFormatRect函数中,如下屏蔽代码,问题解决。
原因应该是ClientRect代表的就是整个对象的绘图区。小弟对windows消息不是很纯熟,猜的。

procedure TCnButtonEdit.UpdateFormatRect;
var
  Rect: TRect;
begin
  Rect := ClientRect;
  if FButtonVisible then
    Dec(Rect.Right, FButton.Height) {
  else
    Inc(Rect.Right, FButton.Height)}
;
  SendMessage(Handle, EM_SETRECTNP, 0, Longint(@Rect));
end;

2.解决上一个问题后,依旧设置ButtonVisible 为False,在设计期间修改Alignment属性,按钮会莫名其妙出现,如下增加一段判断代码,问题解决。

procedure TCnButtonEdit.WMSize(var Msg: TWMSize);
begin
  inherited;
  if FButtonVisible then
    FButton.Width := FButton.Height
;
  UpdateFormatRect;
end;


注:没有严格检查其他问题。

[ 本帖最后由 gaoyanan 于 2010-10-25 17:09 编辑 ]
Author: Passion    Time: 2010-10-25 20:57

感谢报告,我们检查一下争取合并进去。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0