我注意到在Delphi 2009中,多行备忘录中的文本在左侧与单行编辑中的填充不同,尽管两者都基于TCustomEdit。确切的偏移量取决于字体大小:
alt text http://img188.imageshack.us/img188/7668/editmemo.png
我正在寻找一种简单的方法来使备忘录文本与编辑文本具有相同的偏移量。如果那是不可能的,那么在给定字体大小的情况下计算偏移量的方法怎么样呢,这样我可以在显示它们之前调整(动态创建和定位)字段的位置?我认为在早期版本的Delphi中,两个偏移是相同的。
答案 0 :(得分:4)
有EM_GETMARGINS。我不确定这是否算“简单”。 : - )
编辑:试试这个:
type
tSynMargins = record
left, right: Word;
end;
function GetLeftMargin(hEdit: HWND): Word;
var
margins: Longint;
begin
margins := SendMessage(hEdit, EM_GETMARGINS, 0, 0);
Result := tsynMargins(Margins).left;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := IntToStr(GetLeftMargin(Edit1.Handle));
Memo1.Text := IntToStr(GetLeftMargin(Memo1.Handle));
end;
(灵感来自this)