Add support for hiding column headers to all lists, via a) context menu + b) via dragging out headers.

This commit is contained in:
Ansgar Becker
2010-04-11 23:57:51 +00:00
parent f7abafca8f
commit 6f9e2a88d2
2 changed files with 20 additions and 71 deletions

View File

@ -525,6 +525,7 @@ object MainForm: TMainForm
Header.DefaultHeight = 17 Header.DefaultHeight = 17
Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible]
Header.ParentFont = True Header.ParentFont = True
Header.PopupMenu = popupListHeader
Header.SortColumn = 0 Header.SortColumn = 0
Images = ImageListMain Images = ImageListMain
PopupMenu = popupHost PopupMenu = popupHost
@ -542,6 +543,7 @@ object MainForm: TMainForm
OnGetHint = vstGetHint OnGetHint = vstGetHint
OnGetNodeDataSize = ListDatabasesGetNodeDataSize OnGetNodeDataSize = ListDatabasesGetNodeDataSize
OnHeaderClick = vstHeaderClick OnHeaderClick = vstHeaderClick
OnHeaderDraggedOut = vstHeaderDraggedOut
OnInitNode = ListDatabasesInitNode OnInitNode = ListDatabasesInitNode
Columns = < Columns = <
item item
@ -607,6 +609,7 @@ object MainForm: TMainForm
Header.Height = 20 Header.Height = 20
Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible]
Header.ParentFont = True Header.ParentFont = True
Header.PopupMenu = popupListHeader
Header.SortColumn = 0 Header.SortColumn = 0
HintMode = hmTooltip HintMode = hmTooltip
Images = ImageListMain Images = ImageListMain
@ -629,6 +632,7 @@ object MainForm: TMainForm
OnGetHint = vstGetHint OnGetHint = vstGetHint
OnGetNodeDataSize = vstGetNodeDataSize OnGetNodeDataSize = vstGetNodeDataSize
OnHeaderClick = vstHeaderClick OnHeaderClick = vstHeaderClick
OnHeaderDraggedOut = vstHeaderDraggedOut
OnInitNode = vstInitNode OnInitNode = vstInitNode
Columns = < Columns = <
item item
@ -657,6 +661,7 @@ object MainForm: TMainForm
Header.Height = 20 Header.Height = 20
Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible]
Header.ParentFont = True Header.ParentFont = True
Header.PopupMenu = popupListHeader
Header.SortColumn = 0 Header.SortColumn = 0
HintMode = hmTooltip HintMode = hmTooltip
Images = ImageListMain Images = ImageListMain
@ -678,6 +683,7 @@ object MainForm: TMainForm
OnGetHint = vstGetHint OnGetHint = vstGetHint
OnGetNodeDataSize = vstGetNodeDataSize OnGetNodeDataSize = vstGetNodeDataSize
OnHeaderClick = vstHeaderClick OnHeaderClick = vstHeaderClick
OnHeaderDraggedOut = vstHeaderDraggedOut
OnInitNode = vstInitNode OnInitNode = vstInitNode
Columns = < Columns = <
item item
@ -728,6 +734,7 @@ object MainForm: TMainForm
Header.Height = 20 Header.Height = 20
Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible]
Header.ParentFont = True Header.ParentFont = True
Header.PopupMenu = popupListHeader
Header.SortColumn = 0 Header.SortColumn = 0
Header.SortDirection = sdDescending Header.SortDirection = sdDescending
HintMode = hmTooltip HintMode = hmTooltip
@ -752,6 +759,7 @@ object MainForm: TMainForm
OnGetHint = vstGetHint OnGetHint = vstGetHint
OnGetNodeDataSize = vstGetNodeDataSize OnGetNodeDataSize = vstGetNodeDataSize
OnHeaderClick = vstHeaderClick OnHeaderClick = vstHeaderClick
OnHeaderDraggedOut = vstHeaderDraggedOut
OnInitNode = vstInitNode OnInitNode = vstInitNode
Columns = < Columns = <
item item
@ -873,6 +881,7 @@ object MainForm: TMainForm
Header.Height = 20 Header.Height = 20
Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] Header.Options = [hoAutoResize, hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible]
Header.ParentFont = True Header.ParentFont = True
Header.PopupMenu = popupListHeader
Header.SortColumn = 1 Header.SortColumn = 1
Header.SortDirection = sdDescending Header.SortDirection = sdDescending
HintMode = hmTooltip HintMode = hmTooltip
@ -896,6 +905,7 @@ object MainForm: TMainForm
OnGetHint = vstGetHint OnGetHint = vstGetHint
OnGetNodeDataSize = vstGetNodeDataSize OnGetNodeDataSize = vstGetNodeDataSize
OnHeaderClick = vstHeaderClick OnHeaderClick = vstHeaderClick
OnHeaderDraggedOut = vstHeaderDraggedOut
OnInitNode = vstInitNode OnInitNode = vstInitNode
Columns = < Columns = <
item item
@ -945,7 +955,7 @@ object MainForm: TMainForm
Header.Height = 20 Header.Height = 20
Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible] Header.Options = [hoColumnResize, hoDblClickResize, hoDrag, hoHotTrack, hoShowSortGlyphs, hoVisible]
Header.ParentFont = True Header.ParentFont = True
Header.PopupMenu = popupDbGridHeader Header.PopupMenu = popupListHeader
Header.SortColumn = 0 Header.SortColumn = 0
HintMode = hmTooltip HintMode = hmTooltip
Images = ImageListMain Images = ImageListMain
@ -8032,9 +8042,7 @@ object MainForm: TMainForm
Left = 40 Left = 40
Top = 200 Top = 200
end end
object popupDbGridHeader: TPopupMenu object popupListHeader: TVTHeaderPopupMenu
AutoHotkeys = maManual
AutoLineReduction = maManual
Images = ImageListMain Images = ImageListMain
Left = 40 Left = 40
Top = 128 Top = 128

View File

@ -18,7 +18,7 @@ uses
CommCtrl, Contnrs, Generics.Collections, SynEditExport, SynExportHTML, Math, CommCtrl, Contnrs, Generics.Collections, SynEditExport, SynExportHTML, Math,
routine_editor, trigger_editor, event_editor, options, EditVar, helpers, createdatabase, table_editor, routine_editor, trigger_editor, event_editor, options, EditVar, helpers, createdatabase, table_editor,
TableTools, View, Usermanager, SelectDBObject, connections, sqlhelp, mysql_connection, TableTools, View, Usermanager, SelectDBObject, connections, sqlhelp, mysql_connection,
mysql_api, insertfiles, searchreplace, loaddata, copytable; mysql_api, insertfiles, searchreplace, loaddata, copytable, VTHeaderPopup;
type type
@ -293,7 +293,7 @@ type
N19: TMenuItem; N19: TMenuItem;
setNULL1: TMenuItem; setNULL1: TMenuItem;
menuExporttables: TMenuItem; menuExporttables: TMenuItem;
popupDbGridHeader: TPopupMenu; popupListHeader: TVTHeaderPopupMenu;
SynCompletionProposal: TSynCompletionProposal; SynCompletionProposal: TSynCompletionProposal;
OpenDialogSQLFile: TOpenDialog; OpenDialogSQLFile: TOpenDialog;
SaveDialogSQLFile: TSaveDialog; SaveDialogSQLFile: TSaveDialog;
@ -580,7 +580,6 @@ type
procedure QFvaluesClick(Sender: TObject); procedure QFvaluesClick(Sender: TObject);
procedure InsertDate(Sender: TObject); procedure InsertDate(Sender: TObject);
procedure setNULL1Click(Sender: TObject); procedure setNULL1Click(Sender: TObject);
procedure MenuTablelistColumnsClick(Sender: TObject);
function QueryLoad( filename: String; ReplaceContent: Boolean = true ): Boolean; function QueryLoad( filename: String; ReplaceContent: Boolean = true ): Boolean;
procedure DataGridChange(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure DataGridChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure DataGridCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; procedure DataGridCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode;
@ -794,7 +793,6 @@ type
function GetActiveDatabase: String; function GetActiveDatabase: String;
function GetSelectedTable: TDBObject; function GetSelectedTable: TDBObject;
procedure SetSelectedDatabase(db: String); procedure SetSelectedDatabase(db: String);
procedure SetVisibleListColumns( List: TVirtualStringTree; Columns: TStringList );
procedure ToggleFilterPanel(ForceVisible: Boolean = False); procedure ToggleFilterPanel(ForceVisible: Boolean = False);
procedure AutoCalcColWidth(Tree: TVirtualStringTree; Column: TColumnIndex); procedure AutoCalcColWidth(Tree: TVirtualStringTree; Column: TColumnIndex);
procedure PlaceObjectEditor(Obj: TDBObject); procedure PlaceObjectEditor(Obj: TDBObject);
@ -1124,7 +1122,6 @@ end;
procedure TMainForm.FormCreate(Sender: TObject); procedure TMainForm.FormCreate(Sender: TObject);
var var
i: Integer; i: Integer;
menuitem : TMenuItem;
datafontname, WinState: String; datafontname, WinState: String;
datafontsize : Integer; datafontsize : Integer;
DisableProcessWindowsGhostingProc: procedure; DisableProcessWindowsGhostingProc: procedure;
@ -1308,19 +1305,6 @@ begin
Action.ShortCut := GetRegValue(REGPREFIX_SHORTCUT1+Action.Name, Action.ShortCut); Action.ShortCut := GetRegValue(REGPREFIX_SHORTCUT1+Action.Name, Action.ShortCut);
end; end;
// Generate menuitems for popupDbGridHeader (column selection for ListTables)
popupDBGridHeader.Items.Clear;
for i:=0 to ListTables.Header.Columns.Count-1 do
begin
menuitem := TMenuItem.Create( popupDBGridHeader );
menuitem.Caption := ListTables.Header.Columns[i].Text;
menuitem.OnClick := MenuTablelistColumnsClick;
// Disable hiding first column
menuitem.Enabled := i>0;
menuitem.Checked := coVisible in ListTables.Header.Columns[i].Options;
popupDbGridHeader.Items.Add( menuitem );
end;
// Place progressbar on the statusbar // Place progressbar on the statusbar
ProgressBarStatus.Parent := StatusBar; ProgressBarStatus.Parent := StatusBar;
ProgressBarStatus.Visible := False; ProgressBarStatus.Visible := False;
@ -5641,27 +5625,6 @@ begin
raise Exception.Create('Assertion failed: Invalid global VT array.'); raise Exception.Create('Assertion failed: Invalid global VT array.');
end; end;
{**
Click on popupDBGridHeader
}
procedure TMainForm.MenuTablelistColumnsClick(Sender: TObject);
var
menuitem : TMenuItem;
VisibleColumns : TStringList;
i : Integer;
begin
VisibleColumns := TStringList.Create;
menuitem := TMenuItem( Sender );
menuitem.Checked := not menuitem.Checked;
for i := 0 to ListTables.Header.Columns.Count - 1 do
begin
menuitem := popupDbGridHeader.Items[i];
if menuitem.Checked then
VisibleColumns.Add(IntToStr(i));
end;
SetVisibleListColumns( ListTables, VisibleColumns );
end;
{** {**
Save setup of a VirtualStringTree to registry Save setup of a VirtualStringTree to registry
@ -5747,7 +5710,12 @@ begin
Value := GetRegValue(REGPREFIX_COLSVISIBLE + Regname, ''); Value := GetRegValue(REGPREFIX_COLSVISIBLE + Regname, '');
if Value <> '' then begin if Value <> '' then begin
ValueList := Explode( ',', Value ); ValueList := Explode( ',', Value );
SetVisibleListColumns( List, ValueList ); for i:=0 to List.Header.Columns.Count-1 do begin
if ValueList.IndexOf( IntToStr(i) ) > -1 then
List.Header.Columns[i].Options := List.Header.Columns[i].Options + [coVisible]
else
List.Header.Columns[i].Options := List.Header.Columns[i].Options - [coVisible];
end;
end; end;
// Column position // Column position
@ -5767,25 +5735,6 @@ begin
end; end;
{**
(Un)hide columns in a VirtualStringTree.
}
procedure TMainForm.SetVisibleListColumns( List: TVirtualStringTree; Columns: TStringList );
var
i : Integer;
begin
for i := 0 to List.Header.Columns.Count - 1 do
begin
// Only ListTables' column visibility is currently customizable
// so, make sure to unhide the newer "Comment" column in ListColumns for some users
if (Columns.IndexOf( IntToStr(i) ) > -1) or (List <> ListTables) then
List.Header.Columns[i].Options := List.Header.Columns[i].Options + [coVisible]
else
List.Header.Columns[i].Options := List.Header.Columns[i].Options - [coVisible];
end;
end;
{** {**
Start writing logfile. Start writing logfile.
Called either in FormShow or after closing preferences dialog Called either in FormShow or after closing preferences dialog
@ -5915,14 +5864,6 @@ end;
procedure TMainForm.vstHeaderDraggedOut(Sender: TVTHeader; Column: procedure TMainForm.vstHeaderDraggedOut(Sender: TVTHeader; Column:
TColumnIndex; DropPosition: TPoint); TColumnIndex; DropPosition: TPoint);
begin begin
if Sender.Treeview = ListTables then
begin
// Keep "Tables" column
if Column = 0 then
Exit;
// Uncheck menuitem in header's contextmenu
popupDBGridHeader.Items[Column].Checked := False;
end;
// Hide the draggedout column // Hide the draggedout column
Sender.Columns[Column].Options := Sender.Columns[Column].Options - [coVisible]; Sender.Columns[Column].Options := Sender.Columns[Column].Options - [coVisible];
end; end;