Вопрос по обработке изменения ComboBox

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Вопрос по обработке изменения ComboBox

Сообщение PapaNT » 12.12.2012 17:22:17

Уважаемые коллеги, недавно начал осваивать визуальное программирование. Помогите, пожалуйста, разобраться с ComboBox.

Суть беды в следующем:
1. В ComboBox по определенным правилам нормально добавляю элементы;
2. После хочется знать, что некий n-ый или m-ый элемент выбран, дабы произвести некие дальнейшие телодвижения.

Каким событием проверять изменение состояния выбора элементов?

Заранее спасибо!
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Вопрос по обработке изменения ComboBox

Сообщение Mr.Smart » 12.12.2012 19:55:02

Выбор элемента:
Код: Выделить всё
procedure TForm1.ComboBox1Change(Sender: TObject);

Индекс элемента:
Код: Выделить всё
ComboBox1.ItemIndex
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Вопрос по обработке изменения ComboBox

Сообщение PapaNT » 12.12.2012 21:10:17

А для radiogroup аналогично?
В списке стандартных событий нет Change...
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Вопрос по обработке изменения ComboBox

Сообщение Mr.Smart » 12.12.2012 21:13:37

Там событие OnClick срабатывает.

п.с. Пробуйте и экспериментируйте....
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Вопрос по обработке изменения ComboBox

Сообщение PapaNT » 12.12.2012 21:25:03

Словил ошибку:
Error: Forward declaration not solved "TMainForm.RadioGroup_ToDoClick(Sender : TObject)" :(
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Вопрос по обработке изменения ComboBox

Сообщение Mr.Smart » 12.12.2012 21:32:21

У вас не совпадают декларации (описания) методов в классе и реализации.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Вопрос по обработке изменения ComboBox

Сообщение PapaNT » 13.12.2012 11:25:44

Попробовал объявить Click через lfm-файл - ошибка использования несуществующего события.

Буду "тупо" решать через таймер...
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Вопрос по обработке изменения ComboBox

Сообщение Mr.Smart » 13.12.2012 12:04:33

А что мешает воспользоваться IDE Lazarus?
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Вопрос по обработке изменения ComboBox

Сообщение PapaNT » 13.12.2012 12:23:39

Отсутствие события Change. По крайней мере в версии лазаря 1.0 его нет.
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Вопрос по обработке изменения ComboBox

Сообщение Mr.Smart » 13.12.2012 12:25:35

Так используйте событие Click, оно как раз происходит при смене элемента.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Вопрос по обработке изменения ComboBox

Сообщение PapaNT » 13.12.2012 12:41:31

С Combobox разобрался - там клик работает.
-------------------------------------------------------
У Radiogroup он работает только при клике на области не занятой текстом и радиокнопками - пока страдаю с таймером.

Восстановленный алгоритм обработки OnClick:
сперва выбираю нужный элемент, потом кликаю по свободному пространству зарезервированному под RdioGroup и только тогда происходит с обработка события.

Надо чтобы событие обрабатывалось по ChangeSelectet элемента с номером n.
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Вопрос по обработке изменения ComboBox

Сообщение Mr.Smart » 13.12.2012 12:57:53

Пример
Вложения
project.zip
(2.19 КБ) Скачиваний: 481
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Вопрос по обработке изменения ComboBox

Сообщение andrey_k3 » 13.12.2012 22:56:28

У RadioGroup обработка смены выбранного элемента - по OnSelectionChanged
Код: Выделить всё
procedure TForm1.RadioGroup1SelectionChanged(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
    0: Label1.Caption:= 'первый';
    1: Label1.Caption:= 'второй';
    2: Label1.Caption:= 'третий';
  end;
end;
andrey_k3
новенький
 
Сообщения: 22
Зарегистрирован: 17.05.2012 09:52:32


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru