![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странное поведение TRichEdit
leonidus © (2007-06-21 16:10:00)Подскажите где грабли. Добавляю в TRichEdit 4 строки, а после добавления их оказывается пять, т.е. в пятой строчке текста нет, но на нее курсор становится, причем ее в ручную удалить можно, чтобы осталось нормальные 4 строки текста, а вот программно
Richedit1.Lines.delete(Richedit1.Lines.count) удалить не получается, а мне эта пустая строка очень мешает. Подскажите как быть
Anatoly Podgoretsky (2007-06-23 14:30:00) [1]1. Можно
2. а оно и не нужно
leonidus (2007-06-23 14:22:00) [2]>iXT, два вопроса:
1. можно все это создать не в наследнике а просто в обработчике OnChange ?
2. Ни у TMemo ни у TRichEdit нет свойства RowCount...
iXT (2007-06-22 11:10:00) [3]Типа вот процедура :) Кто предложит код оптимальнее или красивее таму большой респект! :)
procedure TFMemo.Change;
begin
inherited Change;
if RowCount > 0 then
begin
while Lines.Count > RowCount do
Lines.Delete(Lines.Count - 1);
if (Lines.Count = RowCount) and (Text[Length(Text)] = #10)
then Text:=Copy(Text, 1, Length(Text) - 2);
end;
end;
leonidus (2007-06-22 10:43:00) [4]Ок, попробую. А как на счет вычисления высоты строк?
iXT (2007-06-21 17:08:00) [5]У меня эксперементально работает :) Казусов вроде пока не замеченно. Кода нет перед глазами, а то бы сказал точно как делал.
Anatoly Podgoretsky (2007-06-21 16:54:00) [6]> iXT (21.06.2007 16:45:11) [11]
Это надо експериментально проверить, но уверен что при записи/чтение это будет автоматом добавлено, я на это уже попадался, немного в другой ситуации, но суть таже.
Инс (2007-06-21 16:47:00) [7]Понятно, очепяточка вышла. Про хакерский разделитель не слышал, но то, что нужно в другом порядке, врубился.
iXT (2007-06-21 16:45:00) [8]Я решал так
В потомке в OnChange удаляешь №13№10 или в Text или в последней строке сейчас нет кода перед глазами
PS
было TMemo, но это не принципиально
> [5] Anatoly Podgoretsky © (21.06.07 16:28)
Не, они так просто :)
> Только вот непонятно чем это может мешать, это загадка?
Мне мешало отобрашение в определенных координатах, ну это в прочем не важно, нужно было :)
Anatoly Podgoretsky (2007-06-21 16:39:00) [9]> Инс (21.06.2007 16:37:09) [9]
Это не наезд, это так называемый хакерски ограничитель строк.
Официальных три - DOS/UNIX/MAC
Инс (2007-06-21 16:37:00) [10]
> И может быть ты сам такой?
Интересно... При всем уважении к Вам, Анатолий, что за неоправданный наезд?
Anatoly Podgoretsky (2007-06-21 16:34:00) [11]> Инс (21.06.2007 16:30:06) [6]
Я же сделал ссылку на номер сообщения, на который отвечаю
> Видимо, после каждой строки вставляется #10#13 даже после последней.
Хакеры писали?
И может быть ты сам такой?
leonidus (2007-06-21 16:30:00) [12]А, понял, если это позиция ввода то понятно. А мешает тем, что полоса прокрутки вертикальная появляется когда раньше чем реально это нужно.
И тогда еще вопрос, если все 4 строчки напечатаны одним шрифтом и кеглем, как определить их суммарную высоту?
Инс (2007-06-21 16:30:00) [13]
> Хакеры?
Что хакеры?
Anatoly Podgoretsky (2007-06-21 16:28:00) [14]> Инс (21.06.2007 16:15:01) [1]
Хакеры?
Anatoly Podgoretsky (2007-06-21 16:26:00) [15]> leonidus (21.06.2007 16:10:00) [0]
А и нет пятой строки - это позиция ввода. Есть ровно четыре законченых строки, ты же предагаешь только три и одну не закрытую.
Сделать можно на уровне файла, если удалить ограничитель строки у последней строки, только после этого нельзя сохранять или постоянно проводить коррекцию.
Только вот непонятно чем это может мешать, это загадка?
Jeer (2007-06-21 16:22:00) [16]
> Richedit1.Lines.delete(Richedit1.Lines.count) удалить не
> получается,
1. Удалить можно count-1
2. Перед заполнением делать Clear, мог в design-time оставить что-то
leonidus (2007-06-21 16:19:00) [17]ну во-первых все что я вставляю в TRichEdit , предварительно тримается, а во вторых почему тогда удаление последней строчки программно, не дает результатов, хотя руками удаляется строка отлично?
Инс (2007-06-21 16:15:00) [18]Видимо, после каждой строки вставляется #10#13 даже после последней.