Skip to content

Commit b1ae97a

Browse files
committed
feat: add menu item Edit > Copy column names
Refs #2055
1 parent dbce6b5 commit b1ae97a

File tree

2 files changed

+65
-5
lines changed

2 files changed

+65
-5
lines changed

source/main.dfm

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1859,6 +1859,9 @@ object MainForm: TMainForm
18591859
object CopyItem: TMenuItem
18601860
Action = actCopy
18611861
end
1862+
object Copycolumnnames1: TMenuItem
1863+
Action = actCopyColumnNames
1864+
end
18621865
object Copywithtabstospaces1: TMenuItem
18631866
Action = actCopyTabsToSpaces
18641867
end
@@ -3425,6 +3428,12 @@ object MainForm: TMainForm
34253428
Caption = 'Tree filters'
34263429
OnExecute = actDisplayTreeFiltersExecute
34273430
end
3431+
object actCopyColumnNames: TAction
3432+
Category = 'Various'
3433+
Caption = 'Copy column names'
3434+
ImageIndex = 3
3435+
OnExecute = menuCopyColumnNamesClick
3436+
end
34283437
end
34293438
object menuConnections: TPopupMenu
34303439
AutoHotkeys = maManual
@@ -3960,12 +3969,9 @@ object MainForm: TMainForm
39603969
end
39613970
object popupListHeader: TVTHeaderPopupMenu
39623971
Images = VirtualImageListMain
3972+
OnPopup = popupListHeaderPopup
39633973
Left = 424
39643974
Top = 208
3965-
object menuToggleAll: TMenuItem
3966-
Caption = 'Toggle visibility of all columns'
3967-
OnClick = menuToggleAllClick
3968-
end
39693975
end
39703976
object SynCompletionProposal: TSynCompletionProposal
39713977
Options = [scoLimitToMatchedText, scoUseInsertList, scoUsePrettyText, scoUseBuiltInTimer, scoEndCharCompletion, scoCompleteWithTab, scoCompleteWithEnter]

source/main.pas

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,6 @@ TMainForm = class(TExtForm)
774774
Copywithtabstospaces1: TMenuItem;
775775
Movelinedown1: TMenuItem;
776776
Movelineup1: TMenuItem;
777-
menuToggleAll: TMenuItem;
778777
menuCloseTabOnDblClick: TMenuItem;
779778
Undo1: TMenuItem;
780779
actSequalSuggest: TAction;
@@ -808,6 +807,8 @@ TMainForm = class(TExtForm)
808807
menuDisplayLogPanel1: TMenuItem;
809808
menuTreefilters1: TMenuItem;
810809
N27: TMenuItem;
810+
actCopyColumnNames: TAction;
811+
Copycolumnnames1: TMenuItem;
811812
procedure actCreateDBObjectExecute(Sender: TObject);
812813
procedure menuConnectionsPopup(Sender: TObject);
813814
procedure actExitApplicationExecute(Sender: TObject);
@@ -827,6 +828,7 @@ TMainForm = class(TExtForm)
827828
procedure actTableToolsExecute(Sender: TObject);
828829
procedure actPrintListExecute(Sender: TObject);
829830
procedure actCopyTableExecute(Sender: TObject);
831+
procedure popupListHeaderPopup(Sender: TObject);
830832
procedure ShowStatusMsg(Msg: String=''; PanelNr: Integer=6);
831833
procedure actExecuteQueryExecute(Sender: TObject);
832834
procedure actCreateDatabaseExecute(Sender: TObject);
@@ -1190,6 +1192,7 @@ TMainForm = class(TExtForm)
11901192
procedure FormBeforeMonitorDpiChanged(Sender: TObject; OldDPI,
11911193
NewDPI: Integer);
11921194
procedure menuToggleAllClick(Sender: TObject);
1195+
procedure menuCopyColumnNamesClick(Sender: TObject);
11931196
procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
11941197
NewDPI: Integer);
11951198
procedure menuCloseTabOnDblClickClick(Sender: TObject);
@@ -10364,6 +10367,29 @@ procedure TMainForm.menuToggleAllClick(Sender: TObject);
1036410367

1036510368
end;
1036610369

10370+
procedure TMainForm.menuCopyColumnNamesClick(Sender: TObject);
10371+
var
10372+
Grid: TVirtualStringTree;
10373+
Col: TColumnIndex;
10374+
List: TStringList;
10375+
begin
10376+
if Sender is TMenuItem then
10377+
Grid := PopupComponent(Sender) as TVirtualStringTree
10378+
else if Screen.ActiveControl is TVirtualStringTree then
10379+
Grid := Screen.ActiveControl as TVirtualStringTree
10380+
else
10381+
Exit;
10382+
10383+
List := TStringList.Create;
10384+
Col := Grid.Header.Columns.GetFirstVisibleColumn(True);
10385+
while Col > NoColumn do begin
10386+
List.Add(Grid.Header.Columns[Col].Text);
10387+
Col := Grid.Header.Columns.GetNextVisibleColumn(Col);
10388+
end;
10389+
Clipboard.TryAsText := List.Text;
10390+
List.Free;
10391+
end;
10392+
1036710393
procedure TMainForm.menuTreeCollapseAllClick(Sender: TObject);
1036810394
var
1036910395
n: PVirtualNode;
@@ -13025,6 +13051,34 @@ procedure TMainForm.CloseButtonOnMouseUp(Sender: TObject; Button: TMouseButton;
1302513051
TimerCloseTabByButton.Enabled := True;
1302613052
end;
1302713053

13054+
procedure TMainForm.popupListHeaderPopup(Sender: TObject);
13055+
var
13056+
Item: TMenuItem;
13057+
i: Integer;
13058+
const
13059+
CustomItemTag = 123;
13060+
begin
13061+
// Add a few items to the top of the grid's header context menu
13062+
for i:=popupListHeader.Items.Count-1 downto 0 do begin
13063+
Item := popupListHeader.Items[i];
13064+
if Item.Tag = CustomItemTag then
13065+
Item.Free;
13066+
end;
13067+
13068+
Item := TMenuItem.Create(popupListHeader);
13069+
Item.Tag := CustomItemTag;
13070+
Item.Caption := _('Toggle visibility of all columns');
13071+
Item.OnClick := menuToggleAllClick;
13072+
popupListHeader.Items.Insert(0, Item);
13073+
13074+
Item := TMenuItem.Create(popupListHeader);
13075+
Item.Tag := CustomItemTag;
13076+
Item.Caption := _('Copy column names');
13077+
Item.OnClick := menuCopyColumnNamesClick;
13078+
Item.ImageIndex := actCopy.ImageIndex;
13079+
popupListHeader.Items.Insert(1, Item);
13080+
end;
13081+
1302813082

1302913083
procedure TMainForm.TimerCloseTabByButtonTimer(Sender: TObject);
1303013084
var

0 commit comments

Comments
 (0)