2009-05-20 2 views
4

Ich habe festgestellt, dass in Delphi 2009 der Text in einer mehrzeiligen Memo links von der in einer einzeiligen Bearbeitung unterscheidet, obwohl beide auf TCustomEdit basieren. Die genaue Offset ist abhängig von der Schriftgröße:Delphi-Text-Offsets in Bearbeitungen und Memos

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

ich für eine einfache Art und Weise suchen die Memotext mit dem als Text bearbeiten versetzt gleichen ausgerichtet zu bekommen. Wenn das nicht möglich ist, wie wäre es mit einer Methode, den Offset in Pixel zu berechnen, wenn die Schriftgröße angegeben wird, damit ich die Positionierung der (dynamisch erstellten und positionierten) Felder vor der Anzeige anpassen kann? Ich denke, dass in einer früheren Version von Delphi die beiden Offsets die gleichen waren.

Antwort

4

Es gibt EM_GETMARGINS. Ich bin mir nicht sicher, ob das als "einfach" gilt. :-)

EDIT: Versuchen Sie folgendes:

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; 

(inspiriert von this)

+0

Großen Dank. EM_SETMARGINS funktioniert auch gut! – frogb

Verwandte Themen