Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: CL | DM;

Вниз

Определение какая нажата кнопка   Найти похожие ветки 

 
DDA ©   (2004-01-10 13:09) [0]

Например имеется 100 SpeedButton на форме
как определить можно быстро какая нажата кнопка

не залезая для каждой в OnClick и не прописывая там код.
Хотя бы определить Caption(лучше даже будет если Caption определить)


 
YuRock ©   (2004-01-10 13:34) [1]

Для SpeedButton не знаю. Для остальных кнопок:

В классе окна добавь:

protected
procedure WndProc(var Msg: TMessage); override;

потом:


...
Implementetion
...
procedure TForm1.WndProc(var Msg: TMessage);
const
MAX_CAPTION = 100;
var
hButton: HWND;
pCaption: Array[0..MAX_CAPTION] of Char;
begin
inherited;
if (Msg.Msg = WM_COMMAND) and (HiWord(Msg.wParam) = BN_CLICKED) then begin
...
hButton := HWND(Msg.lParam);
GetWindowText(hButton, @pCaption, MAX_CAPTION - 1);
ShowMessage(String(pCaption));
...
end;
end;


 
jack128 ©   (2004-01-10 13:45) [2]

procedure CommonClickHandlerForSpeedButtons(Sender: TObject);
begin
if Sender = SpeedButton1 then
...
else
if Sender = SpeedButton2 then
...
else
if Sender = SpeedButton2 then
...
else ...
end;


 
Anatoly Podgoretsky ©   (2004-01-10 13:52) [3]

(Sender as TSpeedButton).Caption


 
Vovchik_A ©   (2004-01-10 13:53) [4]

2 YuRock © (10.01.04 13:34) [1]
А че не Sender проверять ?


 
YuRock ©   (2004-01-10 13:57) [5]

> Vovchik_A © (10.01.04 13:53) [4]
> А че не Sender проверять ?


Где проверять???


 
Vovchik_A ©   (2004-01-10 13:58) [6]

2YuRock © (10.01.04 13:57) [5]Да вон написали уже


 
YuRock ©   (2004-01-10 14:09) [7]

> Vovchik_A © (10.01.04 13:58) [6]

Где написали, в 2? :))))))


 
Anatoly Podgoretsky ©   (2004-01-10 14:11) [8]

[2][3]


 
YuRock ©   (2004-01-10 14:13) [9]

А что такое procedure CommonClickHandlerForSpeedButtons(Sender: TObject); ??


 
YuRock ©   (2004-01-10 14:15) [10]

Ее что, надо каждой кнопке присваивать?


 
jack128 ©   (2004-01-10 14:16) [11]

Общий обработчик OnClick для SpeedButton"ов.


 
jack128 ©   (2004-01-10 14:16) [12]


> Ее что, надо каждой кнопке присваивать?
А у тя что, для каждой кнопки свой обработчик?


 
YuRock ©   (2004-01-10 14:21) [13]

> А у тя что, для каждой кнопки свой обработчик?

У каждой кнопки свой обработчик. Поросто они могут совпадать, как в данном случае. Тем не менее, я не пойму, что, каждому SpeedBtn<1..100>.OnClick надо присваивать CommonClickHandlerForSpeedButtons? По-моему, легче через сообщения (если не использовать SpeedButton).


 
DDA ©   (2004-01-10 14:38) [14]

А как этот Общий обработчик OnClick для SpeedButton"ов сделать
я сто-то не понял?


 
REP ©   (2004-01-10 14:48) [15]

Использовать не конкретную кнопку в обработчике, а
Anatoly Podgoretsky © (10.01.04 13:52) [3]

Написать общий обработчик для первой кнопки, и для каждой кнопки на обработчик указать из выпадающего списка обработчик первой


 
DDA ©   (2004-01-10 14:54) [16]

REP © (10.01.04 14:48) [15]
Всё понял - Как то ты запутанно сказал не сразу и вьехал то

Всем Спасибо.


 
YuRock ©   (2004-01-10 14:58) [17]

Ха-ха! :)) Особенно это удобно, если их 200!

По-моему, легче уж программно поприсваивать... :


...
while i := 0 to Form1.ControlCount - 1 do
if Form1.Controls[i].ClassType = TSpeedButton then
TSpeedButton(Form1.Controls[i]).OnClick := CommonClickHandlerForSpeedButtons;
...


 
REP ©   (2004-01-10 15:03) [18]

Для первого пишешь:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
(Sender as Tspeedbutton).caption:="hhh"
end;

Для всех остальных в Object Inspecrot во вкладке Events находишь свойство OnClick (Наверно должно быть, у меня почему-то есть :)

И тычешь мышкой туда (не двойной клик, а одинарный) Справа появится кнопочка со стрелочкой вниз (нажав появляется выпадающий список) и там выбираешь из всех возможных вариантов:
SpeedButton1Click

УСЁ

Удачи, как говорится



Страницы: 1 вся ветка

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
8-63267
-= Zerg =-
2003-09-13 10:59
2004.01.20
DivX, и все, что с ним связанно


1-63213
Шурик Ш
2004-01-09 17:45
2004.01.20
Ералаш: Excel неадекватно реагирует на команды...


7-63428
Antonn
2003-11-04 12:39
2004.01.20
Перехват клавиш.


11-63045
=Sniper=
2003-05-04 12:32
2004.01.20
Editbox и Combobox


1-63191
wnew
2004-01-09 21:49
2004.01.20
Проблема с Transparent