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
|
||||
TabOrder = 2
|
||||
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.SelectionOptions = [toExtendedFocus, toFullRowSelect, toMultiSelect, toRightClickSelect]
|
||||
WantTabs = True
|
||||
OnAfterCellPaint = listColumnsAfterCellPaint
|
||||
OnBeforeCellPaint = listColumnsBeforeCellPaint
|
||||
OnChange = listColumnsChange
|
||||
OnClick = listColumnsClick
|
||||
OnCreateEditor = listColumnsCreateEditor
|
||||
OnDragOver = listColumnsDragOver
|
||||
|
@ -170,6 +170,7 @@ type
|
||||
Node: PVirtualNode; Column: TColumnIndex; HitPositions: THitPositions);
|
||||
procedure menuCopyColumnsClick(Sender: TObject);
|
||||
procedure menuPasteColumnsClick(Sender: TObject);
|
||||
procedure listColumnsChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
|
||||
private
|
||||
{ Private declarations }
|
||||
FLoaded: Boolean;
|
||||
@ -919,19 +920,37 @@ end;
|
||||
|
||||
|
||||
procedure TfrmTableEditor.btnMoveUpColumnClick(Sender: TObject);
|
||||
var
|
||||
Node: PVirtualNode;
|
||||
begin
|
||||
// Move column up
|
||||
// Move up selected columns
|
||||
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;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmTableEditor.btnMoveDownColumnClick(Sender: TObject);
|
||||
var
|
||||
Node: PVirtualNode;
|
||||
begin
|
||||
// Move column down
|
||||
// Move down selected columns
|
||||
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;
|
||||
end;
|
||||
|
||||
@ -1060,15 +1079,22 @@ end;
|
||||
|
||||
|
||||
procedure TfrmTableEditor.ValidateColumnControls;
|
||||
var Node: PVirtualNode;
|
||||
var
|
||||
NextSelected, LastSelected: PVirtualNode;
|
||||
begin
|
||||
Node := listColumns.FocusedNode;
|
||||
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);
|
||||
btnMoveDownColumn.Enabled := Assigned(Node)
|
||||
and (Node <> listColumns.GetLast)
|
||||
btnMoveDownColumn.Enabled := (listColumns.SelectedCount > 0)
|
||||
and (LastSelected <> listColumns.GetLast)
|
||||
and (DBObject.Connection.Parameters.NetTypeGroup = ngMySQL);
|
||||
|
||||
menuRemoveColumn.Enabled := btnRemoveColumn.Enabled;
|
||||
@ -1333,6 +1359,14 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmTableEditor.listColumnsChange(Sender: TBaseVirtualTree;
|
||||
Node: PVirtualNode);
|
||||
begin
|
||||
// Enable/disable move buttons
|
||||
ValidateColumnControls;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmTableEditor.listColumnsClick(Sender: TObject);
|
||||
var
|
||||
VT: TVirtualStringTree;
|
||||
|
Reference in New Issue
Block a user