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

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

Интерактивный генератор текстов [D7, 95/98, XP]


Страницы:   1 2

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 - по кнопке !


Страницы:   1 2

Наверх

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