C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Прорисовка формы, отключить прорисовку
santa-san
  Отправлено: 20.01.2004, 14:58


Ученик-кочегар

Группа: Участник
Сообщений: 18



Есть на форме грид. Заполняю его большим объемом информации.
Прорисовка грида тормозит выполнение. Как ее отключить?

заранее ...
Vlad
Отправлено: 20.01.2004, 16:25


Машинист паровоза

Группа: Участник
Сообщений: 231



А какой грид — DBGrid or StringGrid?
santa-san
Отправлено: 20.01.2004, 17:29


Ученик-кочегар

Группа: Участник
Сообщений: 18



STRING
fellow
Отправлено: 20.01.2004, 17:56


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Заполняйте построчно или по столбцам. У стринггрида есть свойства Cols и Rows, их тип — массив указателей на TStrings. Каждый указатель на TStrings — это указатель на значения ячеек соответствующей строки(столбца). У TStrings есть методы BeginUpdate и EndUpdate. Сначала начинаете изменение строки таблицы вызвав BeginUpdate, потом изменяете эту коллекцию строк, затем EndUpdate завершает изменение. И так для каждой строки или столбца.
Doga
Отправлено: 26.01.2004, 16:05


Мастер участка

Группа: Участник
Сообщений: 575



Есть способ проще — сделать СтринГрид невидимым пока идет его заполнение. Но в этом ли дело?

Если не отрисованы другие объекты формы — перед заполнением сделай им всём Repaint()

А если форма не отзывается на управление пока не завершится заполнение данными, значит ты не используешь для зополнения поток (TThread) — тогда так и должно быть.

Если заполнение длится больше 2-ух секунд советую использовать поток. Это будет выглядеть гораздо более эстетично и контроль над формой будешь иметь всё время.

Вернуться в Вопросы программирования в C++Builder