Нужно сделать калькулятор и препод требует сделать, чтобы все кнопки на онклик запускали одну прцедуру... И вот у меня проблема как узнать на какую именно кнопку нажал пользователь??
в дельфи такое пишется :
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := (Sender as TButton).Name;
end;
Здравствуйте 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;
}
ну и так далее в том же духе...
Здравствуйте 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:
....
}
Вот примерно так.
В Делфи делается так — как уже писали выше, задаешь св-ву Tag каждой кнопки оригинальное значение и дергаешь его в процедуре вот таким методом:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Tag кнопки = ' + IntToStr(TButton(Sender).Tag);
end;