![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод очень длинной строки
Игорь_Залозных © (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.