Implementierung der Docking-Technologie in Delphi:
Mit der kontinuierlichen Weiterentwicklung der Softwaretechnologie wird die Softwareoberfläche immer schöner und die Bedienung immer komfortabler.
Wenn wir uns die verschiedenen professionellen Softwareprogramme auf dem Markt ansehen, werden wir feststellen, dass die meisten von ihnen die Form-Docking-Funktion bieten, insbesondere Tool-Software, die grundsätzlich über mehr oder weniger Docking-Funktionen verfügt.
Natürlich unterstützt Delphi auch Docking und ist eng mit VCL integriert, was für die meisten Delphi-Programmierer ein großer Segen ist. Sparen wir uns die langweilige Programmierzeit. Konzentrieren Sie sich auf die Konzeption des Kernprogramms.
Sehen wir uns zunächst die Struktur von VCL an. Die Funktion „DockSite“ besteht darin, das Andocken anderer Steuerelemente zu ermöglichen. In der TControl-Klasse gibt es eine Eigenschaft Um an andere Steuerelemente andocken zu können, legen Sie die DragKind-Eigenschaft auf dkDock fest. So einfach ist das: Legen Sie einfach die Eigenschaften fest und fertig ist ein Programm, das das Andocken unterstützt.
Natürlich sind dies nur die grundlegendsten Schritte. Mit den beiden oben genannten Schritten können wir weiterhin Code schreiben, um komplexere Funktionen zu implementieren.
Im Allgemeinen können Programme, die das Andocken unterstützen, oben, unten, links und rechts im Hauptfenster angedockt werden. Das heißt, es ist besser, Steuerelemente, die angedockt werden können, an der Seite des Hauptfensters zu platzieren (sofern vorhanden). Sie werden von TWinControl geerbt. Im Allgemeinen wählen wir TPanel. Um das Verständnis der Leser zu erleichtern, können wir davon ausgehen, dass die linke Seite des Hauptfensters angedockt werden kann. Fügen Sie daher dem Hauptfenster ein Align-Attribut mit a hinzu Das Panel von lLeft heißt LeftDockPanel, die Breite ist 0 und das DockSite-Attribut ist True. Natürlich sollte unser LeftDockPanel in der Lage sein, die Größe zu ändern, also platzieren Sie auf der rechten Seite einen TSplitter mit dem Namen LeftSplitter und den Align Attribut ist alLeft. Als nächstes kommt das Docking-Steuerelement. Im Allgemeinen sind Programm-Docking-Steuerelemente Formulare, daher erstellen wir auch ein Formular und nennen es DockableForm. Die DragKind-Eigenschaft ist auf dkDock und die DragMode-Eigenschaft auf dmAutomatic (automatisches Andocken) festgelegt.
Jetzt können wir dieses Programm ausführen, was? Nicht wirksam? Das angedockte Formular verschwindet nach dem Andocken!
Oh, ich hätte es fast vergessen, Delphi generiert einige Ereignisse, wenn das angedockte Formular angedockt ist, das sind sie
1. OnDockOver(Sender: TObject; Quelle: TDragDockObject;
X, Y: Integer; State: TDragState; var Accept: Boolean);
2. OnDockDrop(Sender: TObject; Quelle: TDragDockObject;
X, Y: Ganzzahl);
3. OnGetSiteInfo(Sender: TObject; DockClient: TControl;
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
4. OnStartDock(Sender: TObject;
var DragObject: TDragDockObject);
5. OnEndDock(Sender, Target: TObject; X, Y: Integer);
6. OnUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
Wow, so viele, keine Sorge, lass es mich im Detail erklären:
Werfen wir zunächst einen Blick auf die erste Veranstaltung
OnDockOver wird ausgelöst, wenn das angedockte Steuerelement (DockableForm) das angedockte Steuerelement (LeftDockPanel) übergibt. Die Quelle enthält Informationen zu Andock- und Ziehvorgängen. Ein weiteres wichtiges Attribut ist DockRect, das die Andockpositionen der Maus darstellt. dsDragLeave bzw. dsDragMove bedeutet Hineinziehen, Wegziehen bzw. Ziehen zum Verschieben; Akzeptieren bedeutet, ob dem Andocken zugestimmt werden soll. Die Hauptfunktion des OnDockOver-Ereignisses besteht darin, die Vorschauposition des angedockten Formulars zu steuern. Fügen wir den folgenden Code hinzu: