Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListBox, Вопрос по ListBox 
V
    Опции темы
raz
Дата 12.6.2008, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 31.3.2008
Где: Soligorks =)

Репутация: нет
Всего: нет



Может это тупой вопрос, но всеже я незнаю как сделать! У меня на форме лежит Edit и ListBox в Listbox есть строчки как сделать что при нажатии на строчки в edit отображалось содержимое строки на которую я нажал!

--------------------
PM MAIL   Вверх
TForumUser
Дата 12.6.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



событие OnClick
Код
Edit1.Text := ListBox1.Items[ListBox1.ItemIndex];


Это сообщение отредактировал(а) TForumUser - 12.6.2008, 23:07
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
mr.Anderson
Дата 13.6.2008, 01:00 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



TForumUser, ну да, только не забываем ItemIndex проверять.
Код

if( ListBox1.ItemIndex <> -1 ) then
 Edit1.Text := ListBox1.Items[ ListBox1.ItemIndex ];



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
TForumUser
Дата 13.6.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Цитата(mr.Anderson @  13.6.2008,  01:00 Найти цитируемый пост)
 ну да, только не забываем ItemIndex проверять.

Это лишнее. 
Цитата(TForumUser @  12.6.2008,  23:02 Найти цитируемый пост)
событие OnClick

событие OnClick срабатывает, когда мы нажимаем на какую-нибудь строчку. Если мы нажали на строчку, то ItemIndex не может быть равен -1. Условие всегда верно.

Это сообщение отредактировал(а) TForumUser - 13.6.2008, 11:58
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
mr.Anderson
Дата 13.6.2008, 12:10 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



TForumUser, ты уверен? Это событие срабатывает даже при клике просто на области листбокса, вовсе необязательно, чтобы там уже была выделена какая-то строка. Так что не минусуй сообщение, не проверив свои слова.

Это сообщение отредактировал(а) mr.Anderson - 13.6.2008, 12:12


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
TForumUser
Дата 13.6.2008, 12:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



я проверил, как раз перед тем, как написать. Попробуй выполнить мою программу и сам убедишься.
Или просто выполни по шагам свою.
Или хотябы такой
Код
procedure TForm1.ListBox1Click(Sender: TObject);
begin
 ShowMessage('!');
end;

На экране выскочит "!" когда сработает событие. Потыкай по листбоксу и посмотри, когда событие срабатывает

P.S. из справки Delphi
Usually OnClick occurs when the user presses and releases the left mouse button with the mouse pointer over the control. This event can also occur when
  • The user selects an item in a grid, outline, list, or combo box by pressing an arrow key.
  • The user presses Spacebar while a button or check box has focus.
  • The user presses Enter when the active form has a default button (specified by the Default property).
  • The user presses Esc when the active form has a cancel button (specified by the Cancel property).
  • The user presses the accelerator key for a button or check box. 
  • The Checked property of a radio button is set to true.
  • The value of the Checked property of a check box is changed.
  • The Click method of a menu item is called.


Это сообщение отредактировал(а) TForumUser - 13.6.2008, 12:44
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
mr.Anderson
Дата 13.6.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



TForumUser, специально перед отправкой своего поста сделал форму, кинул туда листбокс побольше размером, вписал туда три элемента. Прописал на OnClick вывод сообщения по индексу выделенного элемента. При клике НА ПУСТОМ МЕСТЕ листбокса получал ошибку "Выход за границу диапазона", т.е. обращение к несуществующему индексу листбокса, коим являлся на момент срабатывания события -1.

Если бы я не проверил, я бы не говорил.

Я уже не раз напарывался на эту ошибку на начальных этапах обучения программированию еще в C++ Builder 5, а потом уже и в Делфи. И долго разбирался, откуда она берется, но когда разобрался, запомнил уже навсегда. Поэтому и сейчас указываю на этот факт, выход за границу диапазона в листбоксе нужно контролировать всегда!

Это сообщение отредактировал(а) mr.Anderson - 13.6.2008, 12:58


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
TForumUser
Дата 13.6.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Интересная мысль. Может, у нас разные версии? (у меня Delphi 7)
Сам кидаю на форму пустой (пробывал и с наполовину заполненным) листбокс (TListBox) - при клике на пустое место никакой ошибки нет, ничего не происходит. При клике по строчке всё работает как часы. При выполнении по шагам при клике на пустое место событие не запускается (ничего не происходит). Мистика smile 

Это сообщение отредактировал(а) TForumUser - 13.6.2008, 13:04
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
THandle
Дата 13.6.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



У меня при клике на пустом месте ничего не происходит. Мой тестовый проект в аттаче.



Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  1.rar 165,35 Kb
PM   Вверх
mr.Anderson
Дата 13.6.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



THandle, ну вообще потрясающе. А у меня происходит! Ща проект выложу...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
THandle
Дата 13.6.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Все ясно. 

В D7, BDS2006 при клике по пустому месту ничего не происходит.

В D2007 AV.

Это сообщение отредактировал(а) THandle - 13.6.2008, 13:09
PM   Вверх
mr.Anderson
Дата 13.6.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Вот! Держите. Проверяйте.

И версии тут не при чем, у меня что в Билдере 5-6, что в Дельфе 7 и Дельфе 2007 - везде срабатывает на пустом месте. Оси ХР и Vista.

См. аттач.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  ListBoxProject.rar 6,27 Kb


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 13.6.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



THandle, как так? У меня и в седьмой срабатывало насколько я помню... М, значит, не настолько хорошо помню.

Все, вопрос закрыт. Несоответствие версий. THandle, прошу убрать несправедливо влепленный мной TForumUser'у минус в репу.

TForumUser, мои извинения.

Это сообщение отредактировал(а) mr.Anderson - 13.6.2008, 13:12


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
TForumUser
Дата 13.6.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.7.2007

Репутация: 0
Всего: 0



Цитата
procedure TForm1.FormClick(Sender: TObject);
begin
 ListBox1.ItemIndex := -1;
end;
А это что??
--------------------
Экономте электроэнергию! Выключайте Num Lock!
PM MAIL ICQ   Вверх
mr.Anderson
Дата 13.6.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



TForumUser, это я сделал, чтобы не приходилось перезапускать приложение для убирания индекса с листбокса. Для проверки. В листбоксе не всегда может быть выделена строка. Если там уже однажды произошло выделение, то оно там останется и событие клика будет срабатывать верно даже при щелчке на пустом месте, т.к. ItemIndex уже не отрицателен. Поэтому я вписал в свой проект эту функцию для снятия ItemIndex при клике на форме.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.