CnPack VCL组件库中 TCnButtonEdit 组件的BUG修正

来源:互联网 发布:黄有龙 赵薇 知乎 编辑:程序博客网 时间:2024/06/09 18:44

 

  CnVCL 组件包版本:[2010-10-01] 20101001 

 

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

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;

原创粉丝点击