Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

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

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2013, 14:26   #1
leklerk
Пользователь
 
Аватар для leklerk
 
Регистрация: 17.02.2012
Сообщений: 32
По умолчанию Не получается изменить св-во Text у Combobox из события OnSelect или OnChange

Добрый день! У меня такая проблема. В обработчике OnSelect (или OnChange) у Combobox я хочу изменить св-во Text, но не получается. Подскажите, как с этим можно бороться?
leklerk вне форума Ответить с цитированием
Старый 24.01.2013, 14:38   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Так Вы код покажите, с которым бороться нужно - тогда и подскажем
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 24.01.2013, 15:31   #3
leklerk
Пользователь
 
Аватар для leklerk
 
Регистрация: 17.02.2012
Сообщений: 32
По умолчанию

Это такая особенность Combobox, код здесь ничего нового не скажет...
Мне дали такой совет: добавить нужное значение в Items и выбрать соответствующий ItemIndex. Так работает.
leklerk вне форума Ответить с цитированием
Старый 24.01.2013, 15:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
но не получается.
1) Зачем?
2) Отключай событие - меняй - подключай событие:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  with TComboBox(Sender) do begin
    OnChange:=nil;
    Text:='123';
    OnChange:=ComboBox1Change;
  end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.01.2013, 16:59   #5
leklerk
Пользователь
 
Аватар для leklerk
 
Регистрация: 17.02.2012
Сообщений: 32
По умолчанию

Stilet, спасибо за помощь!
leklerk вне форума Ответить с цитированием
Старый 24.01.2013, 19:37   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Stilet, и от меня спасибо прими, я такой фишки не знал.

Хотел поделиться плюсом, но плюсосервис запретил
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 24.01.2013, 20:16   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
но плюсосервис запретил
Не удивительно, репа уже в двери не пролазит )))
P.S. Осторожнее с этим кодом. По крайней мере стоит лучше делать так:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var oc:TNotifyEvent;
begin
  with TComboBox(Sender) do begin
    oc:=OnChange;
    OnChange:=nil;
    Text:='123';
    OnChange:=oc;
  end;
end;
А то ведь и на неприятки можно напороться если кто кто-то кроме меня еще любитель все описывать руками в коде, а не объявлять в дизайне.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.01.2013, 09:43   #8
leklerk
Пользователь
 
Аватар для leklerk
 
Регистрация: 17.02.2012
Сообщений: 32
По умолчанию

Stilet, объясните пожалуйста, в чем разница между этими вариантами, когда она может сказаться?
leklerk вне форума Ответить с цитированием
Старый 25.01.2013, 10:06   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Когда ты динамически создаешь компоненты, и назначаешь обработчики к примеру из массива. Допустим есть массив разных процедур. Тип у них один но выполняют они разные действия, и предположим тебе нужно в определенное время (или для определенного пользунка) сменить обработчик - массивом таким удобно пользоваться, но тогда ты не знаешь какое имя процедуры будет назначено обработчику и инструкция OnChange:=ComboBox1Change; порвет тебе все баклажаны напрочь, переключившись в несуществующий обработчик или не тот который на данном этапе выполнения нужен.
Последний код запоминает перед отключением обработчик, и после корректировки восстанавливает именно тот что был до отключения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.01.2013, 11:00   #10
leklerk
Пользователь
 
Аватар для leklerk
 
Регистрация: 17.02.2012
Сообщений: 32
По умолчанию

Stilet, спасибо за объяснение!
leklerk вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование события OnChange ComboBox Lyubimov Помощь студентам 2 19.04.2011 14:46
Как создать в listbox события OnChange и OnChanging (Delphi 6)? AlexSoft777 Компоненты Delphi 3 22.10.2010 00:54
ComboBox OnSelect Random(1) Общие вопросы Delphi 5 24.12.2009 19:28
При onselect на combobox вып-ие Query1 и Query2, и заполнение Edit Абдуллаев Рустам БД в Delphi 3 08.05.2009 13:59