Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ListView: пара вопросов...

8.2K
23 июля 2008 года
Pelican
115 / / 16.06.2007
Привет!!!
1) В моей программе есть форма, на ней ListView с Align=alClient. Я в нем отображаю эскизы картинок как в Проводнике. Если я добавлю в пустой ЛВ картинки, то они заполнят всю область ЛВ как и надо. Но если после этого изменить размер формы, то они останутся на своих местах. Это не очень-то красиво. А в проводнике их положение подгоняется под размер формы. Как сделать так же?
(см. вложения)
2) Как мне узнать какие именно элементы видны на ЛВ (индексы, с какого по какой)
Спасибо.
3.7K
23 июля 2008 года
0nni
326 / / 24.06.2008
Цитата: Pelican
Привет!!!
1) В моей программе есть форма, на ней ListView с Align=alClient. Я в нем отображаю эскизы картинок как в Проводнике. Если я добавлю в пустой ЛВ картинки, то они заполнят всю область ЛВ как и надо. Но если после этого изменить размер формы, то они останутся на своих местах. Это не очень-то красиво.


тоже как-то мучался, но решения так и не нашел... но сегодня еще помучался и выяснил следующее:

 
Код:
ListView1.IconOptions.AutoArrange := true;


А по второму вопросу... у незнаю =( может это тебе в помощь?
 
Код:
ListView1.Items.top
ListView1.Items.left
1.9K
23 июля 2008 года
GreenRiver
451 / / 20.07.2008
1. В визуале есть свойство IconOptions->AutoArrange выставляем в true (C++ Builder 2007, в ранних версиях, наверное, аналогично).
2. Первый видимый элемент, это видимо TopItem, а как узнать сколько их ... затрудняюсь ответить (есть свойство VisibleRowCount, возможно подойдет).

Удачи! :)
8.2K
23 июля 2008 года
Pelican
115 / / 16.06.2007
С первым вопросом все ясно, спасибо.
А вот со вторым сложновато.
TopItem доступен только при ViewStyle=vsReport||vsList, а у меня vsIcon - по другому нельзя. VisibleRowCount тоже не для vsIcon.
Я затеял эту бодягу, чтобы грузить картинки только для видимых итемов, иначе, если файлов штук 200 (или больше), пользователь уснет, а когда проснется выкинет мою прогу нафиг. :)
Ну, ведь должно же быть какое-то решение...
1.9K
23 июля 2008 года
GreenRiver
451 / / 20.07.2008
Тогда такой вопрос у тебя виртуальный список или нет?
Если нет - то ты можешь обрабатывать OnCustomDrawItem ... а картинку хранить в свойстве Data. Если Data = NULL (о чем надо позаботиться заранее ;)) тогда загружаем картинку и показываем, если не NULL просто показываем картинку. Получается, когда надо показать картинку, мы смотрим есть ли она, если есть показываем, если нет - догружаем.

Не знаю насколько хорош вариант, но это первое что в голову приходит :)

Если же список виртуальный ... тогда тоже можно что-нибудь придумать, но уже посложнее будет :)
3.7K
23 июля 2008 года
0nni
326 / / 24.06.2008
Мое такое мнение, если задача столь специфична, то можно написать свой компонент, если все картинки будут одного размера, то проблем вообще быть не должно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог