Форум: "Основная";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
ВнизОпределение какая нажата кнопка Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c