Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.053 c
4-1087836255
Игорь
2004-06-21 20:44
2004.08.08
включение/отключение брандмауэра WinXp


11-1078343360
Михаил
2004-03-03 22:49
2004.08.08
Запись в exe-файл


14-1090409593
ййй
2004-07-21 15:33
2004.08.08
А вот...


1-1090427666
Василий
2004-07-21 20:34
2004.08.08
Структура файлов?


1-1090593728
fess
2004-07-23 18:42
2004.08.08
Приемы работы с Chart





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский