0

OmniThread 라이브러리를 사용하는 프로그램에서 SetParameter에서 TRect를 전달하려면 어떻게해야합니까? 예 :OmniThread : SetParameter에서 TRect를 전달하는 방법?

procedure TestParameters(const ATask: IOmniTask); 
begin 
    // how can I access the TRect here? 
end; 

FTestTask := CreateTask(TestParameters, 'TestParameters') 
       .MonitorWith(OTLMonitor) 
       .SetParameter('FormRect', Self.ClientRect) // does not work 
       .Run; 

SetParameter에서 다른 유형을 사용하는 일반적인 규칙이 있습니까?

+0

anon 메서드 및 변수 캡처 사용 –

+0

@DavidHeffernan 코드 예제를 제공 할 수 있습니까? 작동하는 코드 예제로 응답을 작성하면이를 솔루션으로 받아 들일 것입니다. – user1580348

+0

지금은 안돼. OTL 문서와 예제에는 많은 것들이 있습니다. –

답변

4

TOmniValue.FromRecord<T>TOmniValue.ToRecord<T>을 사용하십시오.

procedure TestParameters(const ATask: IOmniTask); 
var 
    formRect: TRect; 
begin 
    formRect := ATask.Param['FormRect'].ToRecord<TRect>; 
end; 

FTestTask := CreateTask(TestParameters, 'TestParameters') 
       .MonitorWith(OTLMonitor) 
       .SetParameter('FormRect', TOmniValue.FromRecord<TRect>(ClientRect)) 
       .Run; 
관련 문제