unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Sender as TButton).Caption = 'Button1' then
ShowMessage(' Button1 Click');
if (Sender as TButton).Caption = 'Button2' then
ShowMessage(' Button21 Click');
if (Sender as TButton).Caption = 'Button3' then
ShowMessage(' Button31 Click');
if (Sender as TButton).Caption = 'Button4' then
ShowMessage(' Button41 Click');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//ShowMessage(' Button2 Click');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
//ShowMessage(' Button3 Click');
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
//ShowMessage(' Button4 Click');
end;
end.
위는 간단하게 제가 테스트용으로 한것입니다.
각 버튼을 누르면은 해당버튼의 번호가 눌렸다는 메세지창을 뜨게 한 것입니다.
한데 전 이것을요 버튼1에서 다 제어하고 싶은 것입니다.
그래서 버튼1의 이벤트 핸들러안에다가 나머지 버튼들을 연결시켜서요,
if문으로 해당 버튼의 sender가 왔을때 버튼의 이름을 확인하고 해당 메세지창을
띄우려는 것입니다. 근데 위와같이 하면은 버튼1만 작동하고 나머지는 아무소식이
없더군요..... 고수님들의 도움 기다릴께요.....
참고로 님의 코드의 경우 아래와 같이 간단하게 하실수 있습니다. 그리고 님의 경우처럼
Sender객체의 형을 확실히 알 수 있는 경우는 As연산자보다는 아래처럼 직접 형변환해서
사용하시는 것이 좋습니다.
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(' ' + TButton(Sender).Caption + ' Click');
end;
최은규 wrote:
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> Button2: TButton;
> Button3: TButton;
> Button4: TButton;
> procedure Button1Click(Sender: TObject);
> procedure Button2Click(Sender: TObject);
> procedure Button3Click(Sender: TObject);
> procedure Button4Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> if (Sender as TButton).Caption = 'Button1' then
> ShowMessage(' Button1 Click');
> if (Sender as TButton).Caption = 'Button2' then
> ShowMessage(' Button21 Click');
> if (Sender as TButton).Caption = 'Button3' then
> ShowMessage(' Button31 Click');
> if (Sender as TButton).Caption = 'Button4' then
> ShowMessage(' Button41 Click');
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> //ShowMessage(' Button2 Click');
>
> end;
>
> procedure TForm1.Button3Click(Sender: TObject);
> begin
> //ShowMessage(' Button3 Click');
>
> end;
>
> procedure TForm1.Button4Click(Sender: TObject);
> begin
> //ShowMessage(' Button4 Click');
>
> end;
>
> end.
>
> 위는 간단하게 제가 테스트용으로 한것입니다.
> 각 버튼을 누르면은 해당버튼의 번호가 눌렸다는 메세지창을 뜨게 한 것입니다.
>
> 한데 전 이것을요 버튼1에서 다 제어하고 싶은 것입니다.
> 그래서 버튼1의 이벤트 핸들러안에다가 나머지 버튼들을 연결시켜서요,
> if문으로 해당 버튼의 sender가 왔을때 버튼의 이름을 확인하고 해당 메세지창을
> 띄우려는 것입니다. 근데 위와같이 하면은 버튼1만 작동하고 나머지는 아무소식이
> 없더군요..... 고수님들의 도움 기다릴께요.....