Как узнать какая кнопка нажата???
От: Cyber_Girl  
Дата: 25.09.02 18:19
Оценка:
Нужно сделать калькулятор и препод требует сделать, чтобы все кнопки на онклик запускали одну прцедуру... И вот у меня проблема как узнать на какую именно кнопку нажал пользователь??
в дельфи такое пишется :

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := (Sender as TButton).Name;
end;
Re: Как узнать какая кнопка нажата???
От: FireWorm Беларусь  
Дата: 26.09.02 05:08
Оценка:
Здравствуйте Cyber_Girl, Вы писали:

CG>в дельфи такое пишется :


CG>procedure TForm1.Button1Click(Sender: TObject);

CG>begin
CG> Label1.Caption := (Sender as TButton).Name;
CG>end;
а в Билдере все также не очень сложно, вышеприведенный фрагмент можно переписать в следующем виде:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Label1->Caption = static_cast<TButton*>(Sender)->Caption;
}

ну и так далее в том же духе...
Re: Как узнать какая кнопка нажата???
От: Pavel XP  
Дата: 26.09.02 06:03
Оценка:
Здравствуйте Cyber_Girl, Вы писали:

CG>Нужно сделать калькулятор и препод требует сделать, чтобы все кнопки на онклик запускали одну прцедуру... И вот у меня проблема как узнать на какую именно кнопку нажал пользователь??

CG>в дельфи такое пишется :

CG>procedure TForm1.Button1Click(Sender: TObject);

CG>begin
CG> Label1.Caption := (Sender as TButton).Name;
CG>end;


Значит так, для каждой кнопки в поле Tag прописываешь целые числа от 0 до ...

А потом в обработчике пишешь


TButton *b = static_cast<TButton *>(Sender);
 switch(b->Tag)
{
    case 0:
       ...
    case 1:
       ....
}



Вот примерно так.
Re: Как узнать какая кнопка нажата???
От: cjBN http://bitnet.vlz.ru
Дата: 28.09.02 13:31
Оценка:
Здравствуйте Cyber_Girl, Вы писали:

CG>Нужно сделать калькулятор и препод требует сделать, чтобы все кнопки на онклик запускали одну прцедуру... И вот у меня проблема как узнать на какую именно кнопку нажал пользователь??

CG>в дельфи такое пишется :

CG>procedure TForm1.Button1Click(Sender: TObject);

CG>begin
CG> Label1.Caption := (Sender as TButton).Name;
CG>end;

ну я бы сделал так:
допустим есть кнопки от BtnNum0,BtnNum1...BtnBum9 делаем:
BtnNum0.OnClick=Button1Click;
BtnNum1.OnClick=Button1Click;
...
BtnNum9.OnClick=Button1Click;

а в Button1Click
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Sender as TButton).Name='BtnNum0' then
begin
...
end;
if (Sender as TButton).Name='BtnNum1' then
begin
...
end;
//ну тут конечно можно по разному извращаться, через case и т.п.
end;
icq:#85849913
Re: Как узнать какая кнопка нажата???
От: Жужков Жан Россия http://www.baklajan.ru
Дата: 02.10.02 10:11
Оценка:
В Делфи делается так — как уже писали выше, задаешь св-ву Tag каждой кнопки оригинальное значение и дергаешь его в процедуре вот таким методом:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := 'Tag кнопки = ' + IntToStr(TButton(Sender).Tag);
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.