Implementierung der Docking-Funktion in Delphi7 Wenn wir Delphi7 zum Entwickeln von Anwendungssystemen verwenden, müssen wir häufig die Funktion zum Andocken von Unterfenstern am Hauptfenster verwenden. Wenn Sie mit diesem Teil nicht vertraut sind, gehen Sie normalerweise zu CSDN und anderen Websites Finden Sie verschiedene verwandte Steuerelemente oder beziehen Sie sich auf die mit Delphi gelieferte Docking-Routine. Ich werde Ihnen eine einfache Methode vorstellen, die verwendet werden kann. 1. Fügen Sie vier Panels und vier Splitter zum Hauptfenster hinzu und legen Sie die Ausrichtung auf die obere, untere, linke und rechte Seite fest.
2. Setzen Sie das DockSite-Attribut der vier Panels auf True.
3. Fügen Sie die Ereignisse „OnDockDrop“, „OnDockOver“ und „OnUnDock“ wie folgt zu den linken und rechten Panels hinzu:
PROcedure TfrmMain.pnlLeftUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
beginnen
if (Sender as TPanel).VisibleDockClientCount = 1 then
beginnen
(Absender als TPanel).Width := 1;
Ende ;
end ; procedure TfrmMain.pnlLeftDockDrop(Sender: TObject;
Quelle: TDragDockObject; X, Y: Integer);
beginnen
(Absender als TPanel).Width := max(source.Control.UndockWidth,(Absender als TPanel).Width);
end ; procedure TfrmMain.pnlLeftDockOver(Sender: TObject;
Quelle: TDragDockObject; X, Y: Integer;
varAccept: Boolean);
beginnen
wenn State = dsDragEnter dann
beginnen
(Sender as TPanel).Width := max(Source.Control.UndockWidth, (Sender as TPanel).Width);
Ende
anders
beginnen
wenn State = dsDragLeave dann
beginnen
(Absender als TPanel).Width := 1;
Ende;
Ende;
Ende;
Das linke und das rechte Panel reagieren auf Ereigniscodes mit demselben Code. 4. Fügen Sie die Ereignisse OnDockDrop, OnDockOver und OnUnDock wie folgt zum oberen und unteren Bereich hinzu:
procedure TfrmMain.pnlBottomUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
beginnen
if (Sender as TPanel).DockClientCount = 1 then
beginnen
(Absender als TPanel).Height := 1;
Ende;
Ende; procedure TfrmMain.pnlBottomDockDrop(Sender: TObject;
Quelle: TDragDockObject; X, Y: Integer);
beginnen
(Sender as TPanel).Height := max(source.Control.UndockHeight,(Sender as TPanel).Height);
end ; procedure TfrmMain.pnlBottomDockOver(Sender: TObject;
Quelle: TDragDockObject; X, Y: Integer;
varAccept: Boolean);
beginnen
wenn State = dsDragEnter dann
beginnen
(Sender as TPanel).Height := max(Source.Control.UndockHeight, (Sender as TPanel).Height);
Ende
anders
beginnen
wenn State = dsDragLeave dann
beginnen
(Absender als TPanel).Height := 1;
Ende;
Ende;
Ende;
Das obere und das untere Panel reagieren auf Ereigniscodes mit demselben Code. 5. Erstellen Sie ein neues Formular zum Andocken an das Hauptformular.
6. Setzen Sie das neue Formular DragKind auf dkDock und DragMode auf dmAutomatic.
7. Fügen Sie dem OnClose-Ereignis des neuen Formulars den folgenden Code hinzu:
wenn self.HostDockSite <> nil dann
beginnen
self.ManualDock(nil);
Ende ;
Aktion := caHide;
8. Legen Sie fest, dass neue Formulare nicht automatisch erstellt werden.
9. Erstellen Sie im Haupt-Creative-Körper ein neues Formular und zeigen Sie es an. Denken Sie daran: Verwenden Sie Show, nicht ShowModal. Diese Methode ist nicht sehr standardisiert. Wenn Sie eine detailliertere Steuerung benötigen, schauen Sie sich am besten das Docking-Beispiel von Delphi an. Wenn Sie in diesem Beispiel ein Panel in TabControl oder PageConrol ändern, können Sie bessere Ergebnisse erzielen, aber der Code muss leicht geändert werden. Interessierte Freunde können es versuchen.