Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Добавляю много строк в грид.   Найти похожие ветки 

 
tria   (2004-07-28 11:16) [0]

При каждом добавлении строки происходит отрисовка грида. Как бы сделать так, чтобы отрисовка произошла только в конце данного процесса. На ум приходит только Visible:=False; ... Visible:=True; Может есть более правильное решение?


 
ssk ©   (2004-07-28 11:27) [1]

попробуй так:

StringGrid1.Rows.BeginUpdate;

// заполнение грида

StringGrid1.Rows.EndUpdate;


 
tria   (2004-07-28 11:34) [2]

У меня самописный копонент, порожденный от TCustomGrid, у него нет свойства Rows.


 
Palladin ©   (2004-07-28 11:40) [3]


> Может есть более правильное решение?

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


 
KSergey ©   (2004-07-28 11:56) [4]

Грид какой? String или DBGrid?
Для DB - DisableControls/EnableControls у соответствующего DataSet
Для String - уже сказали...


 
@Lex ©   (2004-07-28 11:59) [5]

try
 LockWindowUpdate(Grid.Handle);
 .......
finally
 LockWindowUpdate(0);
end;


 
tria   (2004-07-28 12:09) [6]

KSergey © > у меня потомок TCustomGrid. Не Stringgrid и не DBGrid.

@Lex ©>Спасибо. По моему то, что надо.


 
KSergey ©   (2004-07-28 12:15) [7]

> [2] tria   (28.07.04 11:34)
>  [6] tria   (28.07.04 12:09)
> У меня самописный копонент, порожденный от TCustomGrid,
> у него нет свойства Rows.

Тогда можно посмотреть реализацию SetUpdateState в TStrings и использование этого виртуального метода в TStringGrid в купе с BeginUpdate/EndUpdate в нем же (где и как используется флаг изменений).


 
KSergey ©   (2004-07-28 12:18) [8]

Погоди, погоди...

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


 
tria   (2004-07-28 12:30) [9]

Я заранее не знаю, сколько строк будет добавлено.


 
KSergey ©   (2004-07-28 12:32) [10]

Сначала ложить их в хранилище (какое-то все равно используется?), и лишь по окончании этого процесса - установить необходимое их кол-во в гриде одним махом


 
tria   (2004-07-28 12:42) [11]

Все гораздо сложнее.
Грид - это представление строк документа.
Я заполняю строки документа значениями выборки. При этом вношу данные в реквизиты строк документов (отдельные объекты), а уже в них прописано, как себя отобразить в гриде. Добавление строк в грид тоже происходит коммандой Документ.StringCount=Х. При изменении реквизита гриду дается комманда InvalidateCell(x,y).
Поэтому вроде бы как проще сделать у грида BeginUpdate/EndUpdate перед добавлением. Тока я не знаю тольком, как это сделать.


 
KSergey ©   (2004-07-28 12:55) [12]

Тогда, по-моему, правильнее всего посмотреть как это уже сделано (ссылки см. в [7] KSergey ©) и реализовать аналог. Благо, ничего там сложного.


 
tria   (2004-07-28 13:06) [13]

>KSergey ©  (28.07.04 12:55) [12]
Так и планирую делать. Спасибо за помощь.



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.67 c
9-1083066512
Не просто Я
2004-04-27 15:48
2004.08.08
Кому не трудно киньте линки на всё о функциях описания шара


14-1090495921
ИМХО
2004-07-22 15:32
2004.08.08
Пару слов о Delphi 8


14-1090415669
Dimka Maslov
2004-07-21 17:14
2004.08.08
Degauss


4-1088511070
NLO
2004-06-29 16:11
2004.08.08
ПЕреХВат


14-1090242201
pasha_golub
2004-07-19 17:03
2004.08.08
Шахматы: извращения, байки, приколы и т.д.