|
방태윤 님이 쓰신 글 :
: 말씀 감사합니다.
:
: 말씀하신것중에
:
: : void __fastcall B_func(TObject *Sender) 일반 함수를 클래스 멤버함수로 바꾸어 주시면
:
: 이건 A함수를 말씀하시는거지요? A함수는 잘 됩니다.
:
: B 함수를 이용하려면 어떤 방법은 있을까요???.
:
: 감사합니다.끝.
:
:
: 한꼬맹이 님이 쓰신 글 :
: : 방태윤 님이 쓰신 글 :
: : : 동적으로 버튼을 생성하는 방법을 알고 싶습니다.
: : :
: : : 새로운 폼 Form1 을 생성했다고 하고
: : :
: : : TForm1 *Form1;
: : :
: : : __fastcall TForm1::TForm1(TComponent* Owner)
: : : : TForm(Owner)
: : : {
: : : }
: : :
: : : void make_button();
: : :
: : : void __fastcall TForm1::Button1Click(TObject *Sender)
: : : {
: : : make_button();
: : : }
: : :
: : :
: : : Tbutton *a;
: : :
: : : void __fastcall TForm1::A_func(TObject *Sender)
: : : {
: : : ShowMessage("A")
: : : }
: : : void __fastcall B_func(TObject *Sender)
: : : {
: : : ShowMessage("B")
: : : }
: : :
: : : void make_button()
: : : {
: : : a=new TButton(Form1);
: : :
: : : a->Top=10;
: : : a->Left=10;
: : : a->Width=100;
: : : a->Height=20;
: : : a->Visible=true;
: : : a->Parent=Form1;
: : : a->Caption="test";
: : : **********************
: : : a->OnClick=A_func;
: : : or
: : : a->OnClick=B_func;
: : :
: : : 음 여기서 부터 막히는군요..
: : : A_func 는 되는데 B_func 은 안되는군요.
: : : 근데 제가 사용하고자 하는 건
: : : a->OnClick=B_func; 인데 컴파일 에러입니다.
: : : 영원히 안되는게 당연한건지 잘 모르지만
: : : B 형태로 사용할려면 어떻게 해야 되는지
: : : 고수님들의 한수 지도 부탁합니다.
: : :
: : : }
: : :
: : : 감사합니다...끝.
: : :
: :
: : 안녕하십니까?
: :
: : 한꼬맹이 입니다.
: :
: : 1. a->OnClick=A_func;
: : 2. a->OnClick=B_func;
: :
: : 1번은 되는데.. 2번이 왜 안돼냐하면 버턴의 OnClick이벤트는 TNotifyEvent형으로 선언되어
: :
: : 있기 때문입니다. 즉 4바이트짜리 두개 짜리 포인트가 대입되어야 제대로 돌아갑니다.
: :
: : 빌더에서 일반함수의 주소는 4바이트짜리 주소하나로 표현되지만 클래스내의 멤버함수는
: :
: : 4바이트짜리 두개의 주소로 표현됩니다. 그래서 2.번의 경우 제대로 돌아가지 않는 겁니다.
: :
: : void __fastcall B_func(TObject *Sender) 일반 함수를 클래스 멤버함수로 바꾸어 주시면
: :
: : 아무문제 없이 잘 돌 아 갈겁니다.
: :
: : 그럼 참고하세요
: :
: :
안녕하십니까?
한꼬맹이 입니다.
당연히 B함수가 안된다고 해서 B함수를 고치라구 했는데..
왠 동문서답을 하시나요? 쩝 ~^_^;;
void __fastcall B_func(TObject *Sender) 이놈을
====> void __fastcall TForm1::B_func(TObject *Sender) 이렇게 고치시면 되는데....
그기다가 TForm1클래스에다가 함수 선언도 같이 해주시구요....
또 동문서답 하지 않으시기를....
|