Q&A

  • MDI폼 툴바에서 Child폼 이벤트 컨트롤하기... 도와주세요.
안녕하세요...

MDI폼에 있는 툴바에서 Child폼(& 모달 폼) 이벤트를 컨트롤 하려고 합니다.

예를 들어 A, B, C 각각의 Child 폼이 있고 각각 폼들이 활성화 되었을때 툴바 버튼을 클릭하면 해당 Child 폼에서 원하는 이벤트만 처리하려고 합니다.

그러니깐 MDI폼의 툴바를 프로젝트 공용으로 쓰려고 합니다.

툴바에 추가, 수정, 저장, 삭제등의 버튼을 만들어 놓고 A폼이 활성화 되었을때 추가 이벤트가 다르고 B폼이 활성화 되었을때 추가 이벤트가 다를때 그냥 툴바버튼의 추가 버튼만 클릭하면 해당 이벤트가 작동되도록 하고싶은데 잘 안되는 군요...

도움 부탁 드립니다.



제가 구현하려고 했던 방법은 아래와 같습니다.



A Child폼에서 Data_Event라는 procedure를 생성한다.

procedure Data_Event;



procedure TA.Data_Event;

begin

ShowMessage('이것은 A폼');

end;



B Child폼에서도 Data_Event라는 A와 같은 이름의 procedure를 생성한다. 단, 이벤트는 다르다.

procedure Data_Event;



procedure TB.Data_Event;

begin

ShowMessage('이것은 B폼');

end;



각각의 폼이 Create 되었을때 이폼을 공용의 폼으로 치환한다.

var TagForm : Tform; --->프로젝트 공통으로 선언



procedure TA.FormActivate(Sender: TObject);begin

begin

TagForm := TForm.Create(A);

// TagForm := TForm.Create(Nil); or (Application)

// TagForm := Self; or B



end;



procedure TB.FormActivate(Sender: TObject);

begin

TagForm := TForm.Create(B);

// TagForm := TForm.Create(Nil); or (Application)

// TagForm := Self; or B

end;



Mdi 툴바의 Event라는 버튼을 클릭할때 발생하는 이벤트 정의



procedure TMdiForm.ToolButton1Click(Sender: TObject);

begin

TagForm.Data_Event;

end;



이렇게 했더니만 컴파일은 안되고 에러만 생기더군요....(Data_Event procedure가 어떻다구.... @o@a)



비슷한 방법으로 비베에서 구현을 해 봤는데 비베는 잘 되더라구요... 델파이에서는 이런걸 지원을 안하는건지... 제가 방법을 잘 몰라서 그런건지... 고수님들의 도움 부탁드립니다. 이런방식으로 코딩을 하면 폼 디자인도 깔끔해지고 이벤트 처리하기도 쉬울거 같아서... 일일이 Child폼에다가 버튼을 붙이기가 좀 그래서... ^^;



부연설명이 필요하다면 Source 정리해서 다시 올릴께요...

부탁드립니다. (꾸벅!)



0  COMMENTS