|
Вопрос # 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 » Работа с компонентами и библиотеками модератором Ерёмин А.А.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|