Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многострочный TLabel, с выравниванием по ширине 
:(
    Опции темы
aktuba
Дата 15.3.2007, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Собственно сабж... Было бы вообще замечательно, если бы кто-то подсказал подобный компонент с поддержкой html...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Alexeis
Дата 15.3.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Обычный TLabel и так является многосточным. Какая поддержка HTML Нужна?  smile сделать гибрид TLabel и TWebBrowser? Не крото ли это для простого лабела?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
aktuba
Дата 15.3.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Обычный TLabel и так является многосточным.


Знаю, только вот выравнивания по ширине нет...

Цитата

Какая поддержка HTML Нужна?


Выравнивание, выделение части текста и т.д. Т.е. мини-html, так сказать...

Цитата

сделать гибрид TLabel и TWebBrowser? Не крото ли это для простого лабела? 


Почти. И такие компоненты есть, но у них нет выравнивания по ширине, к сожалению...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Sunvas
Дата 15.3.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Придется, я уверен, делать все самому.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
aktuba
Дата 15.3.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Sunvas, а конкретные предложения и примеры есть?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Sunvas
Дата 15.3.2007, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(aktuba @  15.3.2007,  18:23 Найти цитируемый пост)
Sunvas, а конкретные предложения и примеры есть?

Использовать масштабируемый шрифт. Найти среди всех строк самую длинную, а остальным пробелы дорисуй и будет тебе счастье.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Alexeis
Дата 15.3.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Sunvas @  15.3.2007,  18:47 Найти цитируемый пост)
Найти среди всех строк самую длинную, а остальным пробелы дорисуй и будет тебе счастье.

Дальше можно действать так:
1) Определить число слов в строке
2) Оперделить длину строки
3) Определить небходимую длинну строки
4) Определить длинну пробела.
5) (небходимая длинна строки - длина строки) / длинну пробела = число пробелов.
6) число пробелов div число слов = минимальное число пробелов необходимое для добавления после кажого слова.
7) Дабавление оставшихся пробелов (будет уже не равномерный интервал, так как их на всех не хватает, но ширину запонит всю. 

И так для каждой строки.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MetalFan
Дата 16.3.2007, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



aktuba, есть в JVCL компонент TJvHTLabel... да только он выравнивание по ширине не понимает...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
aktuba
Дата 16.3.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

aktuba, есть в JVCL компонент TJvHTLabel... да только он выравнивание по ширине не понимает... 


Дык, и в TMS есть THTMLabel, который тоже не понимает выравнивание по ширине...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Guedda
Дата 16.3.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



А если просто воспользоваться TRichEdit, немного его усовершенствовав?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
aktuba
Дата 16.3.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

А если просто воспользоваться TRichEdit, немного его усовершенствовав? 


Т.е.??? Можно подробнее? В общем случае, задача такая: прозрачный текст с урлом, выровненный по ширине и некоторыми выделенными словами. Как ричедит можно усовершенствовать в этом случае?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 16.3.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



aktuba, 
а если ричедиту сделать цвет, как у формы и BorderStyle в none. то будет псевдопрозрачность)
либо допилить TJvHTLabel, чтоб равнял по ширине...


Это сообщение отредактировал(а) MetalFan - 16.3.2007, 17:43


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
aktuba
Дата 16.3.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

а если ричедиту сделать цвет, как у формы и BorderStyle в none. то будет псевдопрозрачность)


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

Цитата

либо допилить TJvHTLabel, чтоб равнял по ширине...


Тоже склоняюсь к этому решению, но...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 16.3.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



накидал тут примитивный код для вставки пробелов до нужной ширины...
может пригодиться)
Код

function DoJustifyString( const AText: string; ACanvas: TCanvas; AWidth: Integer ): string;
  const
    C_DELIM :set of char  = [' ',',','.','-',';',':'];
  var
    lLastPos: Integer;
    i: Integer;
    lPrevInDelim: Boolean;
  begin
    Result := '';
    if (AText = '') or not Assigned(ACanvas) or (AWidth = 0) then Exit;
    Result := AText;    
    lLastPos := 0;
    lPrevInDelim := False;
    while ACanvas.TextWidth( Result+' ' ) < AWidth do
    begin
      if lLastPos > Length( Result ) then
        lLastPos := 0;
      lPrevInDelim := False;
      for i := lLastPos + 1 to length( Result ) do
      begin
        lLastPos := i + 1;
        if Result[i] in C_DELIM then
        begin
          lPrevInDelim := True;
          Continue;
        end
        else
        if lPrevInDelim then
        begin
          Result := Copy(Result, 1, i-1)+' ' + Copy(Result, i, MaxInt );
          Break;
        end;
      end;
    end;
  end;

  function DoJustifyText( const AText: string; ACanvas: TCanvas; AWidth: Integer ): string;
  var
    lSL: TStringList;
    i: Integer;
  begin
    Result := '';
    if (AText = '') or not Assigned(ACanvas) or (AWidth = 0) then Exit;
    lSL := TStringList.Create;
    try
      lSL.Text := AText;
      for i := 0 to pred( lSL.Count ) do
        lSL[i] := DoJustifyString( lSL[i], ACanvas, AWidth );
      Result := lSL.Text;
    finally
      lSL.Free;
    end;
  end;



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.