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

Вниз

Как правильно добавлять данные в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
14-83691
Darkin
2003-05-06 01:58
2003.05.26
При попытке Внесений изменений в БД ругается??


6-83630
BGV
2003-03-25 11:27
2003.05.26
NMFTP-компонент висит при вызове метода List


1-83571
Sharik_212
2003-05-12 19:05
2003.05.26
Как запустить почтовую программу, которая определена по умолчанию


3-83406
Desdechado
2003-05-06 16:08
2003.05.26
лицензия на midas.dll


1-83521
$HiC0
2003-05-13 11:22
2003.05.26
2-х цветное изображение... получение, обработка