Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вывод очень длинной строки


Игорь_Залозных ©   (2009-01-12 18:45:00) 

Здраствуйте.
Скажите какой функцией вывести очень длинную строку без пробелов, чтобы были переносы на следующие строки - аналог Word или WordPad, а то функция DrawText не справляется с этой задачей (не используя эллипсические флаги).


Юрий Зотов   (2009-01-12 19:49:00) [1]

Игорь, флаг DT_WORDBREAK разрывает ПО словам, а у Вас ОДНО слово. Нечего ему разрывать - вот он и не разрывает.


Игорь_Залозных   (2009-01-12 19:49:00) [2]

Leonid Troyanovsky - большое спасибо.
Что-то данного флага у меня в инфе описано не было.


Игорь_Залозных   (2009-01-12 19:49:00) [3]

Тема закрыта.


Smile   (2009-01-12 19:47:00) [4]

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


Leonid Troyanovsky   (2009-01-12 19:40:00) [5]


> Игорь_Залозных   (12.01.09 19:18) [2]

> Ответ однозначный и говорит о том, что данная функция для
> данной проблемы не подходит.


procedure TForm1.Button1Click(Sender: TObject);
var
 s:String;
 r: TRect;
begin
 r.left := 0;
 r.right := 50;
 r.top:= 0;
 r.bottom :=700;
 s:='1111111111111111111111111111111111111111111111111111111111111111111111111111  11111111111111111111111111111111111111111111111111111111111111111111111111111111  11111111111111111111111111111111111111111111111111111111111';
 DrawText(Canvas.Handle,PChar(s),strlen(PChar(s)),r, DT_EDITCONTROL or DT_WORDBREAK );
end;

--
Regards, LVT.


Игорь_Залозных   (2009-01-12 19:36:00) [6]

Да тупая докадка.
Ясный пень, что все идет через HDC.


Smile   (2009-01-12 19:22:00) [7]

А мне другое интересно. Что означает выражение " вывести очень длинную строку"?
Куда вывести, в какой компонент (контрол)?
Для меня просто загадка:)


Игорь_Залозных   (2009-01-12 19:18:00) [8]

s:='1111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111';
DrawText(ACanvas.Handle,PChar(s),strlen(PChar(s)),r,DT_LEFT or DT_WORDBREAK or DT_EXPANDTABS or DT_EXTERNALLEADING);
границы r - аналог границ Word на странице.
Например,
r.left := 100;
r.right:= 1100;
r.top:=100;
r.bottom:=1000;
Текст не поещается в заданный диапазон, и располпгается вне его, а нужно, чтобы строка, если не вмещается часть, переносились на другие строки.
Ответ однозначный и говорит о том, что данная функция для данной проблемы не подходит.


Leonid Troyanovsky   (2009-01-12 19:10:00) [9]


> Игорь_Залозных   (12.01.09 18:45)

> а то функция DrawText не справляется с этой задачей

Докажи.

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо