Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2009, 11:32   #1
Maxs
Заблокирован
 
Регистрация: 06.04.2009
Сообщений: 130
По умолчанию Высота строки в Memo

Как узнать высоту строки в мемо и задать высоту в нем в этих строках?
Побовал вот так, но не получилось:
Memo.Height:=Memo.Font.Height*StrTo Int(Edit2.Text);
В Edit2 задается высота Memo в строках.
Высота 1 строки получается в половину строки. Пробовал умножать, прибавлять, но если строк несколько, то погрешность при умножении на их количество большая.
Maxs вне форума Ответить с цитированием
Старый 09.05.2009, 16:50   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Такое впечатление сложилось по опыту, что Font.Height - это совсем не то, что объявлено в справке.
Самое корректное определение высоты строки получается через Canvas.
Т.к. TMemo не предоставляет свойство Canvas, то можно определить высоту строки через сторонний Canvas присвоением ему шрифта из нашего TMemo.
Другие способы дают не совсем то что надо.
Код:
procedure ????;
var Can : TCanvas;
begin
  Can := TCanvas.Create;
  Can.Handle := CreateCompatibleDC(GetDC(0));
  try
    Can.Font.Assign(Memo1.Font);
    Memo1.Height := Can.TextHeight('Wg')*StrToInt(Edit1.Text)+6; 
    //6 - добавляется размер обрамления вверху и внизу компонента TMemo; значение подбирается
  finally
    DeleteDC(Can.Handle);
    Can.Handle := 0;
    Can.Free;
  end;
end;
Вся эта архитектура прекрасно работает - бояться не надо. Можно оформить функцией, которая возвращает высоту одной строки в точках.
Скандербег вне форума Ответить с цитированием
Старый 09.12.2009, 12:35   #3
095
Пользователь
 
Регистрация: 03.10.2007
Сообщений: 19
По умолчанию

ойййёй ... а как же последняя строчка при нажатии enter?
095 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
memo поиск и перенос строки andrey poki Общие вопросы Delphi 4 22.03.2009 06:54
Удаление конкретной строки Memo JakSon Общие вопросы Delphi 6 03.03.2008 09:35
Поменять местами строки в memo Бублик Помощь студентам 5 18.11.2007 15:27
Удалить из Memo повторяющиеся строки Etar Компоненты Delphi 2 28.06.2007 18:34
Как из Memo вывести строки в txt файл в конец там существующих Saili Компоненты Delphi 8 16.12.2006 11:23