답변 감사합니다.
Components[i]->ClassNameIs("TLabel") 등 필요한
control만 체크하고 있습니다...
>Componet에 "Caption"이라는 이름의 프로퍼티가 있는지 없는지 체크
->체크하는 방법을 찾아봐야 되겠네요...
장성호 님이 쓰신 글 :
: Form의 Components 배열에서 루프돌면서 Caption변경하는것은
: 괜찮은 방법중 하나입니다.
:
: 하지만 몇가지 고려할 사항이 있습니다.
:
:
[ 고려사항 ]
:
:
1. Component라고 모두 다 Caption이라는 Property가 있는것은 아닙니다.
:
: VCL에서는 Socket / Comport 등과 같이 화면에 보이지 않는것도 모두 TComponent를 상속받아 만들어 지니까요~!
:
: Caption프로퍼티가 있는 놈은 TControl을 상속받은 모든 Control 입니다.
:
: 단 가시성이 protected로 되어있어서, 상속받은 자식 class에서 public으로 open한 control만 보인는 것이죠
:
: 그러므로..
: Components[i] 배열에 들어있는 놈이 TContol을 상속받았는지 받지 않았는지 체크를 해야합니다.
:
:
:
:
2. Caption과 Text는 같은 Property 입니다.
:
: TEdit나 TMemo 등과 같은 Component에는 Caption이라는 프로퍼티가 없습니다.
: 하지만 TEdit를 TControl로 cast해서 Caption을 변경하면 어떻게 될까요?
:
:
: class TOpenControl : public TControl
: {
: public:
: __property Caption;
: };
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: ((TOpenControl *)Edit1)->Caption="Edit의 Text가 바뀜";
:
: ((TOpenControl *)Memo1)->Caption="Memo의 Text가 바뀜";
: }
: //---------------------------------------------------------------------------
:
:
:
: 위와같이 Edit1의 Caption을 변경하면 Edit1의 Text가 변경되어 버립니다.
:
: 즉 TEdit나 TMemo같은 Control에는 Text 와 Caption은 이름만 다르지 같은 property입니다.
:
: 이런 Control인 경우는 예외 처리해야 겠죠??
:
:
:
3.TControl을 상속받지 않았는데 Caption 프로퍼티가 있는 경우
:
: 기본적으로 Caption프로퍼티는 TControl을 상속받은 Control에 모두 있는데요
:
: TControl을 상속받지 않은 Component에도 Caption이 있는 경우가 있습니다.
:
: 대표적인 것이 TMenuItem 입니다.
:
: 이런 경우도 고려해야겠죠~!
:
:
:
: ========================================================================
:
: RTTI를 이용해서
:
: Componet에 "Caption"이라는 이름의 프로퍼티가 있는지 없는지 체크하고 변경하는 방법이 있습니다.
: 이런 방법을 쓰는게 좀더 범용적이겠죠
: 문론 TEdit같은 것은 예외 처리해야할 것이구요
:
: 그럼..
:
:
:
:
: happymin 님이 쓰신 글 :
: : 안녕하세요...
: :
: : Caption을 사용자에 따라 변경해 주려고 하는데
: : 보통 어떤방식을 사용하시는지 궁금해서 여쭈어봅니다.
: :
: : 저는 Code.txt파일에 001,어쩌구저쩌구...
: : 이런식으로 저장하고
: : contorl의 Tag에 해당 번호를 넣고
: : 폼 Show 하기전이나 할때
: : Form의ComponentCount/Components[i]를 이용해
: : Caption을 넣고 있습니다.
: :
: : 감사합니다...(--)(__)