2014-07-22 5 views
0

저는 Delphi XE5를 사용하고 있습니다. 내 프로젝트 중 하나에 VCL 스타일을 추가하고 싶지만 문제가 있습니다. 새 vcl 스타일을 설정하면 모든 핸들이 변경됩니다. 예를 들어 이미 항목이있는 경우 listview에 문제가 발생하고 활성 TCP 소켓이 있으면 더 이상 작동하지 않습니다. 나는 응용 프로그램을 다시 시작하고 시작시 스타일을 선택하거나 모든 것을 다시 만들어야하지만 이것은 성가신 일입니다. 내 개발 PC에서 나 지금 내가 어떤 코드를 붙여 넣을 수 없습니다. 하지만 당신도이 문제에 직면했다고 생각하니?런타임시 VCL 스타일 변경

런타임에 vcl syles를 바꾸는 가장 좋은 방법은 누구나 가장 안전하게 말할 수 있습니까? 창 레크리에이션의 실행 결과를 VCL 스타일을 변경

감사

+0

이것이 UI 컨트롤로 데이터를 연결하지 않아야하는 또 다른 이유입니다. 콜렉션을 갖고 가상 모드에서 목록보기를 사용하면 이러한 문제가 발생하지 않습니다. – TLama

+0

하지만 소켓은 어떨까요? – blacksun

+0

소켓에 대한 정보는 목록보기 항목과 관계가 없습니다. 항목에 직접 저장하는 데이터가 있습니다. 'TList '과 같은 콜렉션을 가지고 있으면'TSocketInfo'에 들어있는 내용 (목록보기에 대한 참조 또는 항목별로 연결보기가있는 경우 소켓에 대한 정보를 포함 할 수 있음)에 관계없이이 문제를 해결할 수 있습니다. – TLama

답변

4

. 그것에 대해 할 수있는 일은 없습니다. 또한 창 레크리에이션은 VCL의 현실 중 하나입니다. 다른 이벤트가 VCL 창 레크리에이션으로 연결되는 다른 시간에 프로그램이이를 직면하게 될 수 있습니다. 따라서 VCL 스타일과 직접 관련된 문제는 아닙니다. 오히려 문제는 수명보다 짧은 소켓 통신 창 핸들에 필요하다는 것입니다.

해결 방법은 수명이 제어되는 창 핸들을 사용하는 것입니다. 이러한 창 핸들을 만들려면 AllocateHWnd을 사용하십시오.