![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TRichEdit, вставка текста [D7, XP]
Fr © (2010-02-21 14:25:00)Есть компонент TRichEdit. В него занесен текст:
Начало строки 1: изменяемое содержимое строки
Начало строки 2: изменяемое содержимое строки
Начало строки 3: изменяемое содержимое строки
...
В run-time должно изменяться "содержимое строки" в зависимости от различных условий. Причем начало строки должно оставаться неизменным и изменение содержимого д.б. произвольным. Т.е., например, сначала изменить 2 строку (все остальные не трогаются), затем 1, потом 4 и т.д.
Каким образом можно это организовать?
sniknik (2010-02-22 22:36:00) [1]> А что будет быстрее работать?
хочешь об этом поговорить? или просто пример на сравнение сделаешь?
и если сравнивать то равнозначные операции (по индексу позиции, есть там такой)
> т.к. всего 2 операции присваивания
одна. т.к. первая не обязательна для каждого раза, просто раз задает разделитель. (а можно и не делать, будет стандартный = )
Fr (2010-02-22 22:18:00) [2]
> sniknik © (21.02.10 22:09) [5]
А что будет быстрее работать? Ваш вариант или мой?
Мне кажется, что Ваш. т.к. всего 2 операции присваивания, а у меня телодвижений побольше :)
Работают и Ваш и мой ...
sniknik (2010-02-21 22:09:00) [3]
procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Text:=
'HGFFFG'#13#10+
'Начало строки 1:изменяемое содержимое строки'#13#10+
'Начало строки 2:изменяемое содержимое строки'#13#10+
'Начало строки 3:изменяемое содержимое строки'#13#10+
'KJ;LKAJS';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit1.Lines.NameValueSeparator:= ':';
RichEdit1.Lines.Values['Начало строки 2']:= 'TEST';
end;
Fr (2010-02-21 16:03:00) [4]Всем спасибо. Решил с помощью:
with Richedit do begin
SelStart:=Perform(EM_LineIndex,5,0)+4; // где 4-длина неизменной части пятой строки
SelLength:=Length(Lines[5])-5;
SelText:=' '+Trim(tmpStr1); // в tmpStr1 изменяемая часть строки
end;
{RASkov} (2010-02-21 15:51:00) [5]
> В Richedit.Lines.Objectsхранить длины неизменных частей
Там помоему нельзя ничего хранить :)
> Fr
Задача в [0] не совсем ясна. Примерно так я понял:
with RichEdit do
ReadOnly:=CaretPos.X<Integer(Integer(ListNoChangeLength[CaretPos.Y]));
где ListNoChangeLength: TList например, в котором хранятся длины неизменных частей, т.е. второй вариант из [1]
можно это попробывать на OnRichKeyDown....
Anatoly Podgoretsky (2010-02-21 14:44:00) [6]> Fr (21.02.2010 14:25:00) [0]
А три нельзя трогать?
StringReplace
MBo (2010-02-21 14:43:00) [7]1. в отдельном TStringList хранить неизменные части
или
2. В Richedit.Lines.Objects хранить длины неизменных частей