bug #1850003 "DB treeview context menu opens only on first monitor" and
bug #1846610 "Database View/List Popup Menu position issue"
Although I can't test the solution completely as I'm lacking a second monitor (like the reporter of the first bug), it seems correct that TPopupMenu.Popup() needs the clientorigin added to the mousepoint which is only a relative position to the underlying TWinControl.
@see TMDIChild.btnDataClick()
- Wording: "table" should be more clear than "objects"
- Source: Add TODO for platform specific method call
- GUI: Add right hand anchor for new radiobutton to ensure it's not covering some borders of the parent box
- Add a fourth radiobutton + edit + button labeled "Directory" below the "File" option
- Code just uses that new option just like the File option. Only differentiate in the InitFileStream method.
- The SelectDirectory() method expects the unit FileCtrl in the USES clause. Silence a relevant compiler warning about usage of platform specific units - we will never compile anything else than a Win32 app here.
The output filename gets parsed and the eventually existing "<table>" pattern gets replaced by either "header", "table1", "table2", ..., or "footer". That means, the single SQL files won't be complete in the end, as the header and footer is missing in the table-files. Not 100% sure if this is a good strategy. For me it seemed like the best/fast/lame way of working around the fact that the header potentially contains a CREATE DATABASE statement.
* TNTGrid is not capable of displaying a sort arrow in column titles. So, signalize sort direction of columns in grids and listviews by lightgrey (= ascending) and mediumgrey (= descending)
* Remove special color for NULL cells in grids because it can conflict with the new sorting colors. Instead, place a grey (NULL) text in these cells. Less gaudy colors now.
* Also remove grey background in primary key columns for the benefit of sorting colors. PK cells have bold font anyway, should be noticable enough.
- Implement an alternative solution for handling sorted columns without usage of SMDBGrid's sortcolumns. Move relevant structures and functions from data_sorting.pas to childwin.pas and use them in both units.
- Upgrade some code parts to use WideStrings instead of Strings so they don't break with the new grid.
- Use Grid.OnDrawDataCell as an alternative to Grid.OnGetCellParams as the latter one is a feature of SMDBGrid
- Cosmetic: enhance screen real estate in viewdata()
* Bugfix: When methods are called recursively, they should push/pop altered event handlers on a LIFO stack instead of blindly setting and unsetting them.
* Cosmetic: Reclaim screen real estate in ReadDatabasesAndTables().
* Bugfix: Some state changes (tree.Selected) did not correctly take effect when tree.Items.{Begin,End}Update was used, causing an exception later on in GetSelectedTable, GetActiveDatabase etc.
To reproduce the bug, right-click a table, drop it, then right-click another table in same database and choose "refresh".