Форум: "Основная";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизВывод очень длинной строки Найти похожие ветки
← →
Игорь_Залозных (2009-01-12 18:45) [0]Здраствуйте.
Скажите какой функцией вывести очень длинную строку без пробелов, чтобы были переносы на следующие строки - аналог Word или WordPad, а то функция DrawText не справляется с этой задачей (не используя эллипсические флаги).
← →
Leonid Troyanovsky © (2009-01-12 19:10) [1]
> Игорь_Залозных (12.01.09 18:45)
> а то функция DrawText не справляется с этой задачей
Докажи.
--
Regards, LVT.
← →
Игорь_Залозных (2009-01-12 19:18) [2]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;
Текст не поещается в заданный диапазон, и располпгается вне его, а нужно, чтобы строка, если не вмещается часть, переносились на другие строки.
Ответ однозначный и говорит о том, что данная функция для данной проблемы не подходит.
← →
Smile (2009-01-12 19:22) [3]А мне другое интересно. Что означает выражение "вывести очень длинную строку"?
Куда вывести, в какой компонент (контрол)?
Для меня просто загадка:)
← →
Игорь_Залозных (2009-01-12 19:36) [4]Да тупая докадка.
Ясный пень, что все идет через HDC.
← →
Leonid Troyanovsky © (2009-01-12 19:40) [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.
← →
Smile (2009-01-12 19:47) [6]Ну и тогда в догонку (конечно предварительно извиняюсь), кому может быть понадобиться такая "визуальная" строка. Не лучше ли ее "уложить" в буфер или еще куда-либо?
← →
Юрий Зотов © (2009-01-12 19:49) [7]Игорь, флаг DT_WORDBREAK разрывает ПО словам, а у Вас ОДНО слово. Нечего ему разрывать - вот он и не разрывает.
← →
Игорь_Залозных (2009-01-12 19:49) [8]Leonid Troyanovsky - большое спасибо.
Что-то данного флага у меня в инфе описано не было.
← →
Игорь_Залозных (2009-01-12 19:49) [9]Тема закрыта.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c