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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2018, 11:42   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию Ошибка ListBox при клике на пустую область

Собственно вопрос - при клике на пустую область в ЛистБоксе (там где нет строки) - вылетает эксепшн.

Использую такой код:

Код:
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  pos: Tpoint;
begin
    if ListBox1.Items.Count > 0 then ListBox1.ItemIndex:= 0;
  pos.X:=x;
  pos.Y:=y;
  ListBox1.ItemIndex:=ListBox1.ItemAtPos(pos, true);
  selitem:=ListBox1.Items.Strings[ListBox1.ItemIndex];
  StatusBar1.SimpleText:='You are selected '+ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
В чем ошибка?
Fakov вне форума Ответить с цитированием
Старый 30.07.2018, 11:48   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Потому что ItemIndex=-1. Проверяй
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.07.2018, 12:00   #3
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

Проверил. Родил только это:
Код:
if ListBox1.ItemIndex = -1 then exit;
При первой итерации все нормально - если загрузить листбокс и выбрать сразу пустой элемент - то все ок. Но если выбрать существующую строку, и потом уже кликнуть на пустую - то опять будет List index out of bound.

Что исправить нужно, хеелп
Fakov вне форума Ответить с цитированием
Старый 30.07.2018, 12:11   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

При чем здесь итерации?
Код:
  ListBox1.ItemIndex:=ListBox1.ItemAtPos(pos, true);
  if ListBox1.ItemIndex=-1 then Exit;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.07.2018, 12:55   #5
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию

Спасибо большое) я эти строки аккурат в другом порядке расположил, потому и не работало)
Fakov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно сделать кликундер при клике на область видео serauto79 PHP 1 02.04.2015 10:16
Форма "Несколько элементов". Ошибка при клике katttes Microsoft Office Access 2 01.04.2013 16:36
Ошибка PHP при быстром клике. matrixphp PHP 3 05.04.2012 22:44
При двойном клике на итеме Listbox'a vendn Помощь студентам 0 20.10.2011 20:22
Как выбрать последный пустую строку в LISTBOX ? Aqil_f Microsoft Office Excel 14 06.09.2010 18:00