![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавляю много строк в грид. [D7]
tria © (2004-07-28 11:16:00)При каждом добавлении строки происходит отрисовка грида. Как бы сделать так, чтобы отрисовка произошла только в конце данного процесса. На ум приходит только Visible:=False; ... Visible:=True; Может есть более правильное решение?
tria (2004-07-28 13:06:00) [1]>KSergey © (28.07.04 12:55) [12]
Так и планирую делать. Спасибо за помощь.
KSergey (2004-07-28 12:55:00) [2]Тогда, по-моему, правильнее всего посмотреть как это уже сделано (ссылки см. в [7] KSergey ©) и реализовать аналог. Благо, ничего там сложного.
tria (2004-07-28 12:42:00) [3]Все гораздо сложнее.
Грид - это представление строк документа.
Я заполняю строки документа значениями выборки. При этом вношу данные в реквизиты строк документов (отдельные объекты), а уже в них прописано, как себя отобразить в гриде. Добавление строк в грид тоже происходит коммандой Документ.StringCount=Х. При изменении реквизита гриду дается комманда InvalidateCell(x,y).
Поэтому вроде бы как проще сделать у грида BeginUpdate/EndUpdate перед добавлением. Тока я не знаю тольком, как это сделать.
KSergey (2004-07-28 12:32:00) [4]Сначала ложить их в хранилище (какое-то все равно используется?), и лишь по окончании этого процесса - установить необходимое их кол-во в гриде одним махом
tria (2004-07-28 12:30:00) [5]Я заранее не знаю, сколько строк будет добавлено.
KSergey (2004-07-28 12:18:00) [6]Погоди, погоди...
Так может тогда проще добавлять не по одной строке, а? Раз уж реализация их хранения используется собственная?
KSergey (2004-07-28 12:15:00) [7]> [2] tria (28.07.04 11:34)
> [6] tria (28.07.04 12:09)
> У меня самописный копонент, порожденный от TCustomGrid,
> у него нет свойства Rows.
Тогда можно посмотреть реализацию SetUpdateState в TStrings и использование этого виртуального метода в TStringGrid в купе с BeginUpdate/EndUpdate в нем же (где и как используется флаг изменений).
tria (2004-07-28 12:09:00) [8]KSergey © > у меня потомок TCustomGrid. Не Stringgrid и не DBGrid.
@Lex ©>Спасибо. По моему то, что надо.
@Lex (2004-07-28 11:59:00) [9]try
LockWindowUpdate(Grid.Handle);
.......
finally
LockWindowUpdate(0);
end;
KSergey (2004-07-28 11:56:00) [10]Грид какой? String или DBGrid?
Для DB - DisableControls/EnableControls у соответствующего DataSet
Для String - уже сказали...
Palladin (2004-07-28 11:40:00) [11]
> Может есть более правильное решение?
Конечно. Не отрисовывать грид при каждом добавлении строки.
tria (2004-07-28 11:34:00) [12]У меня самописный копонент, порожденный от TCustomGrid, у него нет свойства Rows.
ssk (2004-07-28 11:27:00) [13]попробуй так:
StringGrid1.Rows.BeginUpdate;
// заполнение грида
StringGrid1.Rows.EndUpdate;