4

我注意到在 Delphi 2009 中,多行备忘录中的文本在左侧的填充与单行编辑中的不同,尽管两者都基于 TCustomEdit。确切的偏移量取决于字体大小:

替代文字 http://img188.imageshack.us/img188/7668/editmemo.png

我正在寻找一种简单的方法来让备忘录文本与编辑文本的偏移量相同。如果这是不可能的,那么在给定字体大小的情况下,如何计算偏移量(以像素为单位)的方法,以便我可以在显示之前调整(动态创建和定位的)字段的位置?我认为在早期版本的 Delphi 中,这两个偏移量是相同的。

4

1 回答 1

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;

(受此启发)

于 2009-05-20T07:04:10.757 回答