Southern at Heart said:
Set objFolder = olns.PickFolder
...when using this pickfolder dialog, can I change the title of the dialog
box to read:
"Pick a folder that contains the old contacts"
...or
"Pick a folder that contains the new contacts"
(I need to do both)
thanks.
As Ken said, the built-in picker dialog is quite limited, whatever it
returns is entirely in the hands of the user. To me, it's all but useless.
It practically forces you to either lead it off with an explanatory message
(ugly), or pop it up and hope like hell the user has a clue {likewise ugly.)
So I wrote my own, that allows calling code to optionally do any or all of
the following:
1.) Set it's title;
2.) Specify a node to be selected when it opens;
3.) Dictate the type of folder the caller expects to be returned;
4.) Show it asynchronously/modelessly (raising an event when it is closed);
It populates each branch of the tree on demand, so its performance is
reasonable with large numbers of items. It supports drag-and-drop movement
of branches, and it's new-item-creation UI is more intuitive than the
built-in.
When I wrote this for an AddIn project a year or two back, I also wrapped it
up in a COM DLL, along with a regular EXE as a test container. I've made it
available, with VB6 project sources, in case you are interested, at:
http://www.deprecatethis.com/upload/PickFolderEx.zip
On the down side, besides the source code, this email is about the extent of
its documentation...
Further notes:
2.a.) Pre-selected node may be specified either by EntryID, or OOM constant
for any of the default folders (e.g., olFolderNotes.) If necessary,
ancester nodes are expanded until the specified node is visible.
3.a.) When an expected folder type is specified, that type is automatically
selected in the new folder UI. The user is free to change it, of course,
the user is free to create as many folders of whatever types he likes.
3.b.) If the user selects an existing (or just-created) folder of the wrong
type, and that folder is also empth, the code 'fixes' it up, by deleting the
selected folder and then creating a new one of the right type, in the same
place, with the same name. If the selected folder is *not* empty *and* is
the wrong type, the user is prompted to pick or create another one. (If the
selected folder is of the expected type, it does not need to be empty.)
A good bit of performance can be gained, using Redemption's MAPITables for
fast enumeration when populating -- I did this in the production version of
this code, it made a noticable difference.
-Mark