Форум: "Основная";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
ВнизКак правильно добавлять данные в StringGrid? Найти похожие ветки
← →
MegaVolt (2003-05-14 11:40) [0]Как правильно добавлять данные в StringGrid если изначальное число строк не извесно? Я делаю так:
1. Увеличить счётчик строк на 1
2. Вывести данные в строке
3. идти на п.1
При этом наблюдается мерцание при выводе большого числа элементов а так же ползунок справа всё время старается установится в начало чем мешает просматривать результаты.
Как можно избавится от этих недостатков.
И ещё вопрос как сделать чтобы скролинг по горизонтали работал плавно а не дискретно на одну колонку?
Заранее благодарен :)
← →
Palladin (2003-05-14 11:46) [1]попробуй
перед вставкой LockWindowUpdate(TStringGrid.Handle);
добавление
LockWindowUpdate(0);
← →
Sha (2003-05-14 12:22) [2]Запоминай LeftCol и Col перед вставкой, восстанавливай после.
← →
NickBat (2003-05-14 12:25) [3]> наблюдается мерцание при выводе большого числа элементов
На экран больше сотни не поместится, а на сотне не мерцает.
Вывод: выводи на экран только то, что будет видно пользователю.
← →
MegaVolt (2003-05-14 12:31) [4]Не помогает :( Я при пролистывании выделенную строку не трогаю а когда происходит изменение размера StringGrid-a происходит перемещение к выделенному элементу а это неудобно. Всего этого можно избежать вначале выделив кучу строк заранее превышающую колучество выводимых строк а затем выводить туда строки. Но при этом позунок справа перестаёт играть свою роль :( да и некрасиво это как то :(
← →
4G (2003-05-14 12:32) [5]Ну чначало можно вычснить в цикле сколько надо забить в сетку.
Создать столько строк и столбцов.
а потом забивать в сетку все что не поподя.
Вот и все.
да еще а кто будет смотреть не твои мерцания - все смотрят на результат, ты же не микрософт - тебя не обосрут с ног до головы, что такая мощная контора да ещё и с мерцанием сетку сделала, к тому же сделано на Delphi :D
← →
MegaVolt (2003-05-14 12:37) [6]Не помогает :( Я при пролистывании выделенную строку не трогаю а когда происходит изменение размера StringGrid-a происходит перемещение к выделенному элементу а это неудобно. Всего этого можно избежать вначале выделив кучу строк заранее превышающую колучество выводимых строк а затем выводить туда строки. Но при этом позунок справа перестаёт играть свою роль :( да и некрасиво это как то :(
← →
MegaVolt (2003-05-14 12:43) [7]To 4G:
Вся соль в том что пока идёт поиск найденные результаты уже видны и человек может их просматривать. Если же я их уже все нашол то само собой можно отрисовывать как ты предлогаешь.
А на счёт мерцаний так как раз юзвери и жалуются но особенно им не нравится что после каждого изменения размера происходит перескок на выделенную строку хотя она и не была видна :(
Спорить на тему того что Delphi не язык не будем :)
← →
NickBat (2003-05-14 12:46) [8]Опиши свою задачу, может дело в подходе?
← →
MegaVolt (2003-05-14 12:51) [9]Есть 1 прога которая сканирует сеть и складывает все имена размеры и даты создания файлов в файл.
Есть 2 прога которая ищет по этому файлу по запросу например *.avi и выводит результаты в СтрингГрид по мере того как находит новые результаты. Поиск занимает несколько минут (более милиона файлов) и пользователь хочет просматривать результаты до окончания поиска. Он листает колёсиком мыши список вниз а как только происходит изменение размера грида для добавления следующего элемента прокрутка автоматом прыгает к выделенной строчке т.е. вверх списка т.к. пользователь ещё толком ничего и не выбирал он листает дальше и опять тоже самое в конце концов он приходит ко мне и говорит убери баг а я не знаю как :(
← →
Palladin (2003-05-14 12:57) [10]1 добавляешь порциями, а не по одному
2 используешь LockWindowUpdate
3 перед добавлением запоминаешь текущее состояние и после его восстанавливаешь
← →
NickBat (2003-05-14 12:59) [11]Какой ужас! Интересно для чего такая "прога"? Если есть стандартные утилиты поиска?
Выводи данные пользователю только после того как все уже просканировано.
← →
AlexSV (2003-05-14 13:06) [12]ИМХО под такую задачу лучше использовать ListView в виртуальном режиме.
← →
MegaVolt (2003-05-14 13:09) [13]To Palladin:
1. тогда тот же эффект будет при добавлении порции
2. у меня это не даёт эффекта.
3. и каждый раз будет вначале дёргатся туда куда хочет StringGrid a затем туда куда нужно по моему будет ещё хуже. И у меня это не заработало почему то :(
Прыганье исчезает если я вначале задаю размер грида например 100000 строк и затем туда добавлять строки но по моему это как то коряво если нужно вывести 100 строк делать грид но 100тысяч на всякий случай. Или так и нужно делать?
← →
MegaVolt (2003-05-14 13:21) [14]To NickBat:
Прога нужна для сканирования сети размером больше 250 машин. Обычные проги сканируют её порядка 20 минут :( А если каждый из 250 пользователей будет что то искать?
А если сканернуть один раз а затем искать по базе то поиск значительно сокращается это раз а во вторых можно найти ресурсы на выключенных в данный момент машинах.
Выводить данные после поиска не дают юзвери им уже понравилось и они требуют :(
To AlexSV:
Не знаю что такое виртуальный режим но в обычном режиме вывод большого количества строк очень медленный :(
← →
AlexSV (2003-05-14 14:39) [15]Посмотри TListView.OwnerData
← →
NickBat (2003-05-14 15:24) [16]> затем искать по базе
Вот и создай нормальную базу, а не текстовый файл.
С ней будет работать и быстрее и удобнее.
Вот только что-то не понял:
> найти ресурсы на выключенных в данный момент машинах
Но ведь для запуска ресурса все одно необходимо "поднять" машину.
Большая у вас там дыра в безопастности если все машины в сети расшарены.
← →
MegaVolt (2003-05-15 17:42) [17]To NickBat:
> С ней будет работать и быстрее и удобнее.
Быстрее возможно но не на много это раз а во вторых ставить всем юзерам BDE не желательно и в третьих не умею я с базами работать (и вообще я не программист по специальности)
> Но ведь для запуска ресурса все одно необходимо "поднять" машину.
Абсолютно верно но завтра может оказатся что фильма уже и нету на машине например записан на CD или ещё что и тогда остаётся возможность договрится лично с человеком.
>Большая у вас там дыра в безопастности если все машины в сети расшарены.
Большинство ресурсов расшарено только на чтение и в основном видео, картинки и прочее. Чесно говоря я не совсем понимаю в чём дыра :(
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c