mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Table editor: support moving down or up more than one column. See https://www.heidisql.com/forum.php?t=17765
This commit is contained in:
@ -637,12 +637,13 @@ object frmTableEditor: TfrmTableEditor
|
|||||||
PopupMenu = popupColumns
|
PopupMenu = popupColumns
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoTristateTracking, toAutoChangeScale]
|
TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoTristateTracking, toAutoChangeScale]
|
||||||
TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toEditable, toFullRepaintOnResize, toGridExtensions, toInitOnSave, toToggleOnDblClick, toWheelPanning, toFullRowDrag, toEditOnClick]
|
TreeOptions.MiscOptions = [toAcceptOLEDrop, toCheckSupport, toEditable, toFullRepaintOnResize, toGridExtensions, toInitOnSave, toWheelPanning, toFullRowDrag, toEditOnClick]
|
||||||
TreeOptions.PaintOptions = [toHotTrack, toShowDropmark, toShowHorzGridLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toUseExplorerTheme, toHideTreeLinesIfThemed]
|
TreeOptions.PaintOptions = [toHotTrack, toShowDropmark, toShowHorzGridLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toUseExplorerTheme, toHideTreeLinesIfThemed]
|
||||||
TreeOptions.SelectionOptions = [toExtendedFocus, toFullRowSelect, toMultiSelect, toRightClickSelect]
|
TreeOptions.SelectionOptions = [toExtendedFocus, toFullRowSelect, toMultiSelect, toRightClickSelect]
|
||||||
WantTabs = True
|
WantTabs = True
|
||||||
OnAfterCellPaint = listColumnsAfterCellPaint
|
OnAfterCellPaint = listColumnsAfterCellPaint
|
||||||
OnBeforeCellPaint = listColumnsBeforeCellPaint
|
OnBeforeCellPaint = listColumnsBeforeCellPaint
|
||||||
|
OnChange = listColumnsChange
|
||||||
OnClick = listColumnsClick
|
OnClick = listColumnsClick
|
||||||
OnCreateEditor = listColumnsCreateEditor
|
OnCreateEditor = listColumnsCreateEditor
|
||||||
OnDragOver = listColumnsDragOver
|
OnDragOver = listColumnsDragOver
|
||||||
|
@ -170,6 +170,7 @@ type
|
|||||||
Node: PVirtualNode; Column: TColumnIndex; HitPositions: THitPositions);
|
Node: PVirtualNode; Column: TColumnIndex; HitPositions: THitPositions);
|
||||||
procedure menuCopyColumnsClick(Sender: TObject);
|
procedure menuCopyColumnsClick(Sender: TObject);
|
||||||
procedure menuPasteColumnsClick(Sender: TObject);
|
procedure menuPasteColumnsClick(Sender: TObject);
|
||||||
|
procedure listColumnsChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||||
private
|
private
|
||||||
{ Private declarations }
|
{ Private declarations }
|
||||||
FLoaded: Boolean;
|
FLoaded: Boolean;
|
||||||
@ -919,19 +920,37 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure TfrmTableEditor.btnMoveUpColumnClick(Sender: TObject);
|
procedure TfrmTableEditor.btnMoveUpColumnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Node: PVirtualNode;
|
||||||
begin
|
begin
|
||||||
// Move column up
|
// Move up selected columns
|
||||||
listColumns.EndEditNode;
|
listColumns.EndEditNode;
|
||||||
listColumns.MoveTo(listColumns.FocusedNode, listColumns.GetPreviousSibling(listColumns.FocusedNode), amInsertBefore, False);
|
|
||||||
|
Node := GetNextNode(listColumns, nil, true);
|
||||||
|
while Assigned(Node) do begin
|
||||||
|
listColumns.MoveTo(Node, listColumns.GetPreviousSibling(Node), amInsertBefore, False);
|
||||||
|
Node := GetNextNode(listColumns, Node, true);
|
||||||
|
end;
|
||||||
|
|
||||||
ValidateColumnControls;
|
ValidateColumnControls;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TfrmTableEditor.btnMoveDownColumnClick(Sender: TObject);
|
procedure TfrmTableEditor.btnMoveDownColumnClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
Node: PVirtualNode;
|
||||||
begin
|
begin
|
||||||
// Move column down
|
// Move down selected columns
|
||||||
listColumns.EndEditNode;
|
listColumns.EndEditNode;
|
||||||
listColumns.MoveTo(listColumns.FocusedNode, listColumns.GetNextSibling(listColumns.FocusedNode), amInsertAfter, False);
|
|
||||||
|
Node := listColumns.GetLast;
|
||||||
|
while Assigned(Node) do begin
|
||||||
|
if listColumns.Selected[Node] then begin
|
||||||
|
listColumns.MoveTo(Node, listColumns.GetNextSibling(Node), amInsertAfter, False);
|
||||||
|
end;
|
||||||
|
Node := listColumns.GetPrevious(Node);
|
||||||
|
end;
|
||||||
|
|
||||||
ValidateColumnControls;
|
ValidateColumnControls;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1060,15 +1079,22 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure TfrmTableEditor.ValidateColumnControls;
|
procedure TfrmTableEditor.ValidateColumnControls;
|
||||||
var Node: PVirtualNode;
|
var
|
||||||
|
NextSelected, LastSelected: PVirtualNode;
|
||||||
begin
|
begin
|
||||||
Node := listColumns.FocusedNode;
|
|
||||||
btnRemoveColumn.Enabled := listColumns.SelectedCount > 0;
|
btnRemoveColumn.Enabled := listColumns.SelectedCount > 0;
|
||||||
btnMoveUpColumn.Enabled := Assigned(Node)
|
|
||||||
and (Node <> listColumns.GetFirst)
|
NextSelected := GetNextNode(listColumns, nil, True);
|
||||||
|
while Assigned(NextSelected) do begin
|
||||||
|
LastSelected := NextSelected;
|
||||||
|
NextSelected := GetNextNode(listColumns, NextSelected, True);
|
||||||
|
end;
|
||||||
|
|
||||||
|
btnMoveUpColumn.Enabled := (listColumns.SelectedCount > 0)
|
||||||
|
and (listColumns.GetFirstSelected <> listColumns.GetFirst)
|
||||||
and (DBObject.Connection.Parameters.NetTypeGroup = ngMySQL);
|
and (DBObject.Connection.Parameters.NetTypeGroup = ngMySQL);
|
||||||
btnMoveDownColumn.Enabled := Assigned(Node)
|
btnMoveDownColumn.Enabled := (listColumns.SelectedCount > 0)
|
||||||
and (Node <> listColumns.GetLast)
|
and (LastSelected <> listColumns.GetLast)
|
||||||
and (DBObject.Connection.Parameters.NetTypeGroup = ngMySQL);
|
and (DBObject.Connection.Parameters.NetTypeGroup = ngMySQL);
|
||||||
|
|
||||||
menuRemoveColumn.Enabled := btnRemoveColumn.Enabled;
|
menuRemoveColumn.Enabled := btnRemoveColumn.Enabled;
|
||||||
@ -1333,6 +1359,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TfrmTableEditor.listColumnsChange(Sender: TBaseVirtualTree;
|
||||||
|
Node: PVirtualNode);
|
||||||
|
begin
|
||||||
|
// Enable/disable move buttons
|
||||||
|
ValidateColumnControls;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TfrmTableEditor.listColumnsClick(Sender: TObject);
|
procedure TfrmTableEditor.listColumnsClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
VT: TVirtualStringTree;
|
VT: TVirtualStringTree;
|
||||||
|
Reference in New Issue
Block a user