![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по RichEdit, очень срочно [D5, D6, Win95/98, WinME, WinXP]
Danila j. Bagrov © (2002-07-07 22:47:00)Прощу помощи у мастеров.
Вопрос тупой, но все же. Есть RichEdit.
Есть
RichEdit.Lines.Add("Типа текст 1-ого абзаца");
RichEdit.Lines.Add("Типа текст 2-ого абзаца");
получим на выходе:
"Типа текст 1-ого абзаца
Типа текст 2-ого абзаца"
,а если мне нужно сделать на выходе, к примеру:
"Типа текст 1-ого абзаца и ЭТО ТОЖЕ 1-ый абзац"
И в два оператора, нужно это постольку-поскольку Add"om только до 255 символов можно вставить (обычный стринг), а абзац куда больше чем 255 сим. И от этого не уйти. К тому же в тексте абзаца, по ходу нужно будет изменять Атрибуты всякие: подчеркивание и тэпэ.
int64 (2002-07-08 03:27:00) [1]Я когда-то давно делал так:
При формировании стринга, который должен был выводиться, запоминал позиции и длины тех мест, которые нужно изменить.
Потом, то, что запомнил выделял с помощью SelStartи SelLength, и менял стиль, как хотел.
Может есть и другие способы, но меня это тогда устраивало.
Вот пример:
procedure TForm1.Button1Click(Sender: TObject);
var s1, s2, RedString: string;
RedLength, RedStartPos: integer;
begin
s1:= "Закрытое акционерное общество ... ";
RedString:= "Работодатель";
RedLength:= Length(RedString);
RedStartPos:= Length(RichEdit1.Text)+Length(s1);
s2:= " Открытое акционерное общество ... ";
RichEdit1.Lines.add(s1+RedString+s2);
RichEdit1.SelStart:= RedStartPos;
RichEdit1.SelLength:= RedLength;
RichEdit1.SelAttributes.Color := clRed;
end;
Oleg_Gashev (2002-07-08 01:50:00) [2]Посмотри PlainText property и вставляй строки в виде RTF текста.
Danila j. Bagrov (2002-07-08 01:22:00) [3]Намек понял, но проблема не в этом, точнее не только в этом. Конкатенация знаем что такое.
Должно на выходе получится:
"1. Закрытое акционерное общество ... "Работодатель""
Код проги:
qrep_form.RichText.Lines.Strings[0] := " 1. Закрытое акционерное общество ...";
//Переключаемся на жирный
qrep_form.RichText.Font.Style := [fsBold];
//Прибавляем "Работодателя"
qrep_form.RichText.Lines.Strings[0]:=qrep_form.RichText.Lines.Strings[0]+"Работодатель";
НО, естественно штука в том, что жирным будет все. Вот в чем проблема ...
2Anatoly, можно тебе в аську постучаться ? А то осталось 6 часов для того чтобы это все сделать ... горю.
Anatoly Podgoretsky (2002-07-08 00:59:00) [4]Так ты понял намек насчет строк или нет. Если не понял то посмотри в хелпе строковые операции, в первую очередь конкатенацию, если термин непонятен, то это объединение строк
Danila j. Bagrov (2002-07-08 00:51:00) [5]плохо объясняю значит, никто понять не может :)
Вот реальный текст, где -ИЗ БАЗЫ- значение берется из базы, длина его неизвестна, поэтому string не поможет.
2. “Работник” -ИЗ БАЗЫ- принимается на работу в "..." на должность -ИЗ БАЗЫ- ... квалификации -ИЗ БАЗЫ-
3. Договор является: -ИЗ БАЗЫ-
4. Вид договора: -ИЗ БАЗЫ-
трудность в том, что им кровь из носа нужно, то что "-ИЗ БАЗЫ-", жирным курсивом, или просто курсивом, или подчеркнутым ...
Если делать так
-Вставляем строку "2. "Работник"" ...Lines.Add();
-Теперь пишем курсивом
-Вставляем строку -ИЗ БАЗЫ-
-Теперь пишем обычным шрифтом
-Вставляем строку ...
то получится, что-то вроде:
"2. "Работник""
"-ИЗ БАЗЫ-"
"..."
а нужно в один абзац,
может сейчас хоть нормально объяснил ...
Anatoly Podgoretsky (2002-07-08 00:43:00) [6]Lines имеет string, это тебе никак не поможет?
Danila j. Bagrov (2002-07-08 00:01:00) [7]Дело в том, что я просто объяснил задачу, пример у меня соверешенно другой. Мне нужно записать след:
Мастера Делфи delphi.mastak.ru. Форум
Как сделать такое? В ОДНУ строчку.
SerVS (2002-07-07 23:52:00) [8]2обычный стринг
Кто тебе сказал? String=AnsiString, мне пока длинны хватало ;))