Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-83653
Aga
2003-05-04 11:46
2003.05.26
Opera!


1-83574
From_X
2003-05-14 11:38
2003.05.26
Выделение строк в Grid-e


1-83459
BLAST
2003-05-15 02:36
2003.05.26
Нужна помощь с TRichEdit по поиску ничего не нашел :-((


4-83790
QUE
2003-03-26 11:57
2003.05.26
VK_A до VK_Z A до Z ($41 - $5A) а еще ?


4-83800
Ик сик
2003-03-28 13:47
2003.05.26
Можно ли получить handle объекта по координатам





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