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

Вниз

Подгружаемый TStringGrid   Найти похожие ветки 

 
alexnmsk   (2003-12-09 08:15) [0]

Необходимо в TStringGrid отображать большое количество строк. При этом, если в RowCount устанавливать необходимое количество, то загрузка StringGrid сильно тормозит. Есть ли какой нибудь готовый компонент от TStringGrid, где строки динамически подгружаются? Или хотя бы алгоритм загрузки строк...


 
Hooch   (2003-12-09 08:16) [1]

может к примеру CilentDataSet и DBGrid будут более эффективны по скорости ?


 
alexnmsk   (2003-12-09 08:22) [2]

Вряд ли, т.к. количество строк большое, и перезагружать приходится часто.


 
Hooch   (2003-12-09 08:31) [3]

откуда они грузятся ?


 
ЮЮ   (2003-12-09 08:35) [4]

TDrawGrid (т.к. он, как и DBGrid, ничего в себе не хранит, а только что-то отрисовывает). Загрузку строк можно вынести в отдельный поток, синхронизируя кол-во загруженных строк и DrawGrid.RowCount


 
alexnmsk   (2003-12-09 08:37) [5]

Они вычисляются в зависимости от значения, заданного пользователем. Еще одна причина, по которой удобнее делать загружаемый грид - часто изменяются те значения, которые не отображаются в данный момент на экране.


 
Hooch   (2003-12-09 08:48) [6]

так что тебе мешает их хранить либо в CilentDataSet при окнчании работы сохрянять в файл, при начале загрухать из него, работать будет быстро я думаю, сколько строк у тебя ?


 
alexnmsk   (2003-12-09 08:59) [7]

сколько строк у тебя ?
33000 строк максимально. А вобще их количество меняется


> так что тебе мешает их хранить либо в CilentDataSet при
> окнчании работы сохрянять в файл, при начале загрухать из
> него
Не хотелось бы иметь лишний файл, и потом, очень вероятно, что программа будет использоваться на не очень быстрой машине..


 
Hooch   (2003-12-09 09:10) [8]


> Не хотелось бы иметь лишний файл

так данные ж всерано прийдется где-то сохранять при выходе ?


> программа будет использоваться на не очень быстрой машине

33000 строк на не очень быстой машине для ClientDataSet не проблема


 
ЮЮ   (2003-12-09 09:21) [9]

Итак, строки нигде не хранятся, а только вычиляются? alexnmsk (09.12.03 08:37) [5]

И поэтому на медленной машине их лучше вычислить заново, чем считать? alexnmsk (09.12.03 08:59) [7]

Странная логика


 
alexnmsk   (2003-12-09 09:44) [10]

>И поэтому на медленной машине их лучше вычислить заново, чем >считать? alexnmsk (09.12.03 08:59) [7]
>
>Странная логика

Их не лучше вычислять, их ПРИХОДИТСЯ вычислять и менять большими массивами в Run-time.

Ну, ладно, если никто не знает как сделать именно подгружаемый StringGrid, попробую что нибудь наваять, если получится - выложу..


 
ЮЮ   (2003-12-09 09:49) [11]

>если никто не знает как сделать именно подгружаемый StringGrid

В терминах яснее выражайся? Что значит "подгружаемый". У обычного StringGrida что данные, кол-во строк и столбцов самопроизвольно возникакают? Они заполняются программно, т.е. подгружаются? Что именно тебя не устраивает в стандартном Gride и что ты хочешь от него дополнительно?


 
alexnmsk   (2003-12-09 10:02) [12]

Выражаюсь яснее. Имеется StringGrid, например, с 10-ю видимыми строками. Полное количество строк очень большое. Можно посттупить следующим образом. Создать грид с максимальным количеством строк и вычислять значения только для отображаемых во время прокрутки и при изменении значений. Это было бы хорошо, если бы полное количество строк оставалось неизменным. Второй вариант: создать грид с фиксированным количеством строк чуть большим видимого, заменить у него полосу прокрутки и таким же образом вычислять только необходимые значения.


 
REA   (2003-12-09 10:13) [13]

33000 элементов вычислить (если) не очень большие вычисления примерно 100-200 мсек на медленной машине (нужен оптимальный алгоритм). Отрисовка в Grid (придется самому) примерно 10-50 мсек.

Если это медленно, имеет смысл считать только то, что отображается (если это не влияет на последующие вычисления).


 
alexnmsk   (2003-12-09 10:29) [14]

Если еще уточнить, то пользователь пермещается со строки на строку в одном gride при этом в другом изменяется информация и количество строк, причем, количество строк может изменяяться от 2 до 33000, а при заполнении 33000 строк хотя бы значениями по возрастанию возникает нехилая задержка.


 
REA   (2003-12-09 10:41) [15]

Еще раз - ничего заполнять не надо - надо только отрисовывать, что и делает DBGrid. Т.е. данные в строковом виде он не хранит.
Видимо подойдет ClientDataset как хранилище данных либо другой наследник TDataSet с хранением в памяти.



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

Форум: "Основная";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.008 c
4-62327
___gues___
2003-10-24 12:08
2003.12.19
Функция OpenToken


14-62239
Карелин Артем
2003-11-25 13:47
2003.12.19
Еще одно предложение по совершенствованию форума.


1-62076
Ил_204
2003-12-09 09:51
2003.12.19
Версия проекта


6-62186
Alex2
2003-10-20 06:42
2003.12.19
Мешает удаленное соединение


1-62065
frost
2003-11-23 12:28
2003.12.19
CustomDrawItem у TListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский