Saving and restoring toolbar settings
You can save and restore the current toolbar settings using
functions that retrieve information about your toolbar settings, and you
can modify these settings.
GetToolbar and GetToolbarPos allow you to retrieve the current
toolbar settings. SetToolbar and SetToolbarPos allow you to change the
toolbar settings. The syntax you use for the GetToolbarPos and
SetToolbarPos functions varies depending on whether the toolbar you are
working with is floating or docked.
Floating toolbars
The position of a floating toolbar is determined by its x and y
coordinates. The size of a floating toolbar is determined by its width
and height.
When you code the GetToolbarPos and SetToolbarPos functions for a
floating toolbar, you need to include arguments for the x and y
coordinates and the width and height.
Docked toolbars
The position of a docked toolbar is determined by its docking row
and its offset from the beginning of the docking row. For toolbars at
the top or bottom, the offset for a docked toolbar is measured from the
left edge. For toolbars at the left or right, the offset is measured
from the top.
By default, the docking row for a toolbar is the same as its bar
index. If you align the toolbar with a different border in the window,
its docking row may change depending on where you place it.
When you code the GetToolbarPos and SetToolbarPos functions for a
docked toolbar, you need to include arguments for the docking row and
the offset.
Example
The example below shows how to use a custom class user object to
manage toolbar settings. The user object has two functions, one for
saving the current settings and the other for restoring the settings
later on. Because the logic required to save and restore the settings is
handled in the user object (instead of in the window itself), this logic
can easily be used with any window.
The sample code shown below supports both fixed and floating
toolbars.
Script for the window’s Open
event
When the window opens, the following script restores the toolbar
settings from an initialization file. To restore the settings, it
creates a custom class user object called u_toolbar and calls the
Restore function:
|
1 2 3 4 |
// Create the toolbar NVO u_toolbar = create u_toolbar // Restore the toolbar positions u_toolbar.Restore(this, "toolbar.ini", this.ClassName()) |
Script for the window’s Close
event
When the window closes, the following script saves the toolbar
settings by calling the Save function. Once the settings have been
saved, it destroys the user object:
|
1 2 3 4 |
// Save the toolbar stateu_toolbar.Save(this, "toolbar.ini", ClassName()) // Destroy the toolbar NVO destroy u_toolbar |
Script for the Save
function
The Save function has three arguments:
-
Win — provides the window reference
-
File — provides the name of the file where the settings
should be saved -
Section — identifies the section where the settings should be
saved
The Save function uses the GetToolbar and GetToolbarPos functions
to retrieve the current toolbar settings. To write the settings to the
initialization file, it uses the SetProfileString function.
The Save function can handle multiple toolbars for a single menu.
It uses the bar index to keep track of information for each
toolbar:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
// Store the toolbar settings for the passed window integer index, row, offset, x, y, w, h boolean visible string visstring, alignstring, title toolbaralignment alignment FOR index = 1 to 16 // Try to get the attributes for the bar. IF win.GetToolbar(index, visible, alignment, & title)= 1 THEN // Convert visible to a string CHOOSE CASE visible CASE true visstring = "true" CASE false visstring = "false" END CHOOSE // Convert alignment to a string CHOOSE CASE alignment CASE AlignAtLeft! alignstring = "left" CASE AlignAtTop! alignstring = "top" CASE AlignAtRight! alignstring = "right" CASE AlignAtBottom! alignstring = "bottom" CASE Floating! alignstring = "floating" END CHOOSE // Save the basic attributes SetProfileString(file, section + & String(index), "visible", visstring) SetProfileString(file, section + & String(index), "alignment", alignstring) SetProfileString(file, section + & String(index), "title", title) // Save the fixed position win.GetToolbarPos(index, row, offset) SetProfileString(file, section + & String(index), "row", String(row)) SetProfileString(file, section + & String(index), "offset", String(offset)) // Save the floating position win.GetToolbarPos(index, x, y, w, h) SetProfileString(file, section + & String(index), "x", String(x)) SetProfileString(file, section + & String(index), "y", String(y)) SetProfileString(file, section + & String(index), "w", String(w)) SetProfileString(file, section + & String(index), "h", String(h)) END IF NEXT |
Script for the Restore
function
The Restore function has the same three arguments as the Save
function. It uses the ProfileString function to retrieve toolbar
settings from the initialization file. Once the settings have been
retrieved, it uses the SetToolbar and SetToolbarPos functions to restore
the toolbar settings.
Like the Save function, the Restore function can handle multiple
toolbars for a single menu. It uses the bar index to keep track of
information for each toolbar:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
// Restore toolbar settings for the passed window integer index, row, offset, x, y, w, h boolean visible string visstring, alignstring, title toolbaralignment alignment FOR index = 1 to 16 // Try to get the attributes for the bar. IF win.GetToolbar(index, visible, alignment, & title)= 1 THEN // Try to get the attributes from the .ini file visstring = ProfileString(file, section + & String(index), "visible", "") IF visstring > "" THEN // Get all of the attributes alignstring = ProfileString(file, section + & String(index), "alignment", "left") title = ProfileString(file, section + & String(index), "title", "(Untitled)") row = Integer(ProfileString(file, section + & String(index), "row", "1")) offset = Integer(ProfileString(file, & section + String(index), "offset", "0")) x = Integer(ProfileString(file, section + & String(index), "x", "0")) y = Integer(ProfileString(file, section + & String(index), "y", "0")) w = Integer(ProfileString(file, section + & String(index), "w", "0")) h = Integer(ProfileString(file, section + & String(index), "h", "0")) // Convert visstring to a boolean CHOOSE CASE visstring CASE "true" visible = true CASE "false" visible = false END CHOOSE // Convert alignstring to toolbaralignment CHOOSE CASE alignstring CASE "left" alignment = AlignAtLeft! CASE "top" alignment = AlignAtTop! CASE "right" alignment = AlignAtRight! CASE "bottom" alignment = AlignAtBottom! CASE "floating" alignment = Floating! END CHOOSE // Set the new position win.SetToolbar(index, visible, alignment, title) win.SetToolbarPos(index, row, offset, false) win.SetToolbarPos(index, x, y, w, h) END IF END IF NEXT |