Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обновление компонента сендмеседжом [D7, XP]


NoSilence ©   (2010-05-10 18:42:00) 

Задача: выбрать элемент в listbox и combobox на чужом окне.

SendMessage(hCB, CB_SETCURSEL, 7, 0);

выбирает нужный элемент, но не вызывает события
пробовал посылать нажатие энтера, но эффект тот же


sniknik   (2010-05-11 19:30:00) [1]

> и нашел подобный проблемы :)
зачем искать "подобный проблемы" если уже дан "готовый решений"?


Leonid Troyanovsky   (2010-05-11 19:08:00) [2]


> NoSilence   (11.05.10 18:50) [17]

> В смысле?

http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%80%D0%B0%D0%BA%D0%B0%D0%B4%D0%B0%D0%B1%D1%80%D0%B0_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F)

--
Regards, LVT.


NoSilence   (2010-05-11 18:50:00) [3]

В смысле?


Leonid Troyanovsky   (2010-05-11 18:16:00) [4]


> NoSilence   (11.05.10 18:01) [15]

> SendMessage(hWindow,WM_COMMAND,MakeWparam(0,CBN_SELCHANGE),
> hCB);

Абракадабра.

--
Regards, LVT.


NoSilence   (2010-05-11 18:01:00) [5]

Спасибо. Данная функция не помогла, но я стал искать информацию по MakeWParam и нашел подобный проблемы :)

SendMessage(hWindow,WM_COMMAND,MakeWparam(0,CBN_SELCHANGE),hCB);
И другие ответы, по меседжам :)


Leonid Troyanovsky   (2010-05-11 08:14:00) [6]


> NoSilence   (10.05.10 21:26) [12]

> for i:= $B000 to $B000+69 do SendMessage(hCB

SendMessage(hCB, CN_COMMAND, MakeWParam(0, CBN_EDITCHANGE), 0);

--
Regards, LVT.


Плохиш   (2010-05-10 21:34:00) [7]

В исходниках TComboBox всё написано.


NoSilence   (2010-05-10 21:26:00) [8]

Извиняюсь за "неправильные" слова, ибо быдло кодер (т.е. не программист по образованию)

генофонд это Controls.pas, ComCtrls.pas и прочие? Не смог найти там нужного сообщения.

максимум до чего додумался:
SendMessage(hCB, CB_SETCURSEL, 7, 0);
for i:= $B000 to $B000+69 do SendMessage(hCB, i, 0, 0);

и небольшие вариации с параметрами...


sniknik   (2010-05-10 20:25:00) [9]

OnChange это не событие, это метод компонента, который вызывается VCL (явный вызов процедуры) по какому то событию (последовательности событий/действий/х.з. неважно). посмотри в генофонде где вызывается и будешь знать, что за событие нужно послать...


NoSilence   (2010-05-10 20:25:00) [10]

И так. Совсем другой вариант:

На форме имеется ComboBox1
С событием OnChange

Выбираем ручками нужну нам строку, что вызывает OnChange

Теперь делаем
ComboBox1.ItemIndex:= 3;
событие OnChange не вызывается, строка меняется.
Нужно далее вызвать его.

Но а если это другое приложение?
SendMessage(hCB, CB_SETCURSEL, 3, 0);
SendMessage(hCB, CB_RESET, 0, 0); // Грубо говоря


NoSilence   (2010-05-10 20:17:00) [11]

Да не в моей. Короче, есть программа, там есть дроп скисок, при выборе которого подгружается вся инфа.

Мне всего лишь нужно выбрать строку из этого дроп списка, так чтобы в том приложении загрузилась инфа, а не тупо поменялось значение элемента.


Юрий Зотов   (2010-05-10 20:11:00) [12]

> NoSilence   (10.05.10 20:07) [7]

Вы уже говорили, что она не Ваша. И я Вам о том же говорю. С чего вдруг в Вашей программе должны возникать чужие события?


NoSilence   (2010-05-10 20:07:00) [13]

Юрий Зотов, другая программа написана да делфи, не моя. Мне нужно выбрать из списка нужную строку, при этом должна произойти загрузка всего связанного с ним, но она не происходит.


Юрий Зотов   (2010-05-10 20:07:00) [14]

> NoSilence   (10.05.10 20:04) [5]

Еще раз - почему Вы решили, что изменения в чужой программе должны вдруг сами по себе отражаться в Вашей прграмме?


NoSilence   (2010-05-10 20:04:00) [15]

Юрий Зотов, там же видно, что в другом окне строчка поменялась, но связанные с ее выбором действия не произошли.
if SendMessage(hCB, CB_SETCURSEL, 7, 0) = 7 then exit;
дальнейшие действия прервались


Юрий Зотов   (2010-05-10 20:03:00) [16]

> NoSilence   (10.05.10 20:02) [2]
> OnChange

В чужой программе событие, может быть, и происходит - но с чего вдруг оно должно происходить в Вашей программе?


Юрий Зотов   (2010-05-10 20:02:00) [17]

> NoSilence   (10.05.10 18:42)  

if SendMessage(hCB, CB_SETCURSEL, 7, 0) = 7 then
 строка_выбрана_успешно
else
 была_ошибка;


NoSilence   (2010-05-10 20:02:00) [18]

OnChange


Игорь Шевченко   (2010-05-10 19:55:00) [19]


>  но не вызывает события


а какое событие должно произойти ? армагеддон ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо