|
우선 답변 감사합니다. 그런데... ㅠ.ㅠ
[Linker Error] Unresolved external '__fastcall TMyPanel::MyButton1Click(System::TObject *)' referenced from D:\BCB\MYPANEL.OBJ
[Linker Error] Unresolved external '__fastcall TMyPanel::MyButton2Click(System::TObject *)' referenced from D:\BCB\MYPANEL.OBJ
이라는 에라가 납니다.
private, protected, public, __published 모든 영역에 한번씩 선언해 주어봤습니다.
물론
void __fastcall MyButton1Click(TObject *Sender);
void __fastcall MyButton1Click(System::TObject *Sender);
방법은 두가지 방법을 다 써보고여...
넘 기초적인 것부터 막히니깐 답답하네여.... 될것같으면서도 안되니...
고수님들 다시한번 부탁드립니다. 답변 부탁드립니다. 그럼 이만 꾸벅(-.-)(_._)(-.-)
김상구.패패루 님이 쓰신 글 :
: 당연히 동작하지 않아야죠.. ^^
: 왜냐하면, 새로 생성된 두개의 버튼의 OnClick 이벤트에 아무것도 걸리지 않았기 때문입니다. 보통 IDE에서 설계할 때는 이벤트부분을 더블클릭해서 자동 생성되는 함수원형에 내용을 채워 넣게 되어있죠. DFM파일을 직접 메모장으로 열어보시면, OnClick에 생성된 함수를 연결시켜주는 부분이 있습니다. 무조건 함수만 선언한다고 되는게 아니라는 얘기죠.
:
: 컴포넌트를 제작할 때는 이러한 DFM파일이 지원되지 않기 때문에 수동으로 이를 연결해 주셔야 합니다. 더 좋은 방법은 버튼 자체를 서브클래싱하는 것인데, 이 경우 이벤트 핸들러를 연결하지 않고 가상함수인 Click함수(protect입니다.)를 오버라이드해서 버튼 클릭에 반응하게 하는 방법입니다.
:
: 언제가 될지 모르지만 기회가 되면 컴포넌트쪽으로 해서 강의같은걸 해 보면 좋을텐데.. ^^
:
: 아무튼, 초기화 해 주는 곳을 이렇게 고쳐주시면 됩니다.
:
: void__fastcall TMyPanel::TMyPanel(TComponent* Owner)
: : TPanel(Owner)
: {
: MyButton1 = new TButton(this);
: MyButton1->Parent = this;
: MyButton2 = new TButton(this);
: MyButton2->Parent = this;
:
: Height = 22;
: Width = 103;
: Caption = "";
:
: MyButton1->Top = 1;
: MyButton1->Left = 0;
: MyButton1->Height = 20;
: MyButton1->Width = 50;
: MyButton1->OnClick = MyButton1Click; // 추가한 부분
:
: MyButton2->Top = 1;
: MyButton2->Left = 53;
: MyButton2->Height = 20;
: MyButton2->Width = 50;
: MyButton2->OnClick = MyButton2Click; // 추가한 부분
:
: }
:
:
: 구리구리 님이 쓰신 글 :
: : (cpp파일)
: : void__fastcall TMyPanel::TMyPanel(TComponent* Owner)
: : : TPanel(Owner)
: : {
: : MyButton1 = new TButton(this);
: : MyButton1->Parent = this;
: : MyButton2 = new TButton(this);
: : MyButton2->Parent = this;
: :
: : Height = 22;
: : Width = 103;
: : Caption = "";
: :
: : MyButton1->Top = 1;
: : MyButton1->Left = 0;
: : MyButton1->Height = 20;
: : MyButton1->Width = 50;
: :
: : MyButton2->Top = 1;
: : MyButton2->Left = 53;
: : MyButton2->Height = 20;
: : MyButton2->Width = 50;
: :
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall MyButton1Click(TObject *Sender)
: : {
: : ShowMessage("Button1 Click!");
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall MyButton2Click(TObject *Sender)
: : {
: : ShowMessage("Button2 Click!");
: : }
: : //---------------------------------------------------------------------------
: :
: : (h화일)
: :
: : class PACKAGE TMyPanel : public TPanel
: : {
: : private:
: : TButton * MyButton1;
: : TButton * MyButton2;
: : void __fastcall MyButton1Click(TObject *Sender);
: : void __fastcall MyButton2Click(TObject *Sender);
: : protected:
: : public:
: : __fastcall TMyPanel(TComponent* Owner);
: : __published:
: : };
: :
: : 컴포넌트소스거덩여... 컴포넌트 컴파일하고 등록하고 사용했는데 버튼을 눌러도 ShowMessage가 안뜨거덩여...
: : 이런거 어떻게 해야하나여?
: : 넘 초보적인 질문인것같지만.. 물어볼 사람이 없어서.. 저혼자 맨땅에 해딩하기가 넘 어렵네여...
: : 패널위에 놓인 버튼을 컨트롤할수 있는 방법좀 가르쳐주셨으면... 올리는것도 얼마전에 여기서 배워지여...
: : 날로 다 먹는다고 생각하지 마세여... 벌써 2주째 맨땅에 해딩입니다.. ㅠ.ㅠ
: :
: : 그럼 새해복많이 받으세여... 꾸벅(-.-)(_._)(-.-)
|