|
이현진 님이 쓰신 글 :
: younkwan 님이 쓰신 글 :
: : Label->Caption.printf("%d", err");
: : 와같이 하면 보여야 하지 안나요?
: : 아니면 별도로 화면에 update하는 함수를 call해야 하는지요?
: :
: : AnsiString msg;
: : msg.printf("%d", err);
: : Label->Caption = msg;
: : 와 같이 해야 되더군요.
: :
: : 어떤 차이점이 있는건가요?
: :
: : 수고하세요.
:
: Label->Caption이 "property" 라서 그렇습니다.
: 도움말에 property 키워드에 대해 보면, 내부 변수에 대한 접근 제어를 한다고 되어 있네요.
:
: 외부에서 객체 내부 변수에 대한 직접 접근을 방지하고, 객체마다 특정 속성(attribute)의 접근 제어를 구현할 수 있도록 하는것 같습니다.
:
: Label->Caption은 내부적으로 Label->GetText() 함수를 통해 caption 문자열 객체의 복사본을 반환하네요.
: __property AnsiString Caption = {read=GetText, write=SetText, stored=IsCaptionStored};
:
: (Label->Caption).printf() 함수는 Label->GetText 함수에 의해 반환된 임시 문자열 객체의 .printf() 함수를 호출
: 하므로, Label 내부의 Caption 데이터는 변경되지 않습니다.
: '=' 연산자를 통해서만 Label->SetText 함수가 호출되어 내부 Caption 데이터를 변경하네요.
:
: 'AnsiString msg' 와 같이 임시 변수를 사용하지 않으려면 아래와 같이 할 수도 있습니다.
:
: Label->Caption=Label->Caption.printf(..);
|