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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2011, 20:54   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию Label WordWrap

Почему перенос осуществляется по пробелу, а не по длине текста? Раздражает, да и по другому надо.
_-Re@l-_ вне форума Ответить с цитированием
Старый 06.08.2011, 21:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему бы не написать самому функцию отрисовки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.08.2011, 22:10   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот, интересные 3 функции реализации переноса строк (WordWrap) :


Код:
//=================== Перенос текста ==================================//
function WrapToTextT(at:String; y:Integer): String;
var
ar : String;
i,z: Integer;

begin
     z := y;
     for i := 1 to Length(at) do begin
     ar := ar + at[i];
     if (i >= z) then begin
     if (at[i] = ' ') then begin
     ar := ar + #13#10;
     end;
     if (at[i] <> ' ') then begin
     ar := ar + '-' + #13#10;
     end;
     z:= z + y;
     end;
     end;
     Result := ar;
end;
/////////////////////////////////////////////////////////////////////////////////
function WrapToText(at:String; y:Integer): String;
var
ar : String;
i,z: Integer;

begin
     z := y;
     for i := 1 to Length(at) do begin
     ar := ar + at[i];
     if (i >= z)and(at[i] = ' ') then begin
     ar := ar + #13#10;
     z:= z + y;
     end;
     end;
     Result := ar;
end;
/////////////////////////////////////////////////////////////////////////////////
function StrTransfer(str: string; c: Integer): String;
// в uses StrUtils;
var
i:Integer;
begin
  i:= c;
  while PosEx(' ',str,i) > 0 do
    begin
      if PosEx(' ',str,i) > 0 then
        begin
          i:= PosEx(' ',str,i);
          Insert(#10#13,str,i+1);
          i:= i+c;
        end;
    end;
  Result:= str;
end;
/////////////////////////////////////////////////////////////////////////////////

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 07.08.2011, 13:11   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Почему перенос осуществляется по пробелу

по
тому, чт
о так у
добней чита
ть тек
с, видимо
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 07.08.2011, 13:26   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Всё, нашёл как решить проблему. Надо было ещё поставить AutoSize = False, тогда всё как надо.
_-Re@l-_ вне форума Ответить с цитированием
Старый 07.08.2011, 13:42   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

При этом все равно перенос по словам. Как то делал перенос по правилам правописания с учетом фонта и ширины поля вывода, если нужно могу в понедельник выложить сюда
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2011, 13:44   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Аватар нет, просто нужно сразу растянуть label настолько, насколько вам надо, и тогда не по словам, а по длине.
_-Re@l-_ вне форума Ответить с цитированием
Старый 07.08.2011, 13:50   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я имел ввиду, что WordWrap=True и Label растянуто по высоте для выдачи в несколько строк
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2011, 13:53   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

WordWrap = True, AutoSize = False, Label растянут как вам надо, и всё в порядке. Мне более ничего не надо.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ComboBox wordwrap Alter Компоненты Delphi 1 06.02.2011 19:55
Вернуть число строк полученных в Label при WordWrap:=true; MyLastHit Общие вопросы Delphi 2 04.01.2011 13:49
Проблема с WordWrap y Label MyLastHit Общие вопросы Delphi 3 02.01.2011 23:17
WordWrap SKS Общие вопросы Delphi 1 25.03.2009 17:30
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23