From edbfbedc2f5bc2b40fe920cb0b4a43749aa8ade6 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Tue, 23 Oct 2007 21:29:20 +0000 Subject: [PATCH] Hide columns in ListTables if their header was "draggedout", which means: dragged up or down, not to the left or right. --- source/childwin.dfm | 1 + source/childwin.pas | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/source/childwin.dfm b/source/childwin.dfm index 4ae01faa..3e60bc44 100644 --- a/source/childwin.dfm +++ b/source/childwin.dfm @@ -392,6 +392,7 @@ object MDIChild: TMDIChild OnGetHint = vstGetHint OnGetNodeDataSize = vstGetNodeDataSize OnHeaderClick = vstHeaderClick + OnHeaderDraggedOut = vstHeaderDraggedOut OnInitNode = vstInitNode OnNewText = ListTablesNewText Columns = < diff --git a/source/childwin.pas b/source/childwin.pas index 5a746835..cad11036 100644 --- a/source/childwin.pas +++ b/source/childwin.pas @@ -501,6 +501,8 @@ type PVirtualNode; Column: TColumnIndex; var Result: Integer); procedure vstBeforePaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas); + procedure vstHeaderDraggedOut(Sender: TVTHeader; Column: TColumnIndex; + DropPosition: TPoint); procedure ComboBoxQueryDelimiterExit(Sender: TObject); procedure ComboBoxQueryDelimiterAdd(delimiter: String); procedure FormCreate(Sender: TObject); @@ -6611,4 +6613,26 @@ begin end; +{** + A header column of a VirtualTree was "dragged out", which means: + dragged down or up, not to the left or right. + We imitate the behaviour of various applications (fx Outlook) and + hide this dragged column +} +procedure TMDIChild.vstHeaderDraggedOut(Sender: TVTHeader; Column: + TColumnIndex; DropPosition: TPoint); +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 + Sender.Columns[Column].Options := Sender.Columns[Column].Options - [coVisible]; +end; + + end.