Форум: "Основная";
Текущий архив: 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