2009-05-20 4 views
4

Delphi 2009では、複数行のメモのテキストは、TCustomEditに基づいていますが、1行の編集の左側に異なるパディングが表示されています。正確なオフセットは、フォントサイズに依存します:私は編集テキストとして同じオフセットに合わせメモテキストを取得するための簡単な方法を探しています編集とメモのDelphiのテキストオフセット

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

。それが不可能な場合は、フォントサイズを指定して、オフセットを何ピクセル単位で計算するのか、それを表示する前に(動的に作成され配置された)フィールドの位置を調整できる方法はありますか? Delphiの以前のリリースでは、2つのオフセットは同じだと私は思います。

答えて

4

EM_GETMARGINSがあります。それが「シンプル」なのかどうかはわかりません。 :-)

EDIT:これを試してみてください:(thisに触発さ)

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; 

+0

を素晴らしい、ありがとう。 EM_SETMARGINSもうまくいきます! – frogb

関連する問題