저는 Delphi의 '일반'도킹 (DockSite = True 및 UseDockManager = True)을 사용하고 있습니다. 이제 몇 가지 DockSite 컨트롤과 몇 가지 도킹 가능한 폼이 있습니다. 그러나 각 도킹 가능 양식이 각 독점 사이트에 들어갈 예정은 아닙니다.컨트롤이 도킹 될 위치를 어떻게 알 수 있습니까? 도킹을 방지하려면 어떻게해야합니까?
양식에 어떤 종류의 컨트롤이 부착되어 있는지 알고 있습니다. OTOH는 어떤 양식을 받아 들일지 알지 못합니다.
지금 내 문제는 드래그/드롭 (또는 드래그/고정) 작업을 취소 할 수있는 몇 가지 이벤트 인 DragOver, StartDock 등입니다. 그러나 이러한 이벤트는 모두 '수신'측에서 발생합니다. 떨어지는 컨트롤의 측면에; 그것이 내가 갖고 싶어하는 곳입니다. 그래서 도킹 된 폼이 특정 컨트롤에 도킹되는 것을 거부 할 수 있습니다.
그런 사건이 있습니까, 나는 무엇인가 내려다보고 있습니까? 아니면 다른 방식으로이 문제를 해결해야합니까?
제대로 설정하면 양쪽에서 도크를 취소해도 문제가 없습니다. 도킹을 거부하는 목적지가 귀하에게 적합하지 않은 이유가 있습니까? –
양식을 가능한 한 '플러그 형'으로 만들고 모든 필요한 로직 (비즈니스 클래스에 대한 참조)을 포함하고 싶습니다. 하지만 대상 컨트롤에 포함될 양식에 대한 지식이 없도록하고 싶습니다. 앞으로는 새로운 (클래스의) 도킹 가능한 양식을 추가해야 할 수도 있습니다. – Martijn
도킹 가능한 양식에 기본 클래스를 사용할 수 없습니까? 그러면 컨트롤의 공간을 크게 줄일 수 있습니다. –