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
[46163] Re:Re:Re:감사합니다..한가지만 더 질문을..
장성호 [nasilso] 1322 읽음    2006-08-14 15:19
저도 정식으로 프로그램을 공부하지 않았기 때문에 좋은 답변을 드리기 힘들것 같습니다.

개인적인 소견을 조금 말씀드리면

1. OOP를 공부해 보십시요

그동안 VB만 하셨으면 VB는 OOP에  매우 지원이 빈약한 언어인걸로 알고 있습니다.
OOP(객체지향 프로그램 ) 언어로는 C#도 있고 Java도 있고 C++도 있습니다만
C++Builder를 쓰시려면 C++을 공부하시는게 좋을것 같네요

oop를 공부할때 class의 상속이나 캡슐화 등은 C#이나 C++이나  대부분  개념이  거의 똑같습니다.

전에도 말씀드렸지만 BCB에서 윈도우 컨트롤은 모두 TWinControl을 상속받습니다
또한 TWinControl은 TControl을 상속 받구요

다시 말해 TWinControl만 익히면 
Builder에서 쓰이는 모든 윈도우 Control의  기본골격은   모두 익힌 것이 됩니다.

그리고 또 TComboBox의 Items와  TListBox의 Items와   TMemo의 Lines를 보면 모두 TStrings * 입니다.
다시말해 TStrings * 만 대충 익히면 그걸 사용하는 Control의 관련기능을 거의다 익힌것이 되겠지요

TLabel의 Caption이나 모든 Control의 Hint , TEdit의 Text   모두 AnsiString 타입 입니다

즐겨 사용되는 class만 익히면 대부분의 control이 그것을 조합해서 만든것이니
사용하고자 하는 control을 새롭게 익히는것도 쉬울것입니다.

그리고 OOP를 잘알고 있으면  상속구조만을 보고 컨트롤의 역활과 기능을 대충 파악할 수 있겠죠
나아가 그 기능들을 120%활용할 수 있을것이구요


2. Windows Program을  공부하세요
VB나 VC++이나 BCB나 모두 사용하는  WindowControl은  말그대로 모두 윈도우 입니다.
다시말해 Button도 윈도우고 Form도 윈도우고 EditBox도 윈도우입니다.

순수 API로 만드면 모두다 CreateWindow라는 함수를 사용해서 생성하는 것입니다.

그러니 OS에서 GetMessage로 메세지를 가져와서 DispathchMessage하는것은
모든 윈도우 프로그램이 똑 같습니다.

이 Message방식으로 Window Control이 동작되는것을 좀 이해하신다면
Control의 기능에 대한 이해와 활용의 폭이  훨씬 넓어질것입니다.

예를들어 BCB의 TButton에 기본적으로 MouseWheel핸들러는 없습니다.
그러나 MouseWheel이 을 돌릴때 어떤 동작을 해주고 싶다면...
그런  이벤트핸들러가 있는 Button Control을 찾을것이 아니라
TButton의 WinProc를 서브클래싱해서 내가 원하는 메세지에 원하는 동작을 하도록 코딩해주면 되는것입니다.


추가1
    BCB 컨트롤 파렛트에 보시면 Standard 탭과 Win32탭이 있을것입니다.
    여기에 있는 Control들은 VB에서도 비슷한 모양을 보셨을 것입니다.
    다시 말해 윈도우에서 ,  Win32  os 에서는 기본적으로 지원하는 Control들을
    Builder에 맞게 새롭게 만들어 놓은것일 뿐입니다.
   
추가2
   제가 처음에 Builder를 시작할때 (초보였음)
   VCL에 대해 이해하려고  전체 class 계통도를
   사무실 내 자리 정면 벽에 크게 붙여놓고 보면서  프로그램했습니다.
   (class 계통도를 구하는 방법은 정품을 구입하는 방법외에는 모름)
   (전체 Class계통도를 보는것이 사람에 따라 다른겠지만 제게는 도움이 되었습니다.)



흑태자 님이 쓰신 글 :
: 고맙습니다. 이번에도 같은 분이 도움을 주시네요 ^^
: 그런데 이런 질문을 하면서도 참 답답한건.. 과연 언제까지 이런 질문/답변 식으로 공부를 해야하는가..라는 생각이 듭니다.
: 지난번에도 제가 질문을 드린적이 있으니 제가 의도하는게 어떤건지 아실거라는 생각이 듭니다.
:
: 어떤 컴포넌트에 대해서 Help를 살펴보면 분명 많은 도움말들이 나옵니다. 어떤 속성을 가지고 있고 그건 어떤 클래스에서 상속받았는지 등등..
: 그런데 아래쪽으로 상속을 줘서(??) 사용하는 방법에 대해선 도움만 가지고만은 알기가 힘들더군요
: 예를 들어서.. TEdit 와 TMemo만 하더래도 둘다 text라는 속성을 가지고 있지만 찾아가는 방법은 달랐죠.
:
: Edit1와 Memo1이라는 컴포넌트들을 폼에 띄워놓고 Text라는 속성을 보려면 Edit1은 단순히 Edit1->Text 라고만 해줘도
: 그 값을 얻을수가 있었고, Object Inspector에서도 속성으로 찾을수가 있었는데..
: Memo1은 Object Inspector에서는 Lines 라는 속성으로 존재하고 소스에서는 Memo1->Lines->Text 이렇게 Lines이라는 클래스를 거쳐야만 했습니다.
: 그건 지난번에 장성호님이 알려주신대로 한거였구요..
:
: 그럼 다시 질문을 드리겠습니다. 장성호님은 어떤 방식으로 공부하셨는지요? 얘기하신 AnsiString 에 대한 그 수많은 기능들을 이런데서 질문으로.. 수많은 시행착오만으로 외워서 사용한다는 생각은 들지를 않는데요
: 포럼에 오시는 분들은 어떤 방식으로 컴포넌트에 대해서 접근을 하시는지 알고 싶습니다.
:
: 저는 단순히 책 한권 들고 많은 예제들을 접해서 사용법을 익혔습니다. 예전에 비주얼 베이직을 할때는..
: 베이직만 해도 그것만으로 충분했지만 빌더는 그게 아니라는 생각이 들더군요
:
: 제가 알고 싶은건 이렇게 단순한 질문으로.. 물고기 한마리 던져주는 것을 원하는 것이 아니고 그 물고기를 찾아내는법, 잡는법, 요리하는 법을 알고 싶은 겁니다.
: 그 방법을 어떻게 익히셨는지 궁금하네요 ^^
:
: 장성호 님이 쓰신 글 :
: : [답변 1 ] TComboBox * 와 TListBox * 에 대하여
: :
: : TComboBox * 와 TListBox *는 말씀하신대로 비슷합니다.
: :
: : 둘다  리스트에 추가는 Items 에다가 Add하는데
: : 둘다 Items 는 TStrings*  타입이네요
: :
: : 1. ItemIndex는  현재 선택된 Item의 순번을 나타내는데
: :     0번부터 시작하고 ListBox나 ComboBox나 똑같습니다.
: :     만약 ItemIndex가 0보다 작으면 아무것도 선택된것이 없는겁니다.
: :
: : 2. ListBox가 ComboBox와 결정적으로 다른 기능이 한가지 있다면
: :   MultiSelected되는것입니다.
: :
: :    TListBox의 MultiSelect=true로 해주고
: :    Shift 나 Ctrl키를 이용해서 윈도우 탐색기에서 File선택하듯이 사용하면 됩니다.
: :   
: :    - 선택된 갯수는 ListBox1->SelCount 이구요
: :    - 어떤것이 선택되었는지 확인하려면 Selected를 아래처럼 배열로 접근해 확인해 보시면 됩니다.
: :
: :   int iSelCount=0;
: :   String str="";
: :   for(int i=0;i< ListBox1->Count;i++)
: :     {
: :         if(ListBox1->Selected[i])
: :         {
: :             iSelCount++;
: :             str+=ListBox1->Items->Strings[i];
: :         }
: :     }
: :
: : 3. 아이템을 추가할때 스트링을 추가하는 방법말고
: :     AddObject(AnsiStrings *s , TObject *obj) 형식으로 추가하느 방법이 있습니다.
: :     프로젝트에 따라 이기능도 유용하게 쓰입니다.
: :
: :
: :
: : [답변 2] String을 숫자로 변환하는 방법에 대하여...
: :
: : 1. 일전에 질문하였을때  AnsiString에 대해 잘 알면 Builder로 프로그램하는데 매우 유익하다는 얘기를 했었는데요
: :    AnsiString에 왠만한 변환 기능이 다 있습니다.
: :    그만큼 무겁겠지만 그만큼 편리합니다.
: :
: :     String str="1234";
: :     int kK=str.ToInt();
: :     double fK=str.ToDouble();
: :
: : 2. 기타 기본적으로 제공하는 변환함수들이 여러가지 있습니다.
: :
: :    간단한것으로
: :    String str="1234";
: :    int iK=  StrToInt(str); //String을  int형으로
: :    float fK=StrToFloat(str);  //String을  double형으로...
: :  
: :    반대로 변환은
: :    int  k=123;
: :    String str;
: :
: :    str=IntToStr(k);                 //int형 숫자를 String형으로
: :    str=FloatToStr((float)k);    //float형 숫자를 String으로 ..
: :   
: :    숫자를 Hex값으로 변환은?
: :    IntToHex(...)                  //
: :
: :    이밖에도 엄청 많습니다.
: :  
: :     F1키 눌러서 도움말 파일 나오면
: :     IntTo**  로 검색해보거나
: :     StrTo** 로 검색해보세요
: :
: : 그럼
: :
: :  
: :
: :   
: : 흑태자 님이 쓰신 글 :
: : : 빌더 시작한지 며칠 안됐는데 컴포넌트 사용법 때문에 참 난감하네요.
: : : 책을 봐도 일부만 나와서 막상 필요한 기능을 찾아야 할때 어떻게 할지도 모르겠고..
: : : 각설하고
: : :
: : : 콤보박스와 리스트는 어찌 보면 비슷한 컴포넌트 같은데 또 다르네요
: : : 리스트에는 있는 Index 라는 속성이 콤보박스에선 어떻게 되나요?
: : :
: : : 그리고.. 콤보박스나 리스트에 입력되어 있는 item들은 AnsiString 인가로 되어 있던데
: : : 이걸 int 같은 형태로 형변환을 하려고 하는데 단순히 (int)로 붙여서는 에러가 나더군요
: : : 직접 숫자화 시키는 방법 없나요?

+ -

관련 글 리스트
46155 콤보박스, 리스트 사용법하고.. 형 변환에 대한 질문인데요.. 흑태자 947 2006/08/14
46159     Re:콤보박스, 리스트 사용법하고.. 형 변환에 대한 질문인데요.. 장성호 2078 2006/08/14
46160         Re:Re:감사합니다..한가지만 더 질문을.. 흑태자 1097 2006/08/14
46164             Re:Re:Re:감사합니다..한가지만 더 질문을.. 미루 1055 2006/08/14
46163             Re:Re:Re:감사합니다..한가지만 더 질문을.. 장성호 1322 2006/08/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.