![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скрол. ListBox1, чтоб показ. записи из Списка(1000000) порциями? [D7, WinXP]
Dr. Andrew © (2006-06-07 22:47:00)Есть список, который состоит из 100000 записей. Мне необходимо загружать в компонент ListBox1 записи порциями, например по 100 записей. При этом скролируя компонент ListBox1 необходимо, чтобы записи постоянно обновлялись. "Ушедшие" элементы из поля видимости компонента ListBox1 заменялись новыми из последовательного списка из 1000000 элементов. Что-то вроде перемещения "окна" (ListBox1) с размером в 100 записей (элементов) по базе данных из 100000 записей. Наверно лучший аналог для этой задичи - логарифмическая инженерная линейка с прозрачным "окошком" перемещающейся по линейке. Пожалуйста, Мастера, подскажите практическое решение данной задачи.
Графически можно это визуализировать так:
----- 0 запись
-----
-----
-------------------------------------------N1 запись (начало)
-----
----------- 1) эти записи отображены в ListBox1
----- ---------------------------------------- после скролирования N1 запись (новое начало)------------------------------------------N2 запись (предел)
----- 2) эти записи отображены в ListBox1 (просле скролирования, например сторону увеч. порядковых номеров элементов) ---------- ---------------------------------------- после скролирования N2 запись (новый предел)----
......... и так далее
------ 100000 запись
Сергей М. (2006-06-09 13:49:00) [1]
> Dr. Andrew (09.06.06 13:17) [26]
Увы и ах ! .. Посыпаю голову пеплом) ..
А что еще остается ? У меня выбора нет, зато у тебя их аж целых два: воспользоваться справкой и/или читать [21]
Sergey13 (2006-06-09 13:24:00) [2]>А то, что я врач смог написать базу данных, то в этом ничего особенного я не вижу.
Пойти, после работы, детей полечить что-ли.
>У меня десятки моих друзей непрограммистов пишут свои базы данных. Ну и что?
Парадокс - не ваш?
ЮЮ (2006-06-09 13:24:00) [3]Дохтуру, похоже надо коллеге показаться, профессионально занимающимуся нервными расстройствами.
Заодно и к окулисту: если в [20] не сказано как показывать ровно столько строк, сколько можно одновременно показать в ListBoхе, то уж и не знаю ещё чем помочь.
Dr. Andrew (2006-06-09 13:17:00) [4]Уважаемые Мастера!
Извините вчера был занят и не смог ответить на столь неподобающие Мастерам реплики!
Игорь Шевченко
Форум для того и существует, чтобы обратившийся мог высказать свои пожелания. Если Мастера не знают решения, а это показал данный диалог, то можно было просто написать, что Ваш профессионализи недостаточно высок в данном вопросе. И все! тем более модератору не стоило переводить данный вопрос к начинающим.
ЮЮ
Никакой "маски", уважаемый Мастер, я не ношу. В моем понимании профессионал - это человек, который каждый день занимается только проблемами программирования и закончивший специальное учебное заведение. А то, что я врач смог написать базу данных, то в этом ничего особенного я не вижу. У меня десятки моих друзей непрограммистов пишут свои базы данных. Ну и что? А для компенсации, в отличие от далеко не профессиональных замечаний в мой адрес - нет проблем проконсультировать Ваших деток. При этом я не буду писать Вам абстрактные ответы без практической значимости.
Сергей М.
Данным тезисом Вы больше позорите себя как Мастера и подчеркиваете собстенное невежество!
Сергей М. (2006-06-08 13:28:00) [5]
> Dr. Andrew (08.06.06 13:17) [22]
Да уж ... похоже, заврался ты, братец кролик)
ЮЮ (2006-06-08 13:26:00) [6]Если детский врач написал "собственную" Базу Данных, то нечего прятаться за маской непрофессианализма. Раньше надо было думать: детей профессионально лечить или базы непрофессионально писать :)
Игорь Шевченко (2006-06-08 13:24:00) [7]
> Но, если учесть, что я детский врч, а не профессиональный
> программист, то можно вместо научной дисскусии выложить
> конкретную ссылку на конкретный пример
Ищущий да обрящет, прыгающий, да допрыгается.
Никто из отвечающих на форуме не обязан давать ссылки на конкретные примеры только потому, что автор не является программистом. В качестве компенсации предлагаю автору полечить детей всех отвечающих :) В свободное время.
Dr. Andrew (2006-06-08 13:17:00) [8]ЮЮ. Но, если учесть, что я детский врч, а не профессиональный программист, то можно вместо научной дисскусии выложить конкретную ссылку на конкретный пример. Спасибо!
Сергей М. (2006-06-08 13:15:00) [9]Кр. того пример использования листбокса в вирт.режиме есть в демо-проекте PingGUI, поставляемом в составе Indy-пакета
ЮЮ (2006-06-08 13:12:00) [10]Никто не дискутирует о базах.
Дискуссия о несовместимости понятий "Список из 100000 записей" и "это строковые переменные типа s : String".
Если это список, то ты можешь получить доступ к N-oму элементу?
TListBox.Style = lbVirtual
Ничего заполнять не надо, надо указать только количество строк
В соответствующем обработчике добираешься до той строки, что требуется для рисования и все
Сергей М. (2006-06-08 13:07:00) [11]
> Dr. Andrew (08.06.06 13:05) [18]
> что дальше?
Дальше МТС не пускают)
> Не понимаю Вашей мысли
А подумать ? А справку почитать для начала ?
Тебе дано направление, дальше ты должен двигаться сам ... И примеры в справке есть..
Dr. Andrew (2006-06-08 13:05:00) [12]Сергей М И что дальше? Не понимаю Вашей мысли. Можно пример. Спасибо!
Сергей М. (2006-06-08 13:04:00) [13]
> Dr. Andrew (08.06.06 12:59) [15]
см. св-во TListBox.Style = lbVirtual
Dr. Andrew (2006-06-08 13:03:00) [14]S0, S1, , S100000: string
и в какой то момент данные из S1000 до S1100 хочется поместить в ListBox
Нет. Почему же так сложно воспринимается очень простая задача?! Строковые записи присуствую всегда и бог сними. Речь идет только о том, чтобы внутри компонента ListBox в динамике отображалось не более 100, например, текущих записей. А при скролировании вместо "скрываемых" записей в ListBox заносились следующие за ними записи. И все. Не надоничего усложнять и дискутировать о базах данных. Уважаемый Мастер, если Вы имеете ссылку на конкретный пример, пожалуйста, выложите мне его или приведите небольшой практический пример. Спасибо!
Dr. Andrew (2006-06-08 12:59:00) [15]Sergey13 Спасибо за совет. Все жен можно выхожить хотя бы ссылку на конкретный пример. Хорошо по типу PageUp и PageDown, НО КАК? Я ни когда не работал с такой проблематикой, поэтому и обратился к Мастерам. Выложите хотя бы ссылку на конкретный пример! Спасибо!
ЮЮ (2006-06-08 12:57:00) [16]
> это строковые переменные типа s : String
Не верю.То есть так?:
S0, S1, , S100000: string;
и в какой то момент данные из S1000 до S1100 хочется поместить в ListBox
Sergey13 (2006-06-08 12:18:00) [17]2 [12] Dr. Andrew (08.06.06 12:06)
>это БД, но моя собственная и она не нуждается в DataSet. Она великолепно работает и бинарный поиск и прочее все на уровне.
Т.е. ты изобрел велосипед, и он ездит. Ну что-ж - желаю удачи.
>Мне не хватает алгоритма просмотра в компоненте списка записей порциями.
Я бы сделал аналоги кнопок PageUp и PageDown (по ним и закачивай новые порции) и не ломал голову.
Dr. Andrew (2006-06-08 12:06:00) [18]Для ЮЮ - это строковые переменные типа s : String
Для Sergey13 извините я не совсем точно выразился - это БД, но моя собственная и она не нуждается в DataSet. Она великолепно работает и бинарный поиск и прочее все на уровне. Мне не хватает алгоритма просмотра в компоненте списка записей порциями. И все!!! Нет необходимости уходить за рамки проблемы. Проблема как сделать так, чтобы в конкретном компоненте Делфи загружалось при скролировании только заранее заданное количество записей. И все! Всем спасибо! Надеюсь, что найдется Мастер, который поможет мне разрешить этот вопрос!
ЮЮ (2006-06-08 11:32:00) [19]Если бы можно было найти, не пришлось бы листать:)
ЮЮ (2006-06-08 11:32:00) [20]
> Вот например искать в твоем списке надо будет? Или просто
> листать 100000.
Если бы можно было найти, не пришлось бы искать :)