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


Автор: Михалыч 18.2.2012, 21:22
подскажите как отловить событие происходящее при нажатии кнопкой мыши на combobox.
Именно на окне Combobox ,а не в выпадающем списке.

Автор: DarkProg 18.2.2012, 23:29
OnClick, не?

Автор: northener 18.2.2012, 23:57
Цитата(DarkProg @  18.2.2012,  23:29 Найти цитируемый пост)
OnClick, не? 

Не. 
OnClick срабатывает только при выборе из выпадающего списка.

Цитата(Михалыч @  18.2.2012,  21:22 Найти цитируемый пост)
подскажите как отловить событие происходящее при нажатии кнопкой мыши на combobox.

А зачем это вам надо?

Автор: Vaskevych 19.2.2012, 19:46
OnMouseDown - не подходит ???

Автор: northener 20.2.2012, 14:04
Цитата(Vaskevych @  19.2.2012,  19:46 Найти цитируемый пост)
OnMouseDown - не подходит ??? 

Вот незадача. У ТCombobox нет события OnMouseDown :(

Автор: MrDmitry 20.2.2012, 17:45
Цитата(northener @ 18.2.2012,  23:57)
Цитата(DarkProg @  18.2.2012,  23:29 Найти цитируемый пост)
OnClick, не? 

Не. 
OnClick срабатывает только при выборе из выпадающего списка.

Цитата(Михалыч @  18.2.2012,  21:22 Найти цитируемый пост)
подскажите как отловить событие происходящее при нажатии кнопкой мыши на combobox.

А зачем это вам надо?

Это на каком дельфи?

На дельфи 7 мини все норм

Код


procedure TForm1.ComboBox1Click(Sender: TObject);
begin
Showmessage('Срабатывает');
end;

Автор: northener 20.2.2012, 17:53
Цитата(MrDmitry @  20.2.2012,  17:45 Найти цитируемый пост)
Это на каком дельфи?

На Д2007

Автор: DarkProg 22.2.2012, 15:24
Цитата(MrDmitry @  20.2.2012,  18:45 Найти цитируемый пост)
Это на каком дельфи?

Ради интереса сам полез, в XE тоже не отрабатывается, а вот как ни странно событие onDblClick срабатывает как надо, что для меня загадка.

В остальном, IMHO надо писать наследника, где вставлять процедуру перехвата OnMouseDown.

Автор: Чучмек 22.2.2012, 18:18
Цитата(DarkProg @  22.2.2012,  15:24 Найти цитируемый пост)
надо писать наследника, где вставлять процедуру перехвата OnMouseDown

Одной procedure (var ...:tmessage);message ... не обойдешся.

Автор: Чучмек 23.2.2012, 14:14
Так, на вскидку, не заморачиваясь на грамотности написания -
Код

var proc:pointer;
function WP(h,m,w,l:cardinal):integer;stdcall;
begin
if m=WM_LBUTTONDOWN then
 begin
 //
 form1.Caption:=inttostr(random(256));
 //
 end;
result:=CallWindowProc(proc,h,m,w,l);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
integer(proc):=SetWindowLong(GetWindow(ComboBox1.Handle, GW_CHILD),GWL_WNDPROC,integer(@WP));
end;

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