Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2009, 23:34   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Можно ли узнать количество видимых строк в ListView\ListBox?

Когда строк много, появляется скрол-бар... Можно ли в таком случае узнать, сколько строк видно на экране?
TwiX вне форума Ответить с цитированием
Старый 01.08.2009, 00:19   #2
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

У них нету свойства которые хранят это.. Но можна пощитать самому.. Берем List** узнаем его высоту и размер шрифта, из размера шрифта узнаем размер строки, делим высоту листа на высоту строки, округляем в меньшую сторону и радуемся:-)

кстать, если это число больше чем всего строк в листе - то видимы все строки..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 01.08.2009, 01:03   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

У меня была такая же идея, но как узнать высоту листа?)
TwiX вне форума Ответить с цитированием
Старый 01.08.2009, 01:45   #4
rangerx
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 46
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
    item_height : integer;
    result         : integer;
begin
    item_height := SendMessage(ListBox1.Handle, LB_GETITEMHEIGHT, 0, 0);
    result := ListBox1.Height div item_height;
    if result > ListBox1.Items.Count then Form1.Caption := IntToStr(ListBox1.Items.Count)
    else Form1.Caption := IntToStr(result);
end;

Последний раз редактировалось rangerx; 01.08.2009 в 01:59.
rangerx вне форума Ответить с цитированием
Старый 01.08.2009, 02:01   #5
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Спасибо =)
Хоть и ничего нового =)
А высоту я искал через getWindowPos

хотя джае ошибка есть =)
LB_GETITEMHEIGHT - высота одного итема

Последний раз редактировалось Stilet; 03.08.2009 в 09:12.
TwiX вне форума Ответить с цитированием
Старый 03.08.2009, 09:00   #6
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
хотя джае ошибка есть =)
LB_GETITEMHEIGHT - высота одного итема
Ну, и где ошибка-то, всё правильно берём высоту одного итема и делим высоту listbox'a и соответственно получаем колличество видимых итемов, так что никаких ошибок.
inndim вне форума Ответить с цитированием
Старый 03.08.2009, 09:19   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
всё правильно берём высоту одного итема и делим высоту listbox'a
Это если стандартная отрисовка, а если итемы отрисовываются в стиле Variable, то действовать по другому нужно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2009, 13:03   #8
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Stilet
Согласен, просто мой комменатрий был относительно кода предложенного rangerx.
inndim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать количество недель EugeneIsmatulin Общие вопросы Delphi 3 25.05.2009 09:32
проблема с listbox и listview. blackstersl Общие вопросы Delphi 3 06.05.2009 23:31
количество строк ciaonataha Общие вопросы C/C++ 3 05.05.2009 16:31
Ошибки при переходе с ListBox на ListView Shouldercannon Общие вопросы Delphi 12 21.03.2009 10:03
ListBox (количество строк) Vali_T Помощь студентам 6 06.10.2008 15:30