![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интерактивный генератор текстов [D7, 95/98, XP]
timekiller © (2010-03-12 15:36:00)Сутки добрые, Уважаемые знатоки!
Помогите разобраться со следующим:
Есть некий алгоритм генерации текста в поле Memo из множества других полей TEdit по определенному шаблону, тоесть обскакиваем каждый TEdit, ищем его тег в шаблоне (на мотив phpBB [::тег::] и заменяем его на текст из TEdit, таким образом конструируется текст в TMEmo...
Генератор стоит на таймере, который сбивается поновой на OnChange каждого TEdit, таким образом генерация происходит по нажатию последнего символа и ожиданием в секунду.
Текст мерцает при изменении одного из TEdit, тоесть реконструируется в TMemo каждый раз по новой, начиная с загрузки шаблона для текста и тд...
Проблема нагрянула такая: С развитием прог продукта, образовалось, допустим, уже тысяча компонентов Tedit, при которых текст теперь генерируется слишком долго, невыносимо долго...
Подскажите подход к данной проблеме, возможно кто-то сталкивался с подобным?
Каким образом можно организовать процесс одновременного изменения текста в TEdit и на его потенциально заменяемом месте в TMemo?
timekiller (2010-03-12 17:20:00) [21]Ну пусть пусть...
А канва - это, на сколько я понял, ускорение всего алгоритма?
Медвежонок Пятачок (2010-03-12 17:18:00) [22]строка есть. всегда.
куда денется возможность ее копирования?
timekiller (2010-03-12 17:10:00) [23]Memo для того чтобы не пугать пользователя, использовать привычное Юзабилити... да и возможность копирования текста надо бы сохранить ;)
Медвежонок Пятачок (2010-03-12 16:55:00) [24]Забыл сказать что текстовое поле ReadOnly =))
тем более зачем здесь мемо?
рисуй текст на канве.
timekiller (2010-03-12 16:48:00) [25]
> причем ручной ввод здесь невозможен, так как любое шевеление
> в едитах затрет ручной ввод.
Забыл сказать что текстовое поле ReadOnly =))
timekiller (2010-03-12 16:47:00) [26]BeginUpdate только создает иллюзию и вводит в панику юзверя :)))
Делаю через шаблоны, и правда :)
Сейчас допёр понемногу до обновляемой позиции TEdit в TMemo, возможно по ней можно словно отзеркалить содержимое TEdit в его законном месте на OnChange
KSergey (2010-03-12 16:42:00) [27]
Memo1.Lines.BeginUpdate;
try
... тут генерим текст ...
finally
Memo1.Lines.EndUpdate;
end;
К стати, если едитов и равда тыща - лучше не напрямую с Memo1.Lines работать для замены, а загружать шаблон в переменную string, там заменять шаблоны - и только потом Memo1.Lines := str;
Тогда и BeginUpdate/EndUpdate не обязательна.
Медвежонок Пятачок (2010-03-12 16:41:00) [28]долго наблюдать - закрой глаза и поспи.
ps зачем здесь мемо (который заточен на ручной ввод)?
причем ручной ввод здесь невозможен, так как любое шевеление в едитах затрет ручной ввод.
timekiller (2010-03-12 16:39:00) [29]Долго за ним наблюдать...
Медвежонок Пятачок (2010-03-12 16:19:00) [30]Проблема в том что текст строится долго
Это оптический обман.
Текст как раз строится быстро.
Долго другое.
timekiller (2010-03-12 16:11:00) [31]Факт в том что кнопка срабатывает сама по себе...
Никаких помех в обычной работе это не вызывает, отрабатывает processMesages
Проблема в том что текст строится долго и перестраивается каждый раз..
Хорошо, даже если бы и была кнопка, то как уйти от перестройки всего текста?
Игорь Шевченко (2010-03-12 16:06:00) [32]как в excel - по кнопке !