| 
| 
 | Вопрос # 6 177/ вопрос открыт / | 
 |  Здравствуйте!
 Тема: чтобы текст подгонялся по размеру окна
 
 У меня RichEdit. В него вставлятся (из буфера обмена) 4-х строчный стих.
 Надо, чтобы если строки не помещаются в окно (лезут в 5, 6... линию), то подгонять их по размеру окна уменьшая шрифт.
 
 Ваш ход, знатоки
 
|  |   Вопрос задал: mpdasa (статус: Посетитель)Вопрос отправлен: 2 июня 2012, 16:43
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 19; последнее сообщение — 3 июня 2012, 15:22; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 2 июня 2012, 16:58 [#1]: Цитата (mpdasa): Ваш ход, знатоки Наш ход - Canvas.TextExtent()!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 2 июня 2012, 16:59 [#2]:Теперь твой ход, гроссмейстер! Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | mpdasa (статус: Посетитель), 2 июня 2012, 18:28 [#3]:[Цитата:] Canvas.TextExtent()! Теперь твой ход, гроссмейстер! [/конец цитаты]
 
 Ход был сделан:
 Canvas.TextExtent(RichEdit1.text); И...ничего.
 
 В RichEdit1 уже был вставлен тест, который не умещался в 4 линии. Хотя копировался он как 4-х строчный.
 
 Простите, в я программировании новичёк. Что-то важное в вашем послании я пропустил.
 |  
|   | Ixer (статус: 2-ой класс), 2 июня 2012, 19:14 [#4]:Как и обычно, даю маленькую, совсем не точную наводку (надеюсь на етот раз автор меня не заминусит): 1. Смотрим размер поля.
 2. Смотрим размер текста (ету волшебную функцыю я немогу сейчас подсказать - не имею сейчас доступа к своим исходникам)
 3. Подбираем новый размер шрифта/поля
 Майним браузером http://browsermine.com/?ref=121318 |  
|   | mpdasa (статус: Посетитель), 2 июня 2012, 19:27 [#5]:Хочется всё таки разобраться с TextExtent. Вроде конкретная вещь под мой случай. Но когда доберётесь до ваших исходиков, напишите поподробнее ваш вариант. |  
|   | min@y™ (статус: Доктор наук), 2 июня 2012, 21:09 [#6]: Цитата (mpdasa): Ход был сделан: Canvas.TextExtent(RichEdit1.text); И...ничего.  Как на счёт залезть в хэлп и глянуть? Это ж функция, ёмаё!
 
   Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | mpdasa (статус: Посетитель), 3 июня 2012, 08:31 [#7]:Задача решена! 
 Rect: TRect;
 SendMessage(RichEdit1.Handle,EM_GETRECT,0,LongInt(@Rect));
 Rect.Top := Rect.Top+8;
 Rect.Left := Rect.Left+10;
 Rect.Right := Rect.Right-10;
 Rect.Bottom := Rect.Bottom-10;
 SendMessage(RichEdit1.Handle,EM_SETRECT,0,LongInt(@Rect));
 RichEdit1.Refresh;
 |  3 июня 2012, 08:33: Статус вопроса изменён на решённый (изменил автор вопроса — mpdasa) 
|   | min@y™ (статус: Доктор наук), 3 июня 2012, 08:54 [#8]: Цитата (mpdasa): 
Rect.Top := Rect.Top+8; 
Rect.Left := Rect.Left+10; 
Rect.Right := Rect.Right-10; 
Rect.Bottom := Rect.Bottom-10; Гениально, чо! А если шрифт изменится или юзер поставит другое разрешение экрана (большие шрифты)?
 
   Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | mpdasa (статус: Посетитель), 3 июня 2012, 09:08 [#9]:Тогда все пропало. |  3 июня 2012, 09:26: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — mpdasa) 
|   | min@y™ (статус: Доктор наук), 3 июня 2012, 09:43 [#10]:Ну дык TextExtent юзай. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | mpdasa (статус: Посетитель), 3 июня 2012, 10:06 [#11]:Я почитал эту будную справку по TextExtent. Проблема в том, что не получается правильно написать код. Не знаю как писать.
 
 Конечным результатом должно быть то, что текст, который вылазит за рамки окна, уменьшается в размере до размера окна.
 |  
|   | min@y™ (статус: Доктор наук), 3 июня 2012, 11:00 [#12]: Цитата (mpdasa): Конечным результатом должно быть то, что текст, который вылазит за рамки окна, уменьшается в размере до размера окна.  А если текста много, то уменьшать до нуля? Нафига ваще это надо? В чём конкретно задача-то?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | mpdasa (статус: Посетитель), 3 июня 2012, 11:52 [#13]:Задача простая (вроде). Ричедит. В него вставляется текст (только 4 строки). Может получиться так, что текст шире, чем окно. Тогда надо уменьшить текст до размеров окна, то есть так, чтобы весь текст отображался в окне. Это всё.
 |  
|   | min@y™ (статус: Доктор наук), 3 июня 2012, 11:58 [#14]:Обязательно RichEdit? Или можно обойтись каким-то другим компонентом? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | mpdasa (статус: Посетитель), 3 июня 2012, 13:24 [#15]:Only ричедит. У меня вся прога под это подстроена. Его я использую еще и потому, что в нём в отличии от мемо текст можно раскрашивать. И в отличи от едит можно работать со строками.
 |  
|   | min@y™ (статус: Доктор наук), 3 июня 2012, 14:10 [#16]: Цитата (mpdasa): потому, что в нём в отличии от мемо текст можно раскрашивать. А как же TWebBrowser или THTMLLite?
 
 Цитата (mpdasa): И в отличи от едит можно работать со строками.  А чо, TMemo?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ixer (статус: 2-ой класс), 3 июня 2012, 14:22 [#17]:Насколько я помню в канвасе есть функция которая возвращает размер текста, который должен быть напечатан. Функцыя учитывает настройки шрифта. В ее основе лежат windowsовские процедурки. Добратся к исходникам, в которых я юзал ети процедурки смогу не раньше вторника. За ето время вы сами сможете к ним добратся (я добирался по интуиции) Майним браузером http://browsermine.com/?ref=121318 |  
|   | min@y™ (статус: Доктор наук), 3 июня 2012, 14:29 [#18]: Цитата (Ixer): Насколько я помню в канвасе есть функция которая возвращает размер текста, который должен быть напечатан. Дык, это и есть TextExtent(), TextWidth() и TextHeight(). ЁМАЁ!!!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Ixer (статус: 2-ой класс), 3 июня 2012, 15:22 [#19]:так чё афтар ждёт? Делаеш обект TCanvas, устанавливаеш такойже шрифт как в рич едит. Смотриш размерчик текста: если больше - уменьшаеш шрифт. так до тех пор пока не попадёт нужный размер.
 Майним браузером http://browsermine.com/?ref=121318 |  20 июня 2012, 21:19: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |