Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странное поведение 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 даже после последней.


Наверх

Титульная страница Поиск, карта сайта Написать письмо