很容易获得TEdit控件的外部尺寸,但包括斜角(或框架,取决于Ctrl3d是否为真)。我想找出仅TEdit的白色输入区域的尺寸和位置。
我尝试过TEdit.ClientRect,但是如果Ctrl3D为true,它似乎只给出了正确的大小。我仍然需要在Left和Top上添加两个像素来调整斜角。
如果Ctrl3D为false,则大小太大两个像素,左/上偏移量必须增加一。
有没有办法获得这个区域的正确尺寸和位置,例如使用Windows API函数?
答案 0 :(得分:3)
在Vista及更高版本上,您可以使用EM_GETRECT
消息:
function GetEditRect(Edit: TCustomEdit): TRect;
begin
SendMessage(Edit.Handle, EM_GETRECT, 0, LPARAM(@Result));
end;
不幸的是:
在某些情况下,
EM_GETRECT
可能不会返回确切的值EM_SETRECT
或EM_SETRECTNP
设置 - 它大致正确, 但它可能会偏离几个像素。