Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

TRichEdit, вставка текста   Найти похожие ветки 

 
Fr   (2010-02-21 14:25) [0]

Есть компонент TRichEdit. В него занесен текст:

Начало строки 1: изменяемое содержимое строки
Начало строки 2: изменяемое содержимое строки
Начало строки 3: изменяемое содержимое строки
...

В run-time должно изменяться "содержимое строки" в зависимости от различных условий. Причем начало строки должно оставаться неизменным и изменение содержимого д.б. произвольным. Т.е., например, сначала изменить 2 строку (все остальные не трогаются), затем 1, потом 4 и т.д.
Каким образом можно это организовать?


 
MBo ©   (2010-02-21 14:43) [1]

1. в отдельном TStringList хранить неизменные части
или
2. В Richedit.Lines.Objects хранить длины неизменных частей


 
Anatoly Podgoretsky ©   (2010-02-21 14:44) [2]

> Fr  (21.02.2010 14:25:00)  [0]

А три нельзя трогать?
StringReplace


 
{RASkov} ©   (2010-02-21 15:51) [3]


> В Richedit.Lines.Objects хранить длины неизменных частей

Там помоему нельзя ничего хранить :)
> Fr
Задача в [0] не совсем ясна. Примерно так я понял:

with RichEdit do
 ReadOnly:=CaretPos.X<Integer(Integer(ListNoChangeLength[CaretPos.Y]));

где ListNoChangeLength: TList например, в котором хранятся длины неизменных частей, т.е. второй вариант из [1]
можно это попробывать на OnRichKeyDown....


 
Fr   (2010-02-21 16:03) [4]

Всем спасибо. Решил с помощью:

with Richedit do begin
 SelStart:=Perform(EM_LineIndex,5,0)+4; // где 4-длина неизменной части пятой строки
 SelLength:=Length(Lines[5])-5;
 SelText:=" "+Trim(tmpStr1); // в tmpStr1 изменяемая часть строки
end;


 
sniknik ©   (2010-02-21 22:09) [5]

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-22 22:18) [6]


> sniknik ©   (21.02.10 22:09) [5]

А что будет быстрее работать? Ваш вариант или мой?
Мне кажется, что Ваш. т.к. всего 2 операции присваивания, а у меня телодвижений побольше :)
Работают и Ваш и мой ...


 
sniknik ©   (2010-02-22 22:36) [7]

> А что будет быстрее работать?
хочешь об этом поговорить? или просто пример на сравнение сделаешь?
и если сравнивать то равнозначные операции (по индексу позиции, есть там такой)

> т.к. всего 2 операции присваивания
одна. т.к. первая не обязательна для каждого раза, просто раз задает разделитель. (а можно и не делать, будет стандартный = )



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.074 c
6-1221664307
denissoft
2008-09-17 19:11
2010.08.27
Как переслать огромный файл по ТСП/ИП от 100 Мб- 4 Гб.


15-1264942022
Константинов
2010-01-31 15:47
2010.08.27
Безопасность ПК


15-1268326974
Правильный$Вася
2010-03-11 20:02
2010.08.27
D2010 обрела уже стабильность?


15-1274963922
azim
2010-05-27 16:38
2010.08.27
управление роботом


2-1266738974
tonick2001
2010-02-21 10:56
2010.08.27
Выдернуть из переменной TStringList нужну строку