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;