feat: add menu item Edit > Copy column names

Refs #2055
This commit is contained in:
Ansgar Becker
2026-02-27 16:21:27 +01:00
parent dbce6b5a0f
commit b1ae97a843
2 changed files with 65 additions and 5 deletions

View File

@@ -1859,6 +1859,9 @@ object MainForm: TMainForm
object CopyItem: TMenuItem
Action = actCopy
end
object Copycolumnnames1: TMenuItem
Action = actCopyColumnNames
end
object Copywithtabstospaces1: TMenuItem
Action = actCopyTabsToSpaces
end
@@ -3425,6 +3428,12 @@ object MainForm: TMainForm
Caption = 'Tree filters'
OnExecute = actDisplayTreeFiltersExecute
end
object actCopyColumnNames: TAction
Category = 'Various'
Caption = 'Copy column names'
ImageIndex = 3
OnExecute = menuCopyColumnNamesClick
end
end
object menuConnections: TPopupMenu
AutoHotkeys = maManual
@@ -3960,12 +3969,9 @@ object MainForm: TMainForm
end
object popupListHeader: TVTHeaderPopupMenu
Images = VirtualImageListMain
OnPopup = popupListHeaderPopup
Left = 424
Top = 208
object menuToggleAll: TMenuItem
Caption = 'Toggle visibility of all columns'
OnClick = menuToggleAllClick
end
end
object SynCompletionProposal: TSynCompletionProposal
Options = [scoLimitToMatchedText, scoUseInsertList, scoUsePrettyText, scoUseBuiltInTimer, scoEndCharCompletion, scoCompleteWithTab, scoCompleteWithEnter]

View File

@@ -774,7 +774,6 @@ type
Copywithtabstospaces1: TMenuItem;
Movelinedown1: TMenuItem;
Movelineup1: TMenuItem;
menuToggleAll: TMenuItem;
menuCloseTabOnDblClick: TMenuItem;
Undo1: TMenuItem;
actSequalSuggest: TAction;
@@ -808,6 +807,8 @@ type
menuDisplayLogPanel1: TMenuItem;
menuTreefilters1: TMenuItem;
N27: TMenuItem;
actCopyColumnNames: TAction;
Copycolumnnames1: TMenuItem;
procedure actCreateDBObjectExecute(Sender: TObject);
procedure menuConnectionsPopup(Sender: TObject);
procedure actExitApplicationExecute(Sender: TObject);
@@ -827,6 +828,7 @@ type
procedure actTableToolsExecute(Sender: TObject);
procedure actPrintListExecute(Sender: TObject);
procedure actCopyTableExecute(Sender: TObject);
procedure popupListHeaderPopup(Sender: TObject);
procedure ShowStatusMsg(Msg: String=''; PanelNr: Integer=6);
procedure actExecuteQueryExecute(Sender: TObject);
procedure actCreateDatabaseExecute(Sender: TObject);
@@ -1190,6 +1192,7 @@ type
procedure FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
NewDPI: Integer);
procedure menuToggleAllClick(Sender: TObject);
procedure menuCopyColumnNamesClick(Sender: TObject);
procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
NewDPI: Integer);
procedure menuCloseTabOnDblClickClick(Sender: TObject);
@@ -10364,6 +10367,29 @@ begin
end;
procedure TMainForm.menuCopyColumnNamesClick(Sender: TObject);
var
Grid: TVirtualStringTree;
Col: TColumnIndex;
List: TStringList;
begin
if Sender is TMenuItem then
Grid := PopupComponent(Sender) as TVirtualStringTree
else if Screen.ActiveControl is TVirtualStringTree then
Grid := Screen.ActiveControl as TVirtualStringTree
else
Exit;
List := TStringList.Create;
Col := Grid.Header.Columns.GetFirstVisibleColumn(True);
while Col > NoColumn do begin
List.Add(Grid.Header.Columns[Col].Text);
Col := Grid.Header.Columns.GetNextVisibleColumn(Col);
end;
Clipboard.TryAsText := List.Text;
List.Free;
end;
procedure TMainForm.menuTreeCollapseAllClick(Sender: TObject);
var
n: PVirtualNode;
@@ -13025,6 +13051,34 @@ begin
TimerCloseTabByButton.Enabled := True;
end;
procedure TMainForm.popupListHeaderPopup(Sender: TObject);
var
Item: TMenuItem;
i: Integer;
const
CustomItemTag = 123;
begin
// Add a few items to the top of the grid's header context menu
for i:=popupListHeader.Items.Count-1 downto 0 do begin
Item := popupListHeader.Items[i];
if Item.Tag = CustomItemTag then
Item.Free;
end;
Item := TMenuItem.Create(popupListHeader);
Item.Tag := CustomItemTag;
Item.Caption := _('Toggle visibility of all columns');
Item.OnClick := menuToggleAllClick;
popupListHeader.Items.Insert(0, Item);
Item := TMenuItem.Create(popupListHeader);
Item.Tag := CustomItemTag;
Item.Caption := _('Copy column names');
Item.OnClick := menuCopyColumnNamesClick;
Item.ImageIndex := actCopy.ImageIndex;
popupListHeader.Items.Insert(1, Item);
end;
procedure TMainForm.TimerCloseTabByButtonTimer(Sender: TObject);
var