2014-10-09 5 views
1

합니다 (customlistbox 예에서) 그것을 가지고 내가 할 수있는 수정을 보았을 때, 나는 각 객체에 대해 visible 또는 not 속성을 얻을 수있는 for 루프를 만들고 싶다고 결정했다. 문제는 내가 다음 라인이 실제로 의미하는 것을 이해할 수 없다는 것이다.이 델파이 코드 란 무엇을 의미합니까? 내가 <p><strong>오브젝트 파스칼> FireMonkey 바탕 화면> CustomListBox</strong></p> <p>재생하려는</p>에있는 사용자 지정 목록 상자의 예를 가로 질러 왔을 때 내가 RAD 스튜디오 XE6와 함께 제공되는 모든 예제를 찾고 있었어요

107| Item.StylesData['visible.OnChange'] := TValue.From<TNotifyEvent>(DoVisibleChange); // set OnChange value 

그것은 onChange 이벤트를 추가하지만 정확히 어떻게됩니까? TNotifyEvent는 컴파일러에게 새로운 이벤트를 생성하도록 지시하는 것입니다.

감사합니다.

+0

두 번째 예제를 가져온 이벤트는 무엇입니까? –

+5

두 가지 질문을했습니다. 내가 대답 할 수는 있지만 다른 것은 대답 할 수 없다고 가정하십시오. 어떻게해야합니까? –

+0

두 번째 코드 스 니펫이 이벤트 내부에있는 것처럼 보입니다. 첫 번째 스 니펫에 설정된 onchange 이벤트 본문에있을 수 있습니까? – overactor

답변

1

FireMonkey 스타일 프레임 워크는 유연하고 확장 가능하도록 설계되었습니다. 이 컨트롤은 스타일이 지정된 컨트롤 계층 루트 인 TStyledControl에 도입되었습니다. 이 article은 디자인 철학에 대한 간략한 소개와 설명을 제공합니다.

스타일링 프레임 워크는 다양한 컨트롤 유형을 지원하도록 설계되었으므로 유연성과 확장성에 대한 분명한 요구가 있습니다. 그래서 당신은 다음과 같은 코드를 참조하십시오

StylesData['visible.OnChange'] := ... 

StylesData 속성은 문자열 색인, array property입니다. 다음과 같이 선언한다 :

property StylesData[const Index: string]: TValue; 

TValue 유형은 RTL 전반에 걸쳐 사용되는 현대적인 변형 유형이다. 따라서 StylesData에 변형 유형 인 TValue을 사용하여 모든 종류의 객체를 보유 할 수있는 유연성을 확보 할 수 있습니다. 그리고 우리는 명명 된 인덱스를 허용하여 확장 성을 갖습니다.

따라서 사용자가 참조하는 컨트롤을 사용하면 표시 여부가 변경 될 때 해당 동작을 사용자 지정할 수 있습니다. visible.OnChange이라는 스타일을 확인하여 유형이 TNotifyEvent 일 것으로 예상됩니다. TNotifyEvent을 직접 제공 할 수 없으므로 TValue에 포장해야합니다. 따라서 TValue<TNotifyEvent>.From()으로 전화하십시오.