Q&A

  • 투명폼 갱신 하는 문제
[질문하나]

* 사용환경 : 델파이5



델파에서 투명창을 구현하려고 하니까 보통 form1.brush.style:=bsclear를 하더라구요



그래서 저도 했는데 바탕이 한번 변하고는 다른곳에 이동하면 갱신이 되질 않아서 문제가 많습니다.



그리고 누군가가 paint에 invalidate를 쓰라고 하는데 그거 문제가 상당히 많은 무식한 방법

( 리소스 측정기 : 자원사용량 100% )으로 다른 프로그램과의 심각한 문제가 있습니다.



paint함수에 form1.refresh나 form1.repaint도 마찬가지로 엄청나 짓을 하구요



다른 좋은 대책이 없을 까요 paint에 넣으면 너무 자원을 많이 잡아먹어서요



다른 좋은 방법 있으시면 답변을 부탁드립니다...



[질문두울]

투명한 폼의 클라이언트 부분을 마우스로 드래그하는 소스입니다.

procedure TForm1.WMNCHitTest(var Msg : TWMNCHitTest);

begin

inherited;

// Client 영역인데 Caption(Title) 영역으로 속인다

if htClient = Msg.Result then

Msg.Result := htCaption;

end;



여기서의 문제점은 이 소스를 사용하게 되면 폼 위에 존재하는 프로그램이 잘 먹지 않습니다. 예를 들어 URLLink라는 컴포넌트를 사용하여 라벨에 사이트를 연결시키서 실행시키면 링크가 되지 않는 군요. xproject에서 본 걸로는 클라이언트 영역인데 타이틀 영역으로 인식하게 하기 때문에 나머지 프로그램 부분은 먹히지 않는다고 ... 혹시 다른 방법을 아시고 계신 분이 계시면 좀 답변부탁드립니다.

5  COMMENTS