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

Вниз

Скрол. ListBox1, чтоб показ. записи из Списка(1000000) порциями?   Найти похожие ветки 

 
Dr. Andrew   (2006-06-07 22:47) [0]

Есть список, который состоит из 100000 записей. Мне необходимо загружать в компонент ListBox1 записи порциями, например по 100 записей. При этом скролируя компонент ListBox1 необходимо, чтобы записи постоянно обновлялись. "Ушедшие" элементы из поля видимости компонента ListBox1 заменялись новыми из последовательного списка из 1000000 элементов. Что-то вроде перемещения "окна" (ListBox1) с размером в 100 записей (элементов) по базе данных из 100000 записей. Наверно лучший аналог для этой задичи - логарифмическая инженерная линейка с прозрачным "окошком" перемещающейся по линейке. Пожалуйста, Мастера, подскажите практическое решение данной задачи.
Графически можно это визуализировать так:

----- 0 запись
-----
-----
-------------------------------------------N1 запись (начало)
-----
----------- 1) эти записи отображены в ListBox1
-----                           ----------------------------------------после скролирования N1 запись (новое начало)------------------------------------------N2 запись (предел)
-----  2) эти записи отображены в ListBox1 (просле скролирования, например сторону увеч. порядковых номеров элементов)      ----------                            ----------------------------------------после скролирования N2 запись (новый предел)----
......... и так далее
------ 100000 запись


 
Dr. Andrew   (2006-06-07 22:56) [1]

Иожет есть где готовый алгоритм?

Немного скорректировал предыдущую схему:

--------- 0 запись
---------
---------
--------------------------------- N1 запись (начало)
---------
--------- 1) эти записи отображены в ListBox1
---------   после скролирования N1 запись (новое начало)
--------------------------------- N2 запись (предел)
-----  2) эти записи отображены в ListBox1 (просле скролирования, например сторону увеч. порядковых номеров элементов)      
----------                            
---------- после скролирования N2 запись (новый предел)----------
......... и так далее
------ 100000 запись

Все спасибо!


 
EvS ©   (2006-06-07 22:58) [2]

Подумай сначала о тех "счастливчиках", которым придется лопатить эти 100000 записей.


 
Jolik ©   (2006-06-07 23:30) [3]

Думаю надо использовать ListView в режиме "виртуального списка". Поищи в инете - примеров - море.


 
Dr. Andrew   (2006-06-07 23:43) [4]

Нет задача совсем не такая уж и сложная для тех кто будет "лопатить". Здесь речь идет только о том чтобы в компоненте ListBox1 загружать одновременно ограниченное число записей и все. ListView не годится. Может кто-то подскажет ссылку на готовый алгоритм или пример?


 
ЮЮ ©   (2006-06-08 04:56) [5]

Графически можно это визуализировать так:
Да уж, визуализировал, так визуализировал. :)


десь речь идет только о том чтобы в компоненте ListBox1 загружать одновременно ограниченное число записей и все.


Так проблема в чем? Что не удается?
Переместиться в DataSet-e к началу блока (MoveBy) или заполнить ListBox1?


 
begin...end ©   (2006-06-08 07:31) [6]

ListBox вообще-то тоже может быть виртуальным. Это так, к слову.


 
Dr. Andrew   (2006-06-08 11:20) [7]

Спасибо всем за помощь! Задача остается. Я не работаю с базами данных. Это совсем для иной цели. Поэтому мне не годятся решения с DataSet. Мастера все же может кто-то приведет конкретный пример заполнения списка порциями от исходного большого списка. Не понимаю почему модератор переместил мой вопрос к начинающим. Я достаточно четко поставил вопрос и он достаточно серьезный. Пожалуйста, приведите или ссылку на готовый алгоритм или покажите как это можно сделать. Всем спасибо!


 
ЮЮ ©   (2006-06-08 11:25) [8]

Для начала расскажи, что из себя представляет большой список..
Какого класса объект?


 
Sergey13 ©   (2006-06-08 11:27) [9]

2 [7] Dr. Andrew   (08.06.06 11:20)
Если
>Я не работаю с базами данных.
то
>Поэтому мне не годятся решения с DataSet.
это голословное утверждение.

>Это совсем для иной цели.
БД - это не цель. Это метод решения подобных задач.
Вот например искать в твоем списке надо будет? Или просто листать 100000.


 
ЮЮ ©   (2006-06-08 11:32) [10]


> Вот например искать в твоем списке надо будет? Или просто
> листать 100000.


Если бы можно было найти, не пришлось бы искать :)


 
ЮЮ ©   (2006-06-08 11:32) [11]

Если бы можно было найти, не пришлось бы листать :)


 
Dr. Andrew   (2006-06-08 12:06) [12]

Для ЮЮ - это строковые переменные типа s : String
Для Sergey13 извините я не совсем точно выразился - это БД, но моя собственная и она не нуждается в DataSet. Она великолепно работает и бинарный поиск и прочее все на уровне. Мне не хватает алгоритма просмотра в компоненте списка записей порциями. И все!!! Нет необходимости уходить за рамки проблемы. Проблема как сделать так, чтобы в конкретном компоненте Делфи загружалось при скролировании только заранее заданное количество записей. И все! Всем спасибо! Надеюсь, что найдется Мастер, который поможет мне разрешить этот вопрос!


 
Sergey13 ©   (2006-06-08 12:18) [13]

2 [12] Dr. Andrew   (08.06.06 12:06)
>это БД, но моя собственная и она не нуждается в DataSet. Она великолепно работает и бинарный поиск и прочее все на уровне.

Т.е. ты изобрел велосипед, и он ездит. Ну что-ж - желаю удачи.

>Мне не хватает алгоритма просмотра в компоненте списка записей порциями.
Я бы сделал аналоги кнопок PageUp и PageDown (по ним и закачивай новые порции) и не ломал голову.


 
ЮЮ ©   (2006-06-08 12:57) [14]


> это строковые переменные типа s : String

Не верю.То есть так?:

S0, S1,  , S100000: string;

и в какой то момент данные из S1000 до S1100 хочется поместить в ListBox


 
Dr. Andrew   (2006-06-08 12:59) [15]

Sergey13 Спасибо за совет. Все жен можно выхожить хотя бы ссылку на конкретный пример. Хорошо по типу PageUp и PageDown, НО КАК? Я ни когда не работал с такой проблематикой, поэтому и обратился к Мастерам. Выложите хотя бы ссылку на конкретный пример! Спасибо!


 
Dr. Andrew   (2006-06-08 13:03) [16]

S0, S1,  , S100000: string
и в какой то момент данные из S1000 до S1100 хочется поместить в ListBox


Нет. Почему же так сложно воспринимается очень простая задача?! Строковые записи присуствую всегда и бог сними. Речь идет только о том, чтобы внутри компонента ListBox в динамике отображалось не более 100, например, текущих записей. А при скролировании вместо "скрываемых" записей в ListBox заносились следующие за ними записи. И все. Не надоничего усложнять и дискутировать о базах данных. Уважаемый Мастер, если Вы имеете ссылку на конкретный пример, пожалуйста, выложите мне его или приведите небольшой практический пример. Спасибо!


 
Сергей М. ©   (2006-06-08 13:04) [17]


> Dr. Andrew   (08.06.06 12:59) [15]


см. св-во TListBox.Style = lbVirtual


 
Dr. Andrew   (2006-06-08 13:05) [18]

Сергей М И что дальше? Не понимаю Вашей мысли. Можно пример. Спасибо!


 
Сергей М. ©   (2006-06-08 13:07) [19]


> Dr. Andrew   (08.06.06 13:05) [18]


> что дальше?


Дальше МТС не пускают)


> Не понимаю Вашей мысли


А подумать ? А справку почитать для начала ?
Тебе дано направление, дальше ты должен двигаться сам ... И примеры в справке есть..


 
ЮЮ ©   (2006-06-08 13:12) [20]

Никто не дискутирует о базах.
Дискуссия о несовместимости понятий "Список  из 100000 записей" и "это строковые переменные типа s : String".
 Если это список, то ты можешь получить доступ к N-oму элементу?
 TListBox.Style = lbVirtual
 Ничего заполнять не надо, надо указать только количество строк
 В соответствующем обработчике добираешься до той строки, что требуется для рисования и все


 
Сергей М. ©   (2006-06-08 13:15) [21]

Кр. того пример использования листбокса в вирт.режиме есть в демо-проекте PingGUI, поставляемом в составе Indy-пакета


 
Dr. Andrew   (2006-06-08 13:17) [22]

ЮЮ. Но, если учесть, что я детский врч, а не профессиональный программист, то можно вместо научной дисскусии выложить конкретную ссылку на конкретный пример. Спасибо!


 
Игорь Шевченко ©   (2006-06-08 13:24) [23]


> Но, если учесть, что я детский врч, а не профессиональный
> программист, то можно вместо научной дисскусии выложить
> конкретную ссылку на конкретный пример


Ищущий да обрящет, прыгающий, да допрыгается.

Никто из отвечающих на форуме не обязан давать ссылки на конкретные примеры только потому, что автор не является программистом. В качестве компенсации предлагаю автору полечить детей всех отвечающих :) В свободное время.


 
ЮЮ ©   (2006-06-08 13:26) [24]

Если детский врач написал "собственную" Базу Данных, то нечего прятаться за маской непрофессианализма. Раньше надо было думать: детей профессионально лечить или базы непрофессионально писать :)


 
Сергей М. ©   (2006-06-08 13:28) [25]


> Dr. Andrew   (08.06.06 13:17) [22]


Да уж ... похоже, заврался ты, братец кролик)


 
Dr. Andrew   (2006-06-09 13:17) [26]

Уважаемые Мастера!
Извините вчера был занят и не смог ответить на столь неподобающие Мастерам реплики!

Игорь Шевченко
Форум для того и существует, чтобы обратившийся мог высказать свои пожелания. Если Мастера не знают решения, а это показал данный диалог, то можно было просто написать, что Ваш профессионализи недостаточно высок в данном вопросе. И все!  тем более модератору не стоило переводить данный вопрос к начинающим.

ЮЮ
Никакой "маски", уважаемый Мастер, я не ношу. В моем понимании профессионал - это человек, который каждый день занимается только проблемами программирования и закончивший специальное учебное заведение. А то, что я врач смог написать базу данных, то в этом ничего особенного я не вижу. У меня десятки моих друзей непрограммистов пишут свои базы данных. Ну и что? А для компенсации, в отличие от далеко не профессиональных замечаний в мой адрес - нет проблем проконсультировать Ваших деток. При этом я не буду писать Вам абстрактные ответы без практической значимости.

Сергей М.
Данным тезисом Вы больше позорите себя как Мастера и подчеркиваете собстенное невежество!


 
ЮЮ ©   (2006-06-09 13:24) [27]

Дохтуру, похоже надо коллеге показаться, профессионально занимающимуся нервными расстройствами.

Заодно и к окулисту: если в [20] не сказано как показывать ровно столько строк, сколько можно одновременно показать в ListBoхе, то уж и не знаю ещё чем помочь.


 
Sergey13 ©   (2006-06-09 13:24) [28]

>А то, что я врач смог написать базу данных, то в этом ничего особенного я не вижу.

Пойти, после работы, детей полечить что-ли.

>У меня десятки моих друзей непрограммистов пишут свои базы данных. Ну и что?

Парадокс - не ваш?


 
Сергей М. ©   (2006-06-09 13:49) [29]


> Dr. Andrew   (09.06.06 13:17) [26]


Увы и ах ! .. Посыпаю голову пеплом) ..
А что еще остается ? У меня выбора нет, зато у тебя их аж целых два: воспользоваться справкой и/или читать [21]



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

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

Наверх





Память: 0.53 MB
Время: 0.011 c
2-1150039565
learner
2006-06-11 19:26
2006.07.02
Правильное ведение лога с использованием нитей


15-1149744798
VitV
2006-06-08 09:33
2006.07.02
Умрёт ли дэлфи?


2-1149790180
Ben-T
2006-06-08 22:09
2006.07.02
ComboBox


3-1146728733
Alexey V.
2006-05-04 11:45
2006.07.02
Курс валюты в выходные дни


3-1146683290
Nicky
2006-05-03 23:08
2006.07.02
Ошибка при открытии из первой формы второй





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