Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.06.2012, 16:49
mpdasa mpdasa вне форума
Прохожий
 
Регистрация: 08.07.2011
Сообщения: 18
Репутация: 10
Радость чтобы текст подгонялся по размеру окна

У меня RichEdit. В него вставлятся (из буфера обмена) 4-х строчный стих.
Надо, чтобы если строки не помещаются в окно (лезут в 5, 6... линию), то подгонять их по размеру окна уменьшая шрифт.

Ваш ход, знатоки
Ответить с цитированием
  #2  
Старый 02.06.2012, 17:13
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Код:
for i := 0 to RichEdit1.Lines.Count - 1 do
 if MaxWidth < RichEdit1.Canvas.TextWidth(RichEdit1.Lines.Strings[i]) then
   MaxWidth := RichEdit1.Canvas.TextWidth(RichEdit1.Lines.Strings[i]);
Вроде ничего не наврал...
Так ты получишь ширину самой длинной строки.
Ответить с цитированием
  #3  
Старый 02.06.2012, 18:23
mpdasa mpdasa вне форума
Прохожий
 
Регистрация: 08.07.2011
Сообщения: 18
Репутация: 10
Сообщение

Цитата:
Сообщение от PS11011010
Код:
for i := 0 to RichEdit1.Lines.Count - 1 do
 if MaxWidth < RichEdit1.Canvas.TextWidth(RichEdit1.Lines.Strings[i]) then
   MaxWidth := RichEdit1.Canvas.TextWidth(RichEdit1.Lines.Strings[i]);
Вроде ничего не наврал...
Так ты получишь ширину самой длинной строки.

Верю вам, что вы ведёте меня в верном направлении.
А что мне делать дальше, имея ширину самой длинной строки.
И вообще может получиться так, что каждая строка не помещается в одну линию. Тогда надо все их уменьшать.
Ответить с цитированием
  #4  
Старый 02.06.2012, 18:50
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
лезут в 5, 6... линию
wordwrap отключить
Цитата:
А что мне делать дальше, имея ширину самой длинной строки.
уменьшать размер шрифта в цикле, пока она не поместиться в richedit
Ответить с цитированием
Этот пользователь сказал Спасибо Pyro за это полезное сообщение:
mpdasa (02.06.2012)
  #5  
Старый 02.06.2012, 19:35
mpdasa mpdasa вне форума
Прохожий
 
Регистрация: 08.07.2011
Сообщения: 18
Репутация: 10
Сообщение

Цитата:
wordwrap отключить
За это действительно спасибо!

Цитата:
уменьшать размер шрифта в цикле, пока она не поместиться в richedit
А как соотносится ширина окна и ширина стоки?

Последний раз редактировалось mpdasa, 02.06.2012 в 19:41.
Ответить с цитированием
  #6  
Старый 02.06.2012, 19:39
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Ширина окна в пикселях - Form.ClientWidth.
А как они соотносятся - это уже твое решение. В твоем случае, видимо, ширина строки должна быть меньше или равна ширине окна.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
mpdasa (02.06.2012)
  #7  
Старый 03.06.2012, 09:40
mpdasa mpdasa вне форума
Прохожий
 
Регистрация: 08.07.2011
Сообщения: 18
Репутация: 10
Сообщение

Цитата:
Сообщение от PS11011010
Код:
for i := 0 to RichEdit1.Lines.Count - 1 do
 if MaxWidth < RichEdit1.Canvas.TextWidth(RichEdit1.Lines.Strings[i]) then
   MaxWidth := RichEdit1.Canvas.TextWidth(RichEdit1.Lines.Strings[i]);
Один дилетанский вопрос. Когда я вставил ваш код и запускаю прогу то выдается сообщение
Цитата:
undeclared identifier: 'Canvas'

Это при том, что у меня есть строка:
Код:
var canvas: TCanvas;
Ответить с цитированием
  #8  
Старый 03.06.2012, 10:03
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

RichEdit.canvas и Canvas:TCanvas немного разные вещи
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025