Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TMemo и #13+#10 
V
    Опции темы
Ak47black
  Дата 14.9.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Здравствуйте.
Помоги понять как тут сделать.
Юзаю обычный TMemo. 
И чтобы после добавления курсор находил не на новой строке делаю так 
Код

  TMemo.Text:= TMemo.Text+#13+#10+SomeString

При частом вызове работает этот код очень медленно (понятно почему).
Подскажите пожалуйста как оптимизировать, с учетом того что при добавлении компонент будет прокручиваться?  smile 
PM MAIL   Вверх
ALeXandrK
Дата 14.9.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Воспользоваться свойством, кот. показывает кол-во сисмволов = номеру последнего символа.
Сохранить это значение, затем сделать:
Код

 Memo.Lines.Append(SomeString);


Затем вернуть курсор на сохраненную позицию.

Цитата

Подскажите пожалуйста как оптимизировать, с учетом того что при добавлении компонент будет прокручиваться?  


Чтобы не прокручивалось, нужно покапаться в исходниках и перегрузить соответствующий метод.

Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 16:14


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Ak47black
Дата 14.9.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



ALeXandrK, не получается у меня с этим Append - результат тотже.
Цитата

Чтобы не прокручивалось, нужно покапаться в исходниках и перегрузить соответствующий метод.

Не мне нужно чтобы при добавлении была прокрутка (тоесть автоматически прокручивалось).

Это сообщение отредактировал(а) Ak47black - 14.9.2007, 15:54
PM MAIL   Вверх
ALeXandrK
Дата 14.9.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Так в чем проблема???!!!

Просто пишешь:
Код

Memo.Lines.Append(SomeString);


Прокрутка происходит автоматически.

Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 16:16


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Ak47black
Дата 14.9.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Цитата

Так в чем проблема???!!!

В том что при Append как и при Add курсор устанавливается на новую пустую строку. А мне нужно чтобы он оставался после добавленного текста.
PM MAIL   Вверх
ALeXandrK
Дата 14.9.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Так я ж тебе написал сохраняй местоположение курсора перед добавлением, а после добавления, ставь его обратно.

Вот пример:
Код

...
var Pos: Integer;
begin
  Pos := mmo1.SelStart;
  mmo1.Lines.Append(SomeString);
  mmo1.SelStart := Pos;
end;


Если после добавления Мемо теряет фокус, то не забудь добавить:
Код

mmo1.SetFocus;


Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 16:32


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Ak47black
Дата 14.9.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



ALeXandrK, Но новая строка-же всеровно появляется, а мне нужно сделать чтобы её небыло.

Добавлено @ 16:38
Твой код тока курсор передвигает.

Это сообщение отредактировал(а) Ak47black - 14.9.2007, 16:44
PM MAIL   Вверх
ALeXandrK
Дата 14.9.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Так тебе нужно, чтобы текст добавлялся к последней строке? Или вставлялся туда, где сейчас курсор?

Может тебе это подойдет:
Код

mmo1.SelText := SomeString;


Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 16:51


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Ak47black
Дата 14.9.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Код

TMemo.Text:= TMemo.Text+#13+#10+SomeString

Тоесть переход перед добавлением, а не после.
PM MAIL   Вверх
ALeXandrK
Дата 14.9.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Может это подойдет:
Код

mmo1.SelText := #13#10+SomeString;


Это сообщение отредактировал(а) ALeXandrK - 14.9.2007, 16:53


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Ak47black
Дата 14.9.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Я так решил эту задачу.
Код

  TMemo.Lines.Add('');
  TMemo.Lines.Strings[TMemo.Lines.Count]:= Cmd;



Это сообщение отредактировал(а) Ak47black - 14.9.2007, 17:02
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.