4

Delphi 2009では、複数行のメモのテキストの左側のパディングが1行の編集のテキストとは異なりますが、どちらもTCustomEditに基づいています。正確なオフセットは、フォントサイズによって異なります。

代替テキストhttp://img188.imageshack.us/img188/7668/editmemo.png

メモテキストを編集テキストと同じオフセットに揃える簡単な方法を探しています。それが不可能な場合は、フォントサイズを指定して、オフセットがピクセル単位でどのようになるかを計算して、(動的に作成および配置された)フィールドの位置を調整してから表示できるようにする方法はどうでしょうか。Delphiの以前のリリースでは、2つのオフセットは同じだったと思います。

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 に答える