Смещения текста Delphi в редактировании и заметках - PullRequest
4 голосов
/ 20 мая 2009

Я заметил, что в Delphi 2009 текст в многострочном напоминании имеет отступ слева от текста в однострочном редактировании, хотя оба они основаны на TCustomEdit. Точное смещение зависит от размера шрифта:

альтернативный текст http://img188.imageshack.us/img188/7668/editmemo.png

Я ищу простой способ выровнять текст заметки с тем же смещением, что и текст редактирования. Если это невозможно, как насчет метода вычисления смещения в пикселях с учетом размера шрифта, чтобы я мог отрегулировать расположение (динамически создаваемых и позиционированных) полей перед их отображением? Я думаю, что в более ранней версии Delphi два смещения были одинаковыми.

1 Ответ

4 голосов
/ 20 мая 2009

Существует 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;

(вдохновлено этим )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...