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

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

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

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

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

Сообщение PapaNT »

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

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

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

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

Сообщение Mr.Smart »

Выбор элемента:

Код: Выделить всё

procedure TForm1.ComboBox1Change(Sender: TObject); 

Индекс элемента:

Код: Выделить всё

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

Сообщение PapaNT »

А для radiogroup аналогично?
В списке стандартных событий нет Change...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

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

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

Сообщение PapaNT »

Словил ошибку:
Error: Forward declaration not solved "TMainForm.RadioGroup_ToDoClick(Sender : TObject)" :(
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

У вас не совпадают декларации (описания) методов в классе и реализации.
PapaNT
постоялец
Сообщения: 162
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

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

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

Сообщение Mr.Smart »

А что мешает воспользоваться IDE Lazarus?
PapaNT
постоялец
Сообщения: 162
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

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

Сообщение Mr.Smart »

Так используйте событие Click, оно как раз происходит при смене элемента.
PapaNT
постоялец
Сообщения: 162
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

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

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

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

Сообщение Mr.Smart »

Пример
Вложения
project.zip
(2.19 КБ) 644 скачивания
andrey_k3
новенький
Сообщения: 22
Зарегистрирован: 17.05.2012 09:52:32

Сообщение andrey_k3 »

У RadioGroup обработка смены выбранного элемента - по OnSelectionChanged

Код: Выделить всё

procedure TForm1.RadioGroup1SelectionChanged(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
    0: Label1.Caption:= 'первый';
    1: Label1.Caption:= 'второй';
    2: Label1.Caption:= 'третий';
  end;
end;
Ответить