프로그래밍/델파이

TShockwaveFlash 크기 조정(Resize)

채윤아빠 2010. 4. 14. 14:07
728x90
반응형
서론
TShockwaveFlash 컴포넌트를 이용하여 델파이 폼 내부에서 동적으로 플래쉬를 표시하고자 할 때, 동적으로 생성된 플래쉬 컴포넌트내에서 전체 플래쉬 영역에 그려지지 않고, 일부 영역에서만 그려지는 문제가 발견되었습니다. 마우스로 플래쉬 컨트롤 영역을 선택해 주면 플래쉬 영역 전체에 맞게 확대되어 올바로 표시가 되었습니다.



또한, 창의 크기를 조정하면 플래쉬 창의 크기도 변경되도록 하였으나, 플래쉬 컨트롤에서 표시되는 swf 에는 영향을 미치지 않는 문제가 있었습니다. 본 글에서는 이러한 플래쉬가 제대로 전체 플래쉬 창 영역에 그려지지 않는 문제점을 해결하는 방법에 대해서 알아보도록 하겠습니다.


해결 방법
아래 Resize TShockwaveFlash control in Delphi 자료를 참고해보면, 다음과 같은 코드를 입력하여 문제 해결이 가능합니다.
  for I := 1 to 5 do
  begin
    FF.Perform(CM_UIDEACTIVATE, 0, 0);
    FF.StopPlay;
    FF.Play;
    FF.Perform(CM_UIACTIVATE, 0, 0);
    Sleep(100);
    Application.ProcessMessages;
  end;
테스트를 해본 결과, FormResize 등에서 위 부분을 호출한 경우, 창 크기 조정에 따라서 플래쉬의 크기도 잘 변경되었습니다. Sleep(100)으로 인하여 창 크기 변경시 부드럽지 못한 모습을 보이는데, 그 부분을 주석처리하고 실행하면 좀더 부드럽게 창 크기의 변경이 가능합니다.

그러나 최초 플래쉬 컨트롤을 생성하는 부분에서 적용할 때는  FF.Perform(CM_UIACTIVATE, 0, 0); 만 호출만으로 플래쉬 컨트롤 전체 부분에 맞게 그려집니다. 여러 환경에서 테스트한 것이 아니라, 완전하진 않을지 모르겠지만, 최초 생성시에는  CM_UIACTIVATE 메시지를 실행해 주는 것으로 간단하게 해결이 됩니다.(단 이 방법은 최초 생성하고 플래쉬 창의 크기를 고정한 이후에만 유효합니다. 실시간 창크기 변경시에는 적용되지 않습니다.)


참고자료