procedure TfrmMain.pnlLeftUnDock(Sender: TObject; Client: TControl; NewTarget: TWinControl; var Allow: Boolean); begin if (Sender as TPanel).VisibleDockClientCount = 1 then begin (Sender as TPanel).Width := 1; end; end; procedure TfrmMain.pnlLeftDockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer); begin (Sender as TPanel).Width := max(source.Control.UndockWidth,(Sender as TPanel).Width); end; procedure TfrmMain.pnlLeftDockOver(Sender: TObject; Source: TDragDockObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if State = dsDragEnter then begin (Sender as TPanel).Width := max(Source.Control.UndockWidth, (Sender as TPanel).Width); end else begin if State = dsDragLeave then begin (Sender as TPanel).Width := 1; end; end; end; //delphi/6875