FileExplorer  
Version File Explorer
Copyright CapeSoft Software (Pty) Ltd
www.capesoft.com
     

Contents
    Upgrading from FileExplorer 4 to FileExplorer 5  
  Upgrading from a version earlier than 3.70? Please click here.
General Information
 

First time User? Start Here...
License & Copyright
Introduction
About File Explorer
Version History
Features
Support
   Windows Vista Compatibility
System Requirements
Installing File Explorer
Adding a File Explorer Control to your Application
What you need to ship
Complimentary Products
Acknowledgements

 

The Templates
 

Global Extension Templates
 
Activate File Explorer

Control Templates
 
Document Viewer
  Media Viewer
  Background Media Load Button
  Document Print Button
  Flash Control Buttons
  Html Background Color Button
  Html Edit Buttons
  Html View Buttons
  Media Buttons

Code Templates
 
CallFe_EditMethod
  CallFe_LoadMethod
  CallFe_MediaAPIMethod
  CallFe_NavigateMethod
  DeclareFEObject

File Explorer Class Reference

 

Dll Functions
 
Useful References
 

Tips & FAQ   [ Suggested Reading ]
Examples
The Storage File Example
Considerations if upgrading from a version earlier than 3.70   [ Important ]
Internet Explorer Version Info
Header / Footer strings for IE Page Setup
Using DebugView
File Explorer and The Future
File Explorer Version Numbers
Version History   [ Suggested Reading ]

 
     



Start Here!

Welcome to File Explorer!  If you are new to File Explorer, or if you have not used the product for a while, these steps should get you going in the right direction. File Explorer started off with fairly simple goals in mind (see the section called Product History for more info).  Since its release in November 2000 it has evolved and expanded to the point where it's at today, which is a long way off from where we started.  Because of this process of evolution the product has many diverse features, and can be quite difficult to get your head around.  For this reason, the easiest and best way to familiarize yourself with it is to simply have a look at the feabc.app example application, which demonstrates most of the features at any moment in time. 

Compile the feabc.app (see the section titled Examples for more info) and spend a few minutes having a look at the various things which the application can do. Once you have found something which looks exciting, have a look at the code / templates which the examples application uses, and then turn to this document should you require more help how the templates, methods, properties and logic works (although most of the time the example application is fairly clear about what it's doing). For some users the templates that ship with File Explorer will be enough to achieve what you want to do.  For users who want to scratch below the surface (highly recommended), have a look at what code the templates generate.  The templates simply generate code that implements the various classes that make up File Explorer.  Those classes are all outlined in this document. If you are still unsure about something after you've looked at the feabc.app example, and read the documentation, feel free to contact us for further assistance or to be pointed in the right direction.  The Frequently Asked Questions is another useful reference to read through once in a while, and be sure to read the product's Version History regularly to see what we're working on.

What's new in FileExplorer 5

FileExplorer 5 introduces two existing new classes. The new default Media class is feMedia2, this class fully supports the new interface available with Windows Media Player 7 and up, and maintains backward compatibility with older versions of Media Player (if the new interfaces are not available it will fall back to the old ones). The new default editor is feEditor, which replaces the now deprecated feHtmlEditor. The new editor is faster, more stable, and far richer than the old editor. It is fully Vista compatible and no longer relies on the MS DHTML Editing control, or anything else other than Internet Explorer. The new editor:

 

Important: The new editor requires that you ship the following files with your application (place these in the application or Data directory for your application). All of these files are shipped in the example folders: Clarion\3rdparty\examples\FileExplorer\Demo



License & Copyright

This template is Copyright CapeSoft Software (Pty) Ltd.  None of the included files may be distributed. Your programs which use File Explorer can be distributed without any File Explorer royalties.

Each developer needs his own license to use File Explorer. (Need to buy more licenses?)

This product is provided as-is. Use it entirely at your own risk. Use of this product implies your acceptance of this, along with the recognition of copyright stated above. In no way will CapeSoft Software (Pty) Ltd, their employees or affiliates be liable in any way for any damages or business losses you may incur as a direct or indirect result of using this product.

Introduction

While writing CapeSoft Mailer, we were looking for a way to display html documents as if they were being viewed through IE, rather than just viewing the HTML 'text'.  After much scratching and testing we implemented an object using the Internet Explorer OCX.  With this initial work under our belts we started looking at what other doors similar OCX integration could open, and started writing what was to become the File Explorer.  We added support for html browsing and editing, and support for pdf, sound, movies, and flash.

Since we released the first version of File Explorer the product has evolved and grown into a fairly large product, as you will see if you have a look at what the feabc.app example application is capable of doing. Enjoy...!
 

Product History

In November 2000 we released the first version of File Explorer for Clarion 5.  At that time we started building a control to browse html pages, using the Internet Explorer "WebBrowser" OLE control, and the CW OLE container control to host it.  This proved unstable, and although we wrote huge amounts of "don't fall over and die" code, the File Explorer control (at that time called Html1) was always subject to the OLE control's problems.

Then in March 2002 we moved to using COM and wrote a new control for browsing html pages, based on pure COM (not the OLE control / container which we had been using).  The improvement in terms of speed and stability was mind blowing. Since then FileExplorer has come an long way and expanded to include the feBrowser control for viewing HTML and web pages, feHtmlEditor for editing HTML (soon to be replaced by the brand new, greatly improved, feEditor), feFlash for viewing Flash content, fePDF for PDF documents and feMedia which provides a full media player.



Features

 

Support

Your questions, comments and suggestions are welcome. Check our web page (www.capesoft.com) for new versions. You can also contact us in one of the following ways.


CapeSoft Support
  Email support@capesoft.com  
Telephone +27 21 715 4000
Fax +27 21 715 2535
Post PO Box 511, Plumstead, 7801, Cape Town, South Africa
     

File Explorer is available for purchase at $149 from:

CapeSoft Sales
  Web www.capesoft.com  
Email sales@capesoft.com
Telephone +27 21 715 4000
Fax +27 21 715 2535
Post PO Box 511, Plumstead, 7801, Cape Town, South Africa
     


Buy Online
  Web Buy now at ClarionShop
www.clarionshop.com 
 
 
 
 
 
     
 
 

Microsoft Windows Vista and Windows Server 2008 Compatibility

File Explorer is fully  compatible with Windows Vista and Windows Server 2008. The Browser control works well with Internet Explorer 7, the Media Player supports Windows Media Player 11, and the PDF and Flash viewers us components provided by Abode (Adobe Reader and Flash Player).

The old HTML editing class feHtmlEditor relies on the MS DHTML editing control, which is not shipped with these operating system, however it is provided as a reditributable, which can be shipped with your application. The FileExplore installer places the

System Requirements

The various File Explorer classes require the following to be installed.  While File Explorer (or parts thereof) may work on earlier versions than those indicated below, these are considered to be the minimum system requirements.

Microsoft Internet Explorer (5.5 or later)

Adobe Acrobat Reader (4 or later)
Windows Media Player  (6.4 or later)
Adobe  Flash Player

 

Installing File Explorer

 


Adding a File Explorer Control to your Application

Adding a File Explorer Control to your Application is this easy...
  1. Add the File Explorer Global Extension Template to your application.


  1. Once the Global Extension template has been added to your application, you can add other templates, call dll functions, etc etc.  You should start by compiling the example application ( click here for info ) called "feabc.app".  Look at what this example can do, and then have a look how we did it.  Use this document to lookup additional information and hopefully the pieces will start fitting together.
 


What you need to ship

DLLs required (Standalone mode compiles)
 
Clarion Version
DLL required  
Clarion 6.1 C60FEX.DLL and PWUTIL.DLL
Clarion 5.5 C55FEX.DLL and PWUTIL.DLL
     

DLLs required (Local mode compiles)
 

Clarion Version

DDLL required  
Clarion 6.1 PWUTIL.DLL
Clarion 5.5 PPWUTIL.DLL
     

 
When using the feEditor class.
 

Important: The new editor requires that you ship the following files with your application (place these in the application or Data directory for your application). All of these files are shipped in the example folders: Clarion\3rdparty\examples\FileExplorer\Demo

  • The whole Editor\ folder (Clarion\3rdparty\examples\FileExplorer\Demo\editor\)
  • feEditor.html
  • fckpackager.xml, fckstyles.xml and fcktemplates.xml
  • fckconfig.js, fckeditor.js, feconfig.js
 
     

Complimentary Products

CapeSoft HyperActive - HyperActive allows you to easily make any control into a url, that opens a page in your default web browser.  HyperActive also supports sending a control's url directly to your File Explorer control.  Place buttons or a list box on the same window as your File Explorer control, and use those controls to load urls into your File Explorer control.

CapeSoft NetTalk - One of NetTalk's features is full Email support from within your app.  Use File Explorer to create html documents, and NetTalk to send the html "source code" as an email, along with embedded graphics, attachments etc.  If you already own both NetTalk and File Explorer, be sure to look at the "fe_nettalk.app" app in " C55\3rd Party\Examples\File Explorer\FE and NetTalk ".  Demonstrates how to send and receive email using these two tools.

 


Acknowledgements

 

The Templates

Activate File Explorer
  Summary  
Global Extension Template
Activate CapeSoft File Explorer Features in your application
Required
What does it do?
You must add this template to your app or no other templates / objects will work.  This template sets up the File Explorer classes (dll / lib) so that other templates can implement those classes.
Prerequisites
None
How do I implement it?
1. Open your app
2. Select "Global Properties" from the "Application" menu
3. Click the "Extensions" button
4. Click the "Insert" button Select "Activate_File_Explorer" ( found under "Class File Explorer" )
5. Click the "Select" button ( you can leave all default settings, these are discussed below )
6. Click "OK"
7. Click "OK" again

What are my options?

Folder for temp files
File Explorer may need to generate temporary files while your app runs.  If it does, by default it uses the same folder as your exe.  You can change this here to be either the same folder as the exe (default), or the system temporary folder ( normally "c:\windows\temp" or similar ).

Do not generate any code
No template code will be generated at compile time, however any controls which you have populated will still appear.

Do not automatically generate map
Does not add anything to your global map at compile time.

Do not automatically call feDispose
By default, File Explorer will generate a line of code which calls the feDispose function as your application closes.  If for some reason you do not want this function to be called, you can tick this option here.  If you're not sure, don't tick this.


     


Document Viewer
  Summary  
Control Template
View Html, PDF, and SWF files
Optional
What does it do?
Populate this control onto a window in order to be able to view and / or edit HTML, PDF, or SWF files in it.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
  1. On the window where you want to use this control, choose "Control Template..." from the "Populate" menu.
  2. Look for the section called "Class FileExplorer", then select the item in that section called "DocumentViewer".  Click on your window to populate this control.

WWhat are my options?

"General" Tab

Object Type
This control used to be able to load more than one file type.  As the functionality evolved we had to break it up to support only one file type per control.  Choose the File Type here.

"Common" Tab

Initial Document
If you want this control to load a file as the window opens, enter the file name here.  Tick "Variable?" if you want to enter a variable instead of a filename. Provide 'All Files' Option in File Lookups
If the user uses the template's 'File Lookup' button to find files (much like the DOS File Lookup Clarion control), enabling this option will result in the lookup including 'All Files' as a supported file type.

"Browse Html" Tab - only available if you choose Html Browsing on the first tab

Auto-Resize control
Have the Viewer control automatically resize when the window resizes, selected by default.

Implement Callback Events
Callback events are handled "internally" by File Explorer, which calls a virtual method called EventCallback each time an event is fired.  If you want to enable Callback events, simply tick this option here.  (Note: Enabling Callback events will add some overhead to the object, so theoretically it will slow it down, however the speed difference should not be noticeable).

"Edit Html" Tab - only available if you choose Html Editing on the first tab

Auto-Resize control
Have the Viewer control automatically resize when the window resizes, selected by default.

Implement Callback Events
Callback events are handled "internally" by File Explorer, which calls a virtual method called EventCallback each time an event is fired.  If you want to enable Callback events, simply tick this option here.  (Note: Enabling Callback events will add some overhead to the object, so theoretically it will slow it down, however the speed difference should not be noticeable).

"PDF" Tab - only available if you choose PDF on the first tab

Show Toolbar
Decides whether or not the native PDF toolbar is displayed when you view documents.

Show Scrollbars
Decides whether or not scrollbars are displayed when you view documents.

Initial Zoom
Sets the initial zoom percentage for the object.

Preferred Acrobat Version
Because it is possible to have more than one version of Adobe Acrobat installed on your PC, and because some methods only work with Acrobat 4 ( as described in the methods and properties sections of this document ), we enable you to specify which version of Adobe Acrobat should be loaded.  If the version you choose here is not installed on the PC, any available version will be loaded.

"Flash" Tab - only available if you choose Flash on the first tab

Loop Files
Plays the file repeatedly if enabled

"Object" Tab

Object Name
Each Viewer Control instantiates a File Explorer object (from the File Explorer class), which it uses to "work".  These File Explorer objects need names.  The templates will automatically name the objects for you (typically something like ThisViewer1, ThisViewer2 etc), but you can rename the object here if you have reason to.

Var to Disable
Optionally create a variable (Byte) which can be set at runtime, which will disable this object if set to 1 (True), and enable it if set to 0 (False).  You can point all objects in your app to a single override variable allowing a single 'switch' for the user to disable all controls, or use multiple variables allowing the user 'switches' to disable specific controls or groups of controls at run-time.
 
Don't Generate Any Code
No code will be generated for this particular object at compile time.
     


Media Viewer
  Summary  
Control Template
Play sound and video files
Optional
What does it do?
Populate this control onto a window in order to be able to play sound and video files
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
  1. On the window where you want to use this control, choose "Control Template..." from the "Populate" menu.
  2. Look for the section called "Class FileExplorer", then select the item in that section called "MediaViewer".  Click on your window to populate this control.

What are my options?

"General" Tab

( no options )

"Common" Tab

( File Types )
The top two sections of this tab allow you to choose which file types this control will be allowed to play. Provide 'All Files' Option in File Lookups
If the user uses the template's 'File Lookup' button to find files (much like the DOS File Lookup Clarion control), enabling this option will result in the lookup including 'All Files' as a supported file type. Initial Document
If you want this control to load a file as the window opens, enter the file name here.  Tick "Variable?" if you want to enter a variable instead of a filename.

"Advanced" Tab

Auto-Resize control
Have the Viewer control automatically resize when the window resizes, selected by default.

Implement Callback Events
Callback events are handled "internally" by File Explorer, which calls a virtual method called EventCallback each time an event is fired.  If you want to enable Callback events, simply tick this option here.  (Note: Enabling Callback events will add some overhead to the object, so theoretically it will slow it down, however the speed difference should not be noticeable). "Other" Tab

Auto-Rewind
Sets whether the Media Files automatically rewind once they have finished playing.

Allow Zoom Changing
Sets whether the user can right-click on the media file while it is playing, and adjust the zoom properties.

Auto-Start
Sets whether the Media Files start playing automatically once loaded.

Mute Sound
Mute the sound.

Times to Play
Set the number of times a file plays before stopping.

Playback Rate
Set the control's playback rate.  100 plays files at their 'normal speed' of 100%.  Entering a value of 50 or 200 would play files at 50% or 200% of their 'normal' speed.

Zoom
SSets the zoom for the video clip.  Select one of 50%, 100% or 200%  (relative to the default playing size of the media clip); 'Full Screen', 'Fit', '1/16th Screen Size', '1/4 Screen Size' or '1/2 Screen Size'.  Note that some zoom sizes (such as 'Full Screen') will only work if the file which you load supports that resolution.  Also, note that setting the zoom to 1/2 of the screen size will not work if your FileExplorer control is not large enough to hold that size.

Start Time
By default, files start playing at the beginning (0.0).  Setting this to 10.5 would start playing the file 10 and a half seconds into the clip.  There is also a property called 'End At', and 'Duration'.  See the 'Properties' section in these docs for notes on how to implement these.

Position (Left, Right, Bottom)
When loading a file into the MediaViewer control, the ocx may resize itself to fit the size of the file it is loading (visual size).  To clean this up you can set these three sizes here.  Immediately after the file loads (and the ocx resizes itself), File Explorer will resize the ocx so that there are these units of space between the control's left, right and bottom borders, and the left, right and bottom borders of the parent window.

Auto-Resize
Set this to true if you want the control to automatically resize itself each time a new file is loaded.  The control will increase or decrease in size so that it is large enough to contain the loaded file (assuming your window is large enough!).  By default this is set to 'false'.

"UI" / "User Interface" Tab

Show Toolbar
Sets whether or not the native Media Viewer toolbar is displayed.

Enable Toolbar
Enables / disables the toolbar.  The 'Show Toolbar' option must be checked to use this.

Show Slide Bar
Sets whether or not the "Slide Bar" control appears.  This is the control which you can use to "move around" inside the playing file.

Enable Slide Bar
Enables / disables the slide bar.  The 'Show Slide Bar' option must be checked to use this.

Show Position Controls
Sets whether or not the "Position Controls" inside the toolbar are displayed.  The 'Enable Toolbar' and the 'Show Toolbar' options must be checked in order to use this.

Show Info Window
Sets whether or not the 'Additional Information Window' is displayed.  This window shows information such as 'Artists Name' and 'Copyright Information'.  By default this is not activated.

SShow Goto Bar
Sets whether or not the "Goto" drop list is displayed.  By default this is not activated.

Right Click Menu
When the user right-clicks on the control (assuming a file has been loaded into it), a popup menu appears, allowing the user to set various options.  This is a native Microsoft popup menu.  If you want to turn off this menu (so it does not appear), do that here.

"Object" Tab

Object Name
Each Viewer Control instantiates a File Explorer object (from the File Explorer class), which it uses to "work".  These File Explorer objects need names.  The templates will automatically name the objects for you (typically something like ThisViewer1, ThisViewer2 etc), but you can rename the object here if you have reason to.

Var to Disable
Optionally create a variable (Byte) which can be set at runtime, which will disable this object if set to 1 (True), and enable it if set to 0 (False).  You can point all objects in your app to a single override variable allowing a single 'switch' for the user to disable all controls, or use multiple variables allowing the user 'switches' to disable specific controls or groups of controls at run-time.
 
Don't Generate Any Code
NNo code will be generated for this particular object at compile time.
     


Background Media Load Button
  Summary  
( No longer supported - please use the CallFe_MediaAPIMethod ccode template instead )
     


Document Print Button
  Summary  
Control Template
Prints the currently loaded document
Optional
What does it do?
This template drops a button onto your window, which prints the loaded document when you click it.  You will need to have already populated a Viewer Control onto the window before you can populate this template.  It currently supports printing html pages (feBrowser, feHtmlEditor) and also PDF documents (fePDF).
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
1. On the window where you want to use this control, simply choose "Control Template..." from the "Populate" menu.

What are my options?

Don't show "Printer Options" dialog window
By default this is not checked, and you will be presented with the standard "Printer Options" screen before printing (if supported), where you can set paper size etc.  You can select this option here, which will result in the document printing "straight to the printer" instead.

Document Type
(obsolete)

NOTE: For an example, have a look at the "simple_fePDF" procedure in the feabc.app example application.

     


Flash Control Buttons
  Summary  
Control Template
Used with the Document Viewer template
Optional
What does it do?
This template populates a "Play", "Pause", and "Stop" button onto your window, to control the playing of Flash files in the Document Viewer control.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
1. On the window where you want to use this control, simply choose "Control Template..." from the "Populate" menu.

What are my options?

There are no additional options for this template.

     


Html Background Color Button
  Summary  
Control Template
Used with the Document Viewer control
Optional
What does it do?
Use this template to change the background color of an html document (Html editing, not browsing), using the following steps ( assuming you have already populated a Viewer Control and have set it up to support "Html Editing" ).
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
1. On the window where you want to use this control, simply choose "Control Template..." from the "Populate" menu.

What are my options?

Reload Document After Updating
IIf you select this, the html document will be saved, and then reloaded each time you change its background color.  The reason this may be necessary is that graphics in the html page which do not contain "full" paths ( such as " subfolder1/image1.gif " ) will not display once you change the background color - an ocx refresh issue.  Turning this option on gets around that problem by effectively "reloading" the html document ( and all the graphics ) each time the background color changes.

     


Html Edit Buttons
  Summary  
Control Template
To Do
Optional
What does it do?
To Do
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
1. On the window where you want to use this control, simply choose "Control Template..." from the "Populate" menu.

What are my options?

(( none )

     


Html View Buttons
  Summary  
Control Template
To Do
Optional
What does it do?
To Do
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
1. On the window where you want to use this control, simply choose "Control Template..." from the "Populate" menu.
What are my options?

(( none )

     


Media Buttons
  Summary  
Control Template
To Do
Optional
What does it do?
To Do
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
1. On the window where you want to use this control, simply choose "Control Template..." from the "Populate" menu.
What are my options?

(( none )

     


CallFe_EditMethod
  Summary  
Control Template
To Do
Optional
What does it do?
In order to use this code template, you must have already populated one of the Viewer Controls onto your window.  Use this template ( typically behind a button ) to implement the File Explorer "Edit" method.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
To Do
What are my options?

Parent Object
This drop list lists all the current File Explorer objects which are present in your procedure.  Select the object which should load this file.  Look in the Viewer Control's properties, on the "Class" tab to see its object name if you are unsure.

Document Type
The various "Edit Options" (see below) vary depending on the type of document you are going to load ( and hence edit ).  Select the document type here.

Edit Option
Select one of the options from the drop list, e.g. "Find", "Copy" etc.

NOTE: For an example, have a look at the "Advanced_feBrowser_CodeTemplates" procedure in the feabc.app examples.

     


CallFe_LoadMethod
  Summary  
Control Template
To Do
Optional
What does it do?
In order to use this code template, you must have already populated one of the Viewer Controls onto your window.  Use this template ( typically in the event::accepted for a button ) to load a file into an existing Viewer Control.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
To Do
What are my options?

Parent Object
This drop list lists all the current File Explorer objects which are present in your procedure.  Select the object which should load this file.  Look in the Viewer Control's properties, on the "Class" tab to see its object name if you are unsure.

File to Load
Enter the name of the file which you want to load ( e.g. c:\MyFile.htm ).

Is Variable
If you have entered a variable in the "File Name" field above, then check this option.

Treat Unknowns As
( Obsolete )

NOTE: For an example, have a look at the "Advanced_feBrowser_CodeTemplates" procedure in the feabc.app examples.

     


CallFe_MediaAPIMethod
  Summary  
Control Template
Optional
What does it do?
The template is typically used to play MP3 files in the "background" while your app is running (you don't lose focus while the file plays).  It is typically used behind a button, but could also be used as your window opens to start playing an MP3 file "automatically" as the window opens.  The code generated by this template calls functions in the File Explorer dll, which in turn implement the MCI (Windows Media Control Interface API), so no File Explorer objects need to be instantiated, and you do NOT need to have Windows Media Player installed, as we do not use the Media Player ocx at all here, only standard Win32 API calls.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
See the feMedia_MCIExamples procedure in the feabc.app example application that ships with File Explorer.
What are my options?

Option
This drop list lists all the options that the "MediaApi" method exposes.  Pick one.

File Name
If you select the option "Play MP3" option from the "Option" drop list, then use this field to enter the name of the MP3 file which you wish to play, e.g. c:\myfile.mp3.  If you selected "Stop MP3" from the above drop list, then simply leave this field blank.

Is A Variable
If you enter a variable in the "File Name" field above, then check this option.
 

     


CallFe_NavigateMethod
  Summary  
Control Template
To Do
Optional
What does it do?
In order to use this code template, you must have already populated one of the Viewer Controls onto your window.  Use this template ( typically behind a button ) to implement the File Explorer "Navigate" method, and navigate to a specific page within the loaded document.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
To Do
What are my options?

Parent Object
This drop list lists all the current File Explorer objects which are present in your procedure.  Select the object which should load this file.  Look in the Viewer Control's properties, on the "Class" tab to see its object name if you are unsure.

Navigate To
Choose one of the positions to navigate to.  Note that the "Go Back 1" and "Go Forward 1" options may behave differently depending on the type of file you are navigating.  Typically these will navigate to the previous / next page or frame.

PageNumber
If you select "SpecificPage" as you "Navigate To" option, then you need to enter the page you want to navigate to in this field.

NOTE: For an example, have a look at the "Advanced_fePDF_CodeTemplates" procedure in the feabc.app example application.

     


Declare FE Object
  Summary  
Control Template
To Do
Optional
What does it do?
This very simple code template simply instantiates (in code) a new object for the File Explorer class.  When you use the "main" control templates (Viewer Controls etc) they create File Explorer objects for you, which you could then reference from your own code ( eg. ThisViewer1, ThisViewer2 ... ).  You may want to write code that references the File Explorer class in a procedure which does not already have any File Explorer templates present, in which case you could either make (instantiate / declare) the object yourself, or simply use this template.
Prerequisites
You need to have added the Active_File_Explorer global extension template to your application.
How do I implement it?
To Do
What are my options?

Object Name
Defaults to "ThisViewer1".  You can rename the object if you prefer something else.  All objects within the same procedure must have unique names.

Object Type
Select an object type from the drop list.

NOTE: For an example, have a look at the "About" procedure in the feabc.app example.

     

 

Dll Functions

Below are various functions that can be called from anywhere inside your application, so long as you have added the File Explorer Global Extension template.

fe_ClassVersion
fe_DebugString
fe_GetHtmlGraphicsInfo
fe_GetIEVersionInfo
fe_GetOSVersionInfo
fe_GetRegValue
fe_MCIPlay
fe_MCIStop
fe_OnlineStatus
fe_OnlineStatusConnectionName
fe_ShellExecute
fe_StartIE
feDispose


Dll Functions
 
fe_ClassVersion     ( byte Flag=0 )

MyString = fe_ClassVersion ( ) ! eg. '3.12'
MyString = fe_ClassVersion (1) ! eg. '48'
MyString = fe_ClassVersion (2) ! eg. '3.12 Beta'

  • This method returns a string, containing File Explorer version information.
  • The information it returns depends on the (optional) Flag parameter.
    • If you pass no parameter, or the value 0, the method returns the File Explorer Class Version - as seen at the top of the documentation.
    • If you pass the value 1, the method returns the incremental dll version, as explained in the File Explorer Version Numbers section of the docs.  This is useful for checking the dll version in your app, as you can use mathematical operators on the value that is returned.
    • If you pass the value 2, the method returns a descriptive string containing the version details (as shown above).
 
fe_DebugString  (string DbgMessage)
fe_DebugString ('Hello World')
  • See the section titled Using DebugView.  This sends a debug message from within your own app.  Useful extra.
 
fe_GetHtmlGraphicsInfo  (*cstring HtmlSource)
( not yet implemented )
 
fe_GetIEVersionInfo  ( byte pTranslate=false ) ,string
loc:TempString = fe_GetIEVersionInfo() ! 4.72.3612.1713
loc:TempString = fe_GetIEVersionInfo(true) ! Internet Explorer 4.01 SP2
  • Returns the currently installed version of Internet Explorer.
  • If you pass true (1) for the pTranslate parameter, then the product name will be returned (if possible) - see the examples above.
  • See the Internet Explorer Version Info section for more info.
 
fe_GetOSVersionInfo     ( ),string

loc:TempString = fe_GetOSVersionInfo()
if loc:TempString [3:4] = '95'
...
loc:BuildNumber = loc:TempString [16:19]
DisplayTextForScreen = left(loc:TempString)

  • This function returns the current Operating System.  The syntax of the string returned is as follows:OS.MajorVersion.MinorVersion.BuildNumber; e.g.  NTS.0005.0001.0000.  We always return the string in the format XXXX.XXXX.XXXX.XXXX, to make string processing easier (i.e. ReturnString[1:4], ReturnString[6:9], ReturnString[11:14], ReturnString[16:19] ).  Note that the OS component could be preceeded by blank spaces ( e.g. "  95" ) to make string processing easier, while the remaining components will be preceeded by zeros ( 0 ) if they are not 4 characters long, or will be clipped to the first four characters if they are longer.  This may sound complicated but it makes coding much easier (as illustrated above).
  • The OS component of the string returned will be one of the following:
    •   31  (Windows 3.1)
    •   95  (Windows 95)
    •   98  (Windows 98)
    •   ME  (Windows Millennium)
    •  NTW  (NT Workstation)
    •  NTS  (NT Server)
    • W2KP  (Windows 2000 Professional)
    • W2KS  (Windows 2000 Server)
    • 0000  (Four zeros indicates an unknown OS, please notify support@capesoft.com)
 
fe_GetRegValue  (string ParentFolder, string NameOfKey, string NameOfValue) ,string
MyString = fe_GetRegValue ('HKEY_CURRENT_USER', 'Software\Microsoft\Internet Account Manager', 'Default Mail Account' )
  • Reads a value from the Windows registry.
 
fe_MCIPlay     ( string pFileName ) ,byte
fe_MCIPlay ('c:\test.mp3')
  • Every MCI (Media Control Interface) multimedia device supports a core set of MCI commands in a way that makes sense for that device. For example, the play ( MCI_PLAY, see MSDN for more info on the various Windows' API calls for this ) command causes the open device to play a file or track, no matter what kind of data the device works with. File Explorer has wrapped up a lot of this functionality into two simple functions which you can call from anywhere in your Clarion application, fe_MCIPlay and fe_MCIStop.
  • fe_MCIPlay is used to play a variety of sound or video files, including MP3's (see the example above).
 
fe_MCIStop     ( <string pFileName> ) ,byte
fe_MCIStop ()
  • Every MCI (Media Control Interface) multimedia device supports a core set of MCI commands in a way that makes sense for that device. For example, the play ( MCI_PLAY, see MSDN for more info on the various Windows' API calls for this ) command causes the open device to play a file or track, no matter what kind of data the device works with. File Explorer has wrapped up a lot of this functionality into two simple functions which you can call from anywhere in your Clarion application, fe_MCIPlay and fe_MCIStop.
  • fe_MCIStop is used to stop playing whatever file you started playing by calling the fe_MCIPlay function.
  • The omittable pFileName parameter is not currently supported, simply call this function as documented in the example above.
 
fe_OnlineStatus     ( byte pOption=0 ) ,byte
fe_OnlineStatus() ! see below
  • This function's purpose is to establish whether you are currently connected to the internet.  The behaviour / result of the function is determined by the parameter pOption.
  • If pOption is omitted (or passed as zero), this function will simply return true (1) or false (0), indicating whether you are connected or not.
    if fe_OnlineStatus() = 1
      message ('I am connected!')
    end
  • If pOption is passed as 1, 2, 3 or 4, this function returns the following:
    • pOption=1; returns true / false indicating whether the local system is in offline mode
    • pOption=2; returns true / false indicating whether the local system uses a modem to connect to the internet
    • pOption=3; returns true / false indicating whether the local system uses a local network area to connect to the internet
    • pOption=4; returns true / false indicating whether the local system uses a proxy server to connect to the internet
    if fe_OnlineStatus(4) = true
      message('You are connected through a Proxy Server')
    end

  • If the function returns a negative number it indicates that an error occurred.
 
fe_OnlineStatusConnectionName     ( byte pOption=0 ) ,string
fe_OnlineStatusConnectionName()
  • Use the fe_OnlineStatus function to establish whether you are connected to the internet.  Use this function (fe_OnlineStatusConnectionName) if you want to know the name of the current connection (assuming there is one).
 
fe_ShellExecute  ( string Parm1 )
( "Semi-private" function, called by the fe_StartIE function, wraps the ShellExecute API function )
fe_StartIE     ( string URL )
fe_StartIE ('www.CapeSoft.com')
  • This function simply uses the ShellExecute API call to launch Internet Explorer and load a webpage.
  • TIP: Have a look in feabc.app's "Comments" procedure to see how to use this function to make urls on a window "live"...
feDispose     (  )
feDispose()
  • This function is used to clean up after File Explorer, and is called by the Global Extension Template as your app closes, to make sure File Explorer does not cause any memory leaks.

 

 
     


 

Useful References

Tips & FAQ

Note: The old "Tips and FAQ" section can be found in the "fe_oldFAQs.htm" document.  This section is being rewritten for the new classes.

General / Product FAQ's

1.1 When I click on the "Help" button for a template (Actions tab) I get an error saying "The topic file does not exist.  Contact your application vendor for an updated Help file"...
You have an old copy of the File Explorer help file (c55fex.hlp).  Search for all copies of this file, delete all of them, then reinstall the latest version of File Explorer.

1.2 "Link Error: Unresolved External Fe..." - how to handle these (compile) errors...
Several users who are using MultiProj to generate dlls which contain File Explorer have asked about this.  In your app's Global Extensions, go to "Activate MultiProj Support", to the "Versions" tab, "Properties", "Resources", and make sure that you've included "c55fex(l).lib" as a resource.

1.3 Compile errors?
a) See the section "Considerations if upgrading...".

b) Also, check that your app is 32 bit, that you don't have bits of an old version of FE lying around, and that your redirection file is pointing to the paths where File Explorer is installed (3rdParty/bin, 3rdParty/libsrc etc).

c) Also, there seems to be an issue whereby some C55 installations (only C55 "G" as far as I know) have a window.tpw file which does not set up the %LocalClassDefinition embed point, which our templates use.  It might be caused by running the "gold to G" patch, but this has not been confirmed.  You can download the correct version of window.tpw by clicking here.

1.4 Having multiple Viewer Controls on one window...
No issues, please upgrade to version 2.9 or later.

1.5 Since upgrading my app won't compile - I get a compile error saying "Syntax error: Illegal data type" FEOLDBROWSER"
If you get this please email us at support@capesoft.com.

1.6 Is there a way to see if a user has a live internet connection?
Yes.  Have a look at the fe_OnlineStatus function.

1.7 I have a procedure that contains a File Explorer control.  I pass a filename to this procedure and the control loads it.  It used to work fine, but now it isn't working (loading the file)!  What's happened?
In one of the earlier versions of File Explorer we used to initialize the onjects in ThisWindow::Init (after the window opens).  Due to complications with some objects we moved this code (template generated) to after the event "after window opens".  We sent out an email to let everyone know at the time..

1.8 On one of my test machines FE runs perfectly.  On another machine the window containing the File Explorer control croaks as soon as it opens.  Any ideas?
A user reported this and it turned out to be that he had an old version of the Windows "OLEPRO32.DLL" in his testing directory.  Once he removed that dll all was fine.

1.9 I've noticed that in my c55\3rdParty\examples directory there is one folder called "FileExplorer" and another called "File Explorer"...
Please delete the one called "FileExplorer" (one word), it is from an early version of File Explorer - sorry about that..

1.10 I'm getting an error message "Entry Point Not Found / procedure entry point could not be located in the DLL PWUtil.dll"
Your app is using an old version of the file called "pwutil.dll".  Use whichever version of this dll shipped with the version of File Explorer that you used when compiling the app.

1.11 I've heard that some Developers are using File Explorer with a Panel control rather than the Clarion OLE control, what's up with that???
This FAQ is no longer a recommended FAQ, since build 3.70 Gold you must change all old OLE controls to be PANEL controls or you will get compile errors.  Click here for more information on this and for instructions on how to do this.

1.12 Is it possible to use SetPosition to move a File Explorer Viewer control?  I can't get it to work...
Yes, but because of how we built File Explorer if you ever move or resize or hide or unhide the Panel control you need to tell File Explorer that you have done so, using our Resize method, as follows:
   SetPosition (?feControl, 50, 50, 200, 250)
   ThisViewer1.Resize()

FeBrowser FAQ's

2.1 When I try to browse a web page File Explorer does not "trigger" my "dial up networking" window!  It just says that it can't find the webpage.
Enable the Dial Up Networking features from your Global Extension options.

2.2 I need to implement Callback events for the feBrowser object, where do I start?
Have a look at the "Advanced_feBrowser_SimpleCallbacks" procedure in the feabc.app example application.

2.3 I need to know when the loading page is done.
Check the feDemo example application the Callbacks examples for the browser demonstrate the use of the DocumentComplete callback. Also see DocumentComplete in the feBrowser documentation.

2.4 Can I detect when the control is going to load a new page, then change the url so it navigates to a different page?
Yes!  How cool is that!  Have a look at the "Advanced_feBrowser_SimpleCallbacks" procedure in the feabc.app example application.  That example also shows how to simply cancel navigation to certain urls.

2.5 When I set ?feControl{prop:hide} the WebBrowser control is not hiding...
This is because unlike some of the File Explorer objects, the WebBrowser does not actually use the Clarion OLE control - we simply get window coordinates from its position and then create our own control "on top of it".  There are two methods which you can use to hide / unhide a File Explorer control, but they are not yet documented (work in progress).  See the feabc.app demo application's "Advanced_feBrowser_TwoViewers" procedure to see how to do this.

2.6 "My app is working great on hundreds of installations, except one PC, where calling the FE window GPF's the app!  Any ideas?"
A client reported this to me and all that fixed the problem was to have the client install all the latest IE critical updates from Microsoft.  The case mentioned above was an installation of IE 6.0.2800.1106, on a Win 2K box.

2.7 I'm using File Explorer to complete a form...  One of the text fields seems to be "un-settable"...
Use the feabc.app examples' "Accessing the DOM" example procedure to get a list of all the elements on the page.  If the element you're trying to set is of element type "file" in the list, it is actually an HtmlInputFileElement (the html around that field will look like this: <INPUT type="file"... ), which Microsoft seem to have made a read-only object since Internet Explorer 5.0, for "security reasons".  If anyone knows a way around this please let me know, otherwise there's not a lot that we can do here...

2.8 When I browse a webpage I get an "Internet Explorer Script Error" message popping up...  Can I stop this from happening?
Yes.  Have a look at the feBrowser::Update method, for the option called "SilentMode".

2.9 I have some html in a variable and I want the user to view it but not edit it.  Is this possible?
Absolutely.  At this stage only the feHtmlEditor object can load html directly from a variable (although we are working on the Browser).  You will need to use the feBrowser::VarToFile method to create a temporary file from the html in the variable, then use the feBrowser::Load method to load that temporary file into the File Explorer control.

2.10 Is it possible to disable the popup menu in Internet Explorer (i.e. when a user right-clicks on a page)
Yes.  There are two approaches to doing this.  The first approach involves implementing the IDocHostUIHandler interface, which we plan on doing in a future release (which would enable us to actually add items to the popup menu, but requires a fair amount of time to code).  The second approach is to simply use javascript.  The javascript approach works well, but will obviously require you to add some script to your html pages.  An example of how to do this can be found in the 3rdParty\Examples\File Explorer\Demo folder, as an html file called "no_popup_menu.htm".

2.11 In your feGoogle.app example you use File Explorer to fill in a search string and press the "Search" button on the Google site.  Can I send the search string "directly" instead?
Yes.  Use the Load method as follows:
ThisViewer.Load ('http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=%2BCapeSoft+%2BSoftware&btnG=Google+Search')

2.12 Does the feBrowser.Load method do a HTTP Post or a HTTP Get?
If you pass a string in the pPostData parameter the method will do a Post, otherwise it does a Get.

2.13 Is it possible to set which printer the WebBrowser control prints to without user intervention?
The PrintMe method prints the currently loaded document.  If you call PrintMe(false) the document goes straight to the default printer.  The only way we've found to change this behaviour (i.e. print to another printer) is by temporarily changing the default Windows printer.  This will affect other software so only do this is you really need to.  In the ThisViewer.PrintMe method, before the parent call, you would code as follows:

TempString = fe_GetRegValue ('HKEY_CURRENT_USER', 'Software\Microsoft\Windows NT\CurrentVersion\Windows', 'Device')
self.SetRegValue ('HKEY_CURRENT_USER', 'Software\Microsoft\Windows NT\CurrentVersion\Windows', 'Device', 'Fax602,winspool,FAX:')

and then after the parent call you need to restore the default printer to what is what originally, as follows:

self.SetRegValue ('HKEY_CURRENT_USER', 'Software\Microsoft\Windows NT\CurrentVersion\Windows', 'Device', TempString)

Note: This example will not work on all versions of Windows, a google search will reveal where the various versions of Windows store this setting in the Registry.

2.14 The GetInfo method can return the full html for the loaded page, using OuterHtml as the parameter I pass in.  What if I only want a certain part of the html (for instance, the '<body>' tag) ?
Get the full html using GetInfo, then use INSTRING to get what you need from that html.

2.15 I want to use FE to fill in a form on a website, but the page does not appear to have any elements.  Any ideas?
Use the feabc.app example's "feBrowser_DOM" procedure to get a list of the page's elements.  If no elements are listed, set the "frame" spinbox on that example to 1, then 2, then 3 etc to make sure there aren't frames.  Also right-click next to the fields you want to fill in, and choose "Properties" (in Internet Explorer) and check the URL.  Sometimes login screens load separate html pages "inside" the parent page - if this is the case use that address (URL).

2.16 I am getting crashes opening certain pages multiple times.
If you are having problems with pages crashing when closing and then reopening a web site then please make sure the setting on the FileExplorer Extension "Implement Delayed Close" on the "BrowseHTML" tab is on. This is now the default option, however for existing controls it should be set manually when needed.

FeHtmlEditor FAQ's

3.1 How can I get a "new page" when using the feHtmlEditor object?
Since version 2.4b, there is a method called NewDocument.  See the notes on that method.  The Html Editing buttons (control template) also started including a "new" button from that version, but you'll need to delete and repopulate the buttons if you populated them before version 2.4b.

3.2 Is it possible to load html into the feHtm