Delphi 编辑和备忘录中的文本偏移

标签 delphi horizontaloffset

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

alt text http://img188.imageshack.us/img188/7668/editmemo.png

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

最佳答案

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 )

关于Delphi 编辑和备忘录中的文本偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/885650/

相关文章:

delphi 按回车键

delphi - 用接口(interface)在 Delphi 中实现观察者模式

WPF - 动画 ListBox.ScrollViewer.Horizo​​ntalOffset?

Silverlight ScrollViewer 初始水平偏移

winforms - 如何在Delphi中的任务栏上显示透明且无边框的窗体?

delphi - 发现链接到数据集字段的数据感知控件

c++ - 本地 WideString 变量调试错误 "Int3 DbgBreakPoint"