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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2017, 12:38   #1
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию Межстрочный интервал в label

Доброго времени суток, товарищи!
Есть текст, который я получаю из StringGrida и должен наложить его на графическую форму (то бишь на Image). Фон у накладываемого текста должен быть прозрачным, поэтому было решено использовать Label.

Сама проблема в следующем:
Накладываемый текст достаточно длинный, его необходимо переносить на другую строку (или даже на несколько строк), но стандартный межстрочный интервал, используемый лейблом - не подходит, т.к. на форме, на которую накладывается текст - расстояние между строк куда больше.

Отсюда вопрос: как это можно реализовать? Сделать несколько лейблов и каким-то образом резать текст по определенной длине, использовать другой компонент, или же есть возможность каким-то образом просто изменить интервал у стандартного лейбла?
Заранее благодарю за ответы!

Последний раз редактировалось Серёга Русич; 13.02.2017 в 13:50. Причина: Уточнение
Серёга Русич вне форума Ответить с цитированием
Старый 13.02.2017, 13:59   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

PaintBox и рисуй в нем текст как хош, хоть по диагонали ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.02.2017, 21:46   #3
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
PaintBox и рисуй в нем текст как хош, хоть по диагонали ))
Уж очень я обрадовался этому компоненту, решил, как мне показалось - и другую проблему (поворот текста на определенный градус), пока тестировал
Но... Решение мне нужно использовать перед репеинтом формы (Form2.Repaint), а после репеинта скриншотом сохранить форму. Так вот, после репеинта с пейнтбокса все пропадает.
Информации по перерисовке данных в этом компоненте, к сожалению, не нашел

Вот кусочек кода:

Код:
var
  OldFont: HFONT;
  FontData: TLogFont;
  XForm: TXForm;
  saveIndex: integer;
begin

  with Form2.PaintBox1, Canvas do

  if random<0.5 then begin

    getobject(Font.Handle, sizeof(FontData), @fontdata);
    FontData.lfEscapement:=2700;
    FontData.lfOrientation:=2700;

    OldFont:=SelectObject(Handle, CreateFontIndirect(FontData));
    try
      TextOut(Width div 2, Height div 2, 'ТекстТекстТекст');
    finally
      deleteobject(SelectObject(Handle, OldFont));
    end;
  end
Серёга Русич вне форума Ответить с цитированием
Старый 13.02.2017, 22:17   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Рисовать нужно в событии OnPaint бокса, тогда не пропадет. Repaint формы заставит прорисоваться все визуальные компоненты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.02.2017 в 22:21.
Аватар вне форума Ответить с цитированием
Старый 16.02.2017, 21:38   #5
Серёга Русич
Пользователь
 
Регистрация: 11.05.2011
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Рисовать нужно в событии OnPaint бокса, тогда не пропадет. Repaint формы заставит прорисоваться все визуальные компоненты
Спасибо! Разобрался с этим моментом
Я же правильно понял, что рисование текста на этой форме идет по тому же принципу, что и Canvas? То бишь я указываю позицию по осям XY и выводимый текст

Это либо не совсем подходит, либо я никак не могу уловить суть, попробую уточнить задачу:
Есть текст. Текст динамический, все время разной длины, его нужно вставить поверх изображения (не обязательно "встраивать", можно просто поверх, тем же label'ом, это не важно). Если текст выходит за границы выделенного ему поля - он автоматически переносится на другую строку, но строка должна находиться ниже, чем дает стандартный интервал того же лейбла
Серёга Русич вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Междустрочный интервал Alex2012 C# (си шарп) 1 09.09.2011 23:06
Межстрочный интервал art.marked HTML и CSS 2 21.04.2011 13:06
При расположении Label на компонентах, место под Label, не реагирует на событие onClick. NavigatorNeba Компоненты Delphi 3 15.11.2008 19:56
межстрочный интервал в excel KorvinZ Microsoft Office Excel 2 16.01.2008 17:40
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23