C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[24889] [질문]밑에 분이 델코 사이트를 알려줘서 알았는데..
초보 [carl] 770 읽음    2003-03-25 11:29
제가 델파이는 잘 몰라서..

내용은 TOpenDialog로 나만의 Dialog만들기 입니다.
그런데..구문을 잘 모르겠더라구요..
전 이것을 C로 바꿔서 BCB 콤퍼넌트로 만들어 사용하고 싶습니다.
BCB 함수 DCC32 로 바꿀수도 있지만 잘 안되더라구요..
그리고 제가 원하는 폼으로 버꾸길 원하므로 해석을 해야 되거든여..

//객체선언부///////////////////////////////////////////////////////////////////////////
unit NewFileDialog; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TNewFileDialog = class(TOpenDialog) private function IsFilterStored: Boolean; protected procedure DoClose; override; procedure DoSelectionChange; override; procedure DoShow; override; published property Filter stored IsFilterStored; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function Execute: Boolean; override; end; procedure Register; implementation {$R EXTDLGS.RES} /////////리소스 부분 procedure Register; begin RegisterComponents('US Library', [TNewFileDialog]); end; end. //구현부///////////////////////////////////////////////////////////////////////////

procedure TNewFileDialog.DoClose;
begin
inherited DoClose;
{ Hide any hint windows left behind }
Application.HideHint;

end;

function TNewFileDialog.Execute: Boolean; begin if NewStyleControls and not (ofOldStyleDialog in Options) then Template := 'NEWFILEDLG' else Template := nil; Result := inherited Execute; end; /////////////////////////////////////// 위부분을 바꾸면 NewFileDialog.h class PACKAGE TNewFileDialog : public TOpenDialog { private: bool __fastcall IsFilterStored(void); protected: DYNAMIC void __fastcall DoClose(void); //이부분은 어떻게 구현하는지 DYNAMIC void __fastcall DoSelectionChange(void); DYNAMIC void __fastcall DoShow(void); virtual void __fastcall WndProc(Messages::TMessage &Message); //이부분은 어떻게 구현하는지 __published: TOpenDialog *OpenDialog; __property Filter = {stored=IsFilterStored}; public: __fastcall virtual TNewFileDialog(TComponent* Owner); virtual bool __fastcall Execute(void); }; //NewFileDialog.Cpp 구현부분 __fastcall TNewFileDialog::TNewFileDialog(TComponent* Owner) : TOpenDialog(Owner) { if(!OpenDialog1) OpenDialog1 = new TOpenDialog(this); } namespace Newfiledialog { void __fastcall PACKAGE Register() { TComponentClass classes[1] = {__classid(TNewFileDialog)}; RegisterComponents("Samples", classes, 0); } } bool __fastcall TNewFileDialog::Execute(void) { return TOpenDialog::Execute(); //이렇게 하는지 의심스럽습니다 } //--------------------------------------------------------------------------- void __fastcall TNewFileDialog::DoClose(void) { TOpenDialog::DoClose(); if(OpenDialog1) delete OpenDialog1; } 이렇게 바꾸고 난뒤 콤퍼넌트 등록 했습니다 그리고 새로 만든 컴포넌트로 Execute 를 호출하니 호출되지 않더군여.. (호출하기 위해 버튼을 만들어 누르면 호출되게 했는데,,, 버튼 모양도 뜨지 않더군여.. 그래서 생성자에 강제로 호출시켰는데.. 그부분은 무시하더구여..우째 이런일이..) 제가 어디를 잘못 했는지 잘 모르겠습니다. __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Form1->NewFileDialog1->Execute(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->NewFileDialog1->Execute(); } 위부분이 불러와서 버튼 클릭하면 호출하게 하는 구분입니다. 그리고 델파이의 EXTDLGS.RES 의 리소스를 BCB의 어디다가 어떻게 첨가해야되는지?.. 보통 Project.cpp 에 USERES("Project1.res") 이렇게 사용하는걸로 아는데..이부분은 콤퍼넌트에 붙이는 리소스라 어떻게 해야 되는지 잘 모르겠습니다. DYNAMIC void __fastcall DoShow(void); //이부분은 어떻게 구현하는지 virtual void __fastcall WndProc(Messages::TMessage &Message); //이부분은 어떻게 구현하는지 사이트 알려준거 까지 고마운데.. 너무 많은걸 원하는거 같습니다...지송합니다.. 혹시 아시는 분이나 위부분에서 아시는 부분이라도 있으신분 답변 부탁드립니다..

+ -

관련 글 리스트
24889 [질문]밑에 분이 델코 사이트를 알려줘서 알았는데.. 초보 770 2003/03/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.