Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ComboBox - снять выделение с текста


Автор: ekzo 19.6.2014, 08:32
Добавляю элементы в ComboBox при старте, пытаюсь снять выделение с текста добавленного элемента - не работает. В OnShow и OnActivate тоже. Кто виноват и что делать?

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.Add('item');
  ComboBox1.ItemIndex:=0;
  ComboBox1.SelStart:=0;
end;


Автор: kami 19.6.2014, 16:31
Код

PostMessage(ComboBox1.Handle, CB_SETEDITSEL, 0, MakeLParam(0, 0));

Автор: ekzo 20.6.2014, 00:38
Цитата(kami @  19.6.2014,  16:31 Найти цитируемый пост)
PostMessage(ComboBox1.Handle, CB_SETEDITSEL, 0, MakeLParam(0, 0));

Спасибо! Пробовал это же с SendMessage - не помогло, вы не в курсе, почему?

Автор: kami 20.6.2014, 07:26
Цитата(ekzo @  20.6.2014,  00:38 Найти цитируемый пост)
вы не в курсе, почему?

Потому что SendMessage - это "хочу сейчас и немедленно". Выполнение своего кода приостанавливается и управление передается тому окну, куда отправлено сообщение.  И где-нибудь в дальнейшем коде (скорее всего - во внутренностях комбобокса) наше "хочу сейчас" перекрывается тем, что поставит сам комбобокс.
А PostMessage - отправляет сообщение в конец очереди, т.е. "селектирование" отработает по завершению всех инициализаций - потом, когда компонент станет "свободен".

Автор: ekzo 20.6.2014, 21:00
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)