Delphi의 도킹 기술 구현:
소프트웨어 기술이 지속적으로 발전함에 따라 소프트웨어 인터페이스는 점점 더 아름다워지고 있으며 작업은 점점 더 편리해지고 있습니다.
시중에 나와 있는 다양한 전문 소프트웨어를 살펴보면 대부분이 폼 도킹 기능을 제공하며, 특히 도구 소프트웨어는 기본적으로 도킹 기능이 다소 있음을 알 수 있습니다.
당연히 Delphi는 도킹도 지원하며 VCL과 긴밀하게 통합되어 있어 대다수의 Delphi 프로그래머에게 큰 이점이 됩니다. 지루한 코딩 시간을 절약해보자. 핵심 프로그램의 개념에 중점을 둡니다.
먼저 VCL의 구조를 검토해 보겠습니다. TWinControl 클래스에는 DockSite 속성(부울)이 있습니다. 이 속성의 기능은 다른 컨트롤을 여기에 도킹할 수 있도록 하는 것입니다. 이 컨트롤을 원하는 경우에는 DragKind 속성이 있습니다. 다른 컨트롤에 도킹할 수 있으려면 DragKind 속성을 dkDock으로 설정하세요. 이렇게 간단합니다. 속성만 설정하면 도킹을 지원하는 프로그램이 완성됩니다.
물론 위의 단계는 가장 기본적인 단계일 뿐입니다. 위의 두 단계를 통해 더 복잡한 기능을 구현하는 코드를 계속 작성할 수 있습니다.
일반적으로 도킹을 지원하는 프로그램은 메인 창의 상하좌우에 도킹이 가능합니다. 즉, 도킹 가능한 컨트롤은 메인 창 측면에 두는 것이 좋습니다. TWinControl에서 상속됨) 일반적으로 독자의 이해를 돕기 위해 TPanel을 선택합니다. 메인 창의 왼쪽이 도킹될 수 있다고 가정할 수 있으므로 메인 창에 Align 속성을 lLeft 패널의 이름은 LeftDockPanel이고 너비는 0이며 DockSite 속성은 True입니다. 물론 LeftDockPanel은 크기를 변경할 수 있어야 하므로 LeftSplitter라는 이름의 TSplitter를 오른쪽에 배치하고 Align 속성은 다음과 같습니다. 알았어. 다음은 도킹 컨트롤입니다. 일반적으로 프로그램 도킹 컨트롤은 양식이므로 양식을 작성하고 이름을 DockableForm으로 지정합니다. DragKind 속성은 dkDock으로 설정되고 DragMode 속성은 dmAutomatic(자동 도킹)으로 설정됩니다.
이제 이 프로그램을 실행할 수 있습니다. 효과적이지 않습니까? 도킹된 형태는 도킹된 후 사라집니다!
아, 깜빡할 뻔했는데, 델파이는 도킹된 폼이 도킹될 때 몇 가지 이벤트를 생성합니다.
1. OnDockOver(발신자: TObject; 소스: TDragDockObject;
X, Y: 정수; 상태: TDragState var 승인: 부울);
2. OnDockDrop(보내는 사람: TObject; 소스: TDragDockObject;
X, Y: 정수);
3. OnGetSiteInfo(발신자: TObject; DockClient: TControl;
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: 부울);
4. OnStartDock(보내는 사람: TObject;
var DragObject: TDragDockObject);
5. OnEndDock(Sender, Target: TObject; X, Y: 정수);
6. OnUnDock(보내는 사람: TObject; 클라이언트: TControl;
NewTarget: TWinControl; var 허용: 부울);
와, 너무 많아서 걱정하지 마세요. 자세히 설명하겠습니다.
먼저 첫 번째 이벤트부터 살펴보겠습니다.
OnDockOver는 도킹된 컨트롤(DockableForm)이 도킹된 컨트롤(LeftDockPanel)을 전달할 때 트리거됩니다. 소스에는 도킹 및 드래그 작업에 대한 정보가 포함되어 있습니다. 또 다른 중요한 속성은 도킹 위치인 DockRect입니다. 상태는 dsDragEnter, dsDragLeave입니다. dsDragMove는 각각 드래그, 드래그, 드래그하여 이동을 의미하며, Accept는 도킹에 동의할지 여부를 의미합니다. OnDockOver 이벤트의 주요 기능은 도킹된 양식의 미리 보기 위치를 제어하는 것입니다. 다음 코드를 추가해 보겠습니다.