CapeSoft.Com
Clarion Accessories
FileExplorer
Documentation
CapeSoft Logo

CapeSoft File Explorer
Documentation

Download Latest Version FAQ History
Installed Version Latest Version

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\Editor Files\. See the Distribution section for more information.

License& Copyright

This template is Copyright by CapeSoft Software, 2019. 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 CC, 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/accessories/downloads.htm) for new versions. You can also contact us in one of the following ways.

CapeSoft Support
Email
Telephone +27 21 715 4000
Fax +27 21 715 2535
Post PO Box 511, Plumstead, 7801, Cape Town, South Africa
File Explorer may be purchased from:
CapeSoft Sales
Web www.capesoft.com
Email sales at capesoft dot 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, Windows 7 and Windows Server 2008.

The Browser control works well with Internet Explorer 5.5 through to 8 and above, the Media Player supports Windows Media Player 6 through to 11 and above, and the PDF and Flash viewers use components provided by Abode (Adobe Reader and Flash Player respectively).

The current HTML editor (feEditor) relies only on Internet Explorer. We recommend IE 7 or above for maximum functionality and security.

The old (deprecated) 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 redistributable, which can be shipped with your application. The FileExplorer installer places a copy of the Microsoft MSI redistributable in \Clarion\3rdparty\bin\DhtmlEd.msi. This can be included with your installer, and can be run silently. We recommend using the new HTML editor provided by FileExplorer, which is faster, more flexible, standards compliant (CSS, xhtml etc.), and simple to configure and customise. It also does not rely on anything other than Internet Explorer.

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) Microsoft Internet Explorer (5.5 or later) icon
Adobe Acrobat Reader (4 or later) Adobe Acrobat Reader (4 or later) icon
Windows Media Player (6.4 or later) Windows Media Player  (6.4 or later)
Adobe Flash Player 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.
select extension screenshot

  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\Editor Files\. See the Distribution section for more information.

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 there are two examples of using FileExplorer and NetTalk:

  1. EmailHtml - Clarion\3rdparty\examples\FileExplorer\EmailHtml\

    This demonstrates loading and HTML from disk using the feFile class; embedding images using feEditor; automatically creating a text version (the example uses NetWebClient, however the feBrowser class provides an excellent option for doing this); and of course, sending the email with the HTML part, text part, and any local images embedded.
  2. FE and Nettalk - Clarion\3rdparty\Examples\File Explorer\FEand NetTalk\

    A simple demonstration of 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.
What 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 Flashon 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
Sets 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.

Show 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
No 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

fe_ClassVersion

fe_ClassVersion ( byte Flag=0 )

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

fe_DebugString

fe_DebugString (string DbgMessage)

Description
Example
Example
fe_DebugString('Hello World')

fe_GetHtmlGraphicsInfo

fe_GetHtmlGraphicsInfo (*cstring HtmlSource)

( not yet implemented )

fe_GetIEVersionInfo

fe_GetIEVersionInfo ( byte pTranslate=false ) ,string

Description
Example
Example
loc:TempString = fe_GetIEVersionInfo() ! 4.72.3612.1713
loc:TempString = fe_GetIEVersionInfo(true) ! Internet Explorer 4.01 SP2

fe_GetOSVersionInfo

fe_GetOSVersionInfo ( ),string

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

fe_GetRegValue

fe_GetRegValue (string ParentFolder, string NameOfKey, string NameOfValue) ,string

Description
Example
Example
MyString = fe_GetRegValue ('HKEY_CURRENT_USER', 'Software\Microsoft\Internet Account Manager', 'Default Mail Account' )

fe_MCIPlay

fe_MCIPlay (string pFileName ) ,byte

Description
Example
Example
fe_MCIPlay ('c:\test.mp3')

fe_MCIStop

fe_MCIStop (<string pFileName> ) ,byte

Description
Example
Example
fe_MCIStop ()

fe_OnlineStatus

fe_OnlineStatus ( byte pOption=0 ) ,byte

Description
Example
Example
fe_OnlineStatus() ! see below

fe_OnlineStatusConnectionName

fe_OnlineStatusConnectionName ( byte pOption=0 ) ,string

Description
Example
Example
fe_OnlineStatusConnectionName()

fe_ShellExecute

fe_ShellExecute ( string Parm1 )

Description

( "Semi-private" function,called by the fe_StartIE function, wraps the ShellExecute API function )

fe_StartIE

fe_StartIE ( string URL )

Description
Example
Example
fe_StartIE ('www.CapeSoft.com')

feDispose

feDispose()

Description
Example
Example
feDispose()

Support for Adobe Reader 11.0.7

A couple of weeks ago Adobe released a "minor" update to Adobe Reader, version 11.0.07.
Unfortunately this build effectively drops support for directly embedding PDF's in Win32 programs.
This will affect Clarion programmers using the File Explorer PDF control in the app. All File Explorer versions, and all Clarion versions are affected.
 
Immediately after the release a number of threads about this issue appeared on the Adobe forums. This is affecting all existing Win32 programs, especially those written in VB6 and Delphi (not to mention Clarion) and is impacting users of apps that are no longer supported. At first Adobe appeared to be surprised by the problem, but the responses since then have been less encouraging that a fix will be found. (1)
 
Indeed a document issued into the knowledgebase appears that they have closed this subject, unfortunately without sorting out the root problem;
http://helpx.adobe.com/acrobat/kb/vb-60-64-bit-issue-11007.html
 
Indeed their document contains this simple gem;
"Because VB 6.x offers no 64-bit support, applications built with the VB6 environment no longer work."
 
So if you're running a VB6 app which includes the use of the Adobe OCX control - well, bummer for you. And the prognosis for Clarion programs is not a lot better (2).
 
Of the suggested work-arounds the one which seems to be the most practical is to simply swap the PDF control to a Browser control, and then open the PDF document in the browser. This approach requires a recompile of your application, but does not require any update to File Explorer.  This change is trivial to implement (3) and will work for cases where you are just displaying the PDF - and allowing the user to navigate using the PDF viewer controls. At this stage it is not clear if any interactions with the PDF are possible - for example where you have created your own navigation or print buttons.

update (26 may): Peter Hermansen points out that another option is to open the PDF control outside the application in the PDF Reader itself. This can be done with the call fe_shellExecute(PdfFileName)
 
In the short term users who have upgraded to 11.0.7 can install either version 10.x (4) or 11.0.6 (5) as a temporary fix - however it's unlikely they will be able to remain on these old versions for ever.
 
(1) : Some threads about this issue on forums.adobe.com;
https://forums.adobe.com/thread/1475449
https://forums.adobe.com/message/6390890
https://forums.adobe.com/thread/1474731
https://forums.adobe.com/message/6400731
https://forums.adobe.com/message/6381248
 
(2) There is a _possibility_ that it may be possible to use what they are shipping directly in a Clarion app - we are looking into this, but honestly at this point I am not hopeful. Also, any possible fix we find in this area is likely to involve the need to release a  new build of File Explorer. This would almost certainly be a problem for Clarion 6 users - I'm not sure we have the ability to make Clarion 6 builds anymore.
 
(3) Go to the Procedure Extensions, to the File Explorer Extension. On the General Tab, in the Object Type section, unselect the PDF (fePDF) option and select the HTML Browsing (feBrowser) option.
 
(4) Installing Adobe 10.x
a) Uninstall Adobe 11.0.7.
b) Make sure the folder C:\Program Files (x86)\Common Files\Adobe\Acrobat\ActiveX has been deleted (or  C:\Program Files \Common Files\Adobe\Acrobat\ActiveX  for 32 bit versions of Windows.)
c) http://get.adobe.com/uk/reader/download/?installer=Reader_10.1.4_English_for_Windows&os=Windows%207&browser_type=KHTML&browser_dist=Chrome&d=McAfee_Security_Scan_Plus_Chrome_Browser&dualoffer=false
 
(5) Installing Adobe 11.0.6
a) Uninstall Adobe 11.0.7.
b) Make sure the folder C:\Program Files (x86)\Common Files\Adobe\Acrobat\ActiveX has been deleted (or  C:\Program Files \Common Files\Adobe\Acrobat\ActiveX  for 32 bit versions of Windows.)
c) download and install 11.0.0 from http://www.adobe.com/support/downloads/detail.jsp?ftpID=5507
d) Then install the 11.0.6 update (manually) from http://www.adobe.com/support/downloads/detail.jsp?ftpID=5716

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"...
1.2 "Link Error: Unresolved External Fe..." - how to handle these (compile) errors...
1.3 Compile errors?
1.4 Having multiple Viewer Controls on one window...
1.5 Since upgrading my app won't compile - I get a compile error saying "Syntax error: Illegal data type" FEOLDBROWSER"
1.6 Is there a way to see if a user has a live internet connection?
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?
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?
1.9 I've noticed that in my c55\3rdParty\examples directory there is one folder called "FileExplorer" and another called "File Explorer"...
1.10 I'm getting an error message "Entry Point Not Found / procedure entry point could not be located in the DLL PWUtil.dll"
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???
1.12 Is it possible to use SetPosition to move a File Explorer Viewer control? I can't get it to work...

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.
2.2 I need to implement Callback events for the feBrowser object, where do I start?
2.3 I need to know when the loading page is done.
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?
2.5 When I set ?feControl{prop:hide} the WebBrowser control is not hiding...
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?"
2.7 I'm using File Explorer to complete a form... One of the text fields seems to be "un-settable"...
2.8 When I browse a webpage I get an "Internet Explorer Script Error" message popping up... Can I stop this from happening?
2.9 I have some html in a variable and I want the user to view it but not edit it. Is this possible?
2.10 Is it possible to disable the popup menu in Internet Explorer (i.e. when a user right-clicks on a page)
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?
2.12 Does the feBrowser.Load method do a HTTP Post or a HTTP Get?
2.13 Is it possible to set which printer the WebBrowser control prints to without user intervention?
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) ?
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?
2.16 I am getting crashes opening certain pages multiple times.
2.17 My website looks different when displayed in the FE browser in comparison with the IE browser installed.
2.18 I get a js error where it looks like FE is not asking for the correct js file (encrypted characters are in the filename).

FeEditor FAQ's

3.1 How can I get a "new page" when using the feditor object?
3.2 Is it possible to load html into the feEditor control, where the html contains images???
3.3 I need to implement Callback events for the feEditor object, where do I start?
3.4 Does the FeEditor object allow me to save the html I'm editing to a database field? I don't want to have to write to a file and then save that file in a database.
3.5 Does the FeEditor have a "Save As" method?
3.8 Is there a way to check whether a page which I load has been edited by the user?
3.9 On one machine the feEditor Control just doesn't work at all - or displays a message "Cannot find 'file:////T://feEditor.html". Make sure the path o Internet address is correct"
3.10 Is it possible to get cleaner code back from the html, or without so much white space?
3.11 The Editor gives me a strange path in the image URL.
3.12 I get different html code back (some with strange characters) back from the editor when using different PCs.
3.13 On one computer, no images are displayed (just show up with a red X). How do I fix this?
3.14. When I open the Editor window, my application crashes on certain PCs.

FePDF FAQ's

4.1 When I load a PDF file I get an error message saying "There was a version error trying to launch the pdf control, version error 6.x"
4.2 I have the fePDF object on a tab. Each time I select another tab then return to that one my document has disappeared!
4.3 The PrintMe method does not seem to work!
4.4 I can't seem to view PDF files...
4.5 I get a GPF when I try and load a PDF file
4.6 I've disabled the toolbar, but I still get the floating toolbar, which offers me the ability to turn the toolbar on. How do I disable this?

FeMedia FAQ's

5.1 When I type a filename into the Entry control and press the Tab key it loads, but if I press the Enter key nothing happens...
5.2 How do I know when a music file has finished playing so that I can load another one from code?

NetTalk / FileExplorer FAQ's

6.1 I am using NetTalk and File Explorer to write an email program. I'm having a problem getting something to work...
6.2 How do I embed images into the mail composed by FileExplorer?

The undocumented feStorage Class FAQ's

7.1 I am using the feStorage class, but it does not work with the current version.

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. Contact  for the template.

1.4 Having multiple Viewer Controls on one window...
You may need to INIT the controls at window open and close at kill. Basically, you should only call the kill method for the controls that were inited.

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  .

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". You need to do the following in order to hide the control:

?feControl{prop:hide} = true
ThisViewer1.hidecontrol(1) !Where ThisViewer1 is the name of the FileExploreBrowser object in your procedure.

To unhide the control:

?feControl{prop:hide} = false
ThisViewer1.unhidecontrol(1) !Where ThisViewer1 is the name of the FileExploreBrowser object in your procedure.

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". See also question 2.18.

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.

2.17 My website looks different when displayed in the FE browser in comparison with the IE browser installed.
IE seems to default to IE7 mode when the page does not explicitly say it's ready for IE10 - when the control is embedded in a program. This is best dealt with on the server side. If your webserver is built with NetTalk, then you need to upgrade your webserver to use NetTalk version 7.17 which has a work-around for this. Otherwise, you need to request the webserver administrator, to add the following meta-tag in the html header:

'<meta http-equiv="X-UA-Compatible" content="IE=10" />'

See also question 2.18

2.18 When I browse to some sites, I get a script error. I can suppress it (see question 2.8) but then some of the functionality on the page is lost. I don't have access to the server to alter the page on the server side (as per question 2.17).

The root of the problem is that the IE control in your program defaults to IE7 Quirks mode, and many sites have dropped support for this now.

You can read about it in a lot more detail here;
http://www.west-wind.com/weblog/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version 

You need to set 2 keys in the Windows Registry - one in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
and the other in
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

Computer\HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

The Name of the item is the name of your Exe. (it does not appear to be case sensitive.) The name must include the .exe part.
The type is a REG_DWORD.
The Value is one of the following;
(see https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx for the latest list)

11001 (0x2AF9) : Internet Explorer 11. Webpages are displayed in IE11 Edge mode, regardless of the !DOCTYPE directive.
11000 (0x2AF8) : Internet Explorer 11. Webpages are displayed in IE11 standards mode, regardless of the !DOCTYPE directive.
10001 (0x2711) : Internet Explorer 10. Webpages are displayed in IE10 standards mode, regardless of the !DOCTYPE directive.
10000 (0x2710) : Internet Explorer 10. Webpages are displayed in IE10 standards mode if there is a !DOCTYPE set.
9999 (0x270F) : Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
9000 (0x2328) : Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode.
8888 (0x22B8) : Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
8000 (0x1F40) : Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode.
7000 (0x1B58) : Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode.

The safest one to pick is likely 7000 (because there are some differences between the COM controls from IE7 to 8 to 9 to 10. However the differences are _unlikely_ to affect you - so experiment with 11000 or 11001.

Because this is in the registry (which thus means either admin rights, or running elevated) this is probably something you want to set in your installer. Setting it from inside the program is not ideal.

FeEditor FAQ's

Please see the feEditor documentation for usage of the feEditor, along with guides, example and documentation for all class methods.

3.1 How can I get a "new page" when using the feditor object?
Call the NewDocument method. Note that you do not need to call NewDocument unless you wish to clear the existing document and create a new one, as the editor starts with a new blank document. Also note that the EditorReady method must have been called before you can call any of the editor methods.

3.2 Is it possible to load html into the feEditor control, where the html contains images???
The HTML does not contain images, it simply links to them. You can call the SetHtml() method to load HTML from a string into the editor, or the Load() method to load an HTML file.

3.3 I need to implement Callback events for the feEditor object, where do I start?
The editor always has callbacks implemented see the Callbacks and Events documentation

3.4 Does the FeEditor object allow me to save the html I'm editing to a database field? I don't want to have to write to a file and then save that file in a database.
Yes, you call SetHtml to set the HTML for the editor and GetHtml to retrieve the HTML from the editor. The documentation for both methods includes example code which stores and retrieves HTML from a field in a database.

3.5 Does the FeEditor have a "Save As" method?
Yes, see the feEditor.SaveAs documentation.

3.8 Is there a way to check whether a page which I load has been edited by the user?
Use GetHtml to retrieve the HTML from the editor. The HTML content can be compared against the original content to check for changes.

3.9 On one machine the feEditor Control just doesn't work at all - or displays a message "Cannot find 'file:////T://feEditor.html". Make sure the path o Internet address is correct"
The editor requires the feeditor.html file and feeditor directory. See the Distribution section of the documentation. Note: In some circumstance you cannot use a mapped drive for the feEditor.html path, this will cause the "Cannot find" error.

3.10 Is it possible to get cleaner code back from the html, or without so much white space?
No, the editor returns what the HTML DOM provides. White space is ignored, and compresses well, so there is no real need to remove it. You can remove extraneous white space if you need to, in fact CapeSoft StringTheory has a 'squeeze' method which does just that.

3.11 The Editor gives me a strange path in the image URL.
The editor uses the path provided, it does not have any built in paths. It defaults to the current application path, unless the .editorPath property is set, in which case it uses that path as the default for the editor files.

3.12 I get different html code back (some with strange characters) back from the editor when using different PCs.
That would be the result of different versions of the DHTML editor and different character set and Unicode handling setting for the Operating Systems. If you are using invalid HTML characters (like the sterling pound sign) then you should encode that character, as they are invalid in HTML, and you can get a variety of incorrect rendering behaviours.

3.13 On one computer, no images are displayed (just show up with a red X). How do I fix this?
It is almost certainly a path or filename issue.

On the computer where it is not working, try putting the mouse over the image that has the X and right-click.  Then look at the Properties to see the filename and path. Most likely you will find it incomplete, or perhaps with an extra backslash between the path and name, or just plain wrong (referring to a path or drive that is not available on that machine).

Or perhaps the Internet Explorer Settings on that machine is set to "not display images". Run IE and see if you see images there (and for what "zones").

Or possibly the local intranet settings are disabling the loading of the image. Your settings should be set as follows:



3.14. When I open the Editor window, my application crashes on certain PCs.

Try updating windows. Sometimes there are windows patches that cause the IE control to crash. Also, make sure that you include compatibility more for Windows 8 (and up) for your application.

FePDF FAQ's

4.1 When I load a PDF file I get an error message saying "There was a version error trying to launch the pdf control, version error 6.x"
This was an incompatibility between FE and Internet Explorer 6. Fixed in File Explorer version 2.5c.

4.2 I have the fePDF object on a tab. Each time I select another tab then return to that one my document has disappeared!
This is an issue with the ole control. In the future we will redo the PDF object from scratch (which will hopefully take care of this problem); but until then have a look in the feabc.app example app, at the "MultpileObjects_Example1" procedure which shows how to fix this until then.

4.3 The PrintMe method does not seem to work!
As documented <g>, this method only works if you set the "Use Acrobat 4" setting in the template. See the docs.

4.4 I can't seem to view PDF files...
If you double-click on a PDF file in Windows Explorer does it open? Can you view PDF files on your computer using Internet Explorer? If not then the problem is with your Adobe Acrobat installation, not with File Explorer. We can't use components that are not installed, or are installed but not working. Try reinstalling Acrobat Viewer from adobe.com.

4.5 I get a GPF when I try and load a PDF file
There were a couple of versions of Adobe 9.5 that displayed this issue. Upgrading to Adobe 10 or higher should resolve this.

4.6 I've disabled the toolbar, but I still get the floating toolbar, which offers me the ability to turn the toolbar on. How do I disable this?
The floating toolbar only appears when a document is in "Read Only" mode. Adobe default settings state to open in "Read Only" mode. In Adobe under Edit/Preferences/Internet (on side bar menu) ensure that the "display in read mode" is unchecked. Now when opening document via FileExplorer with the toolbar hidden, the floating toolbar does not appear. Unfortunately (at the time of writing this) there is no access to manipulate this setting through the COM control.

A caveat: the above settings to Adobe are profile specific so if you login with profile 1 make changes, then login as profile 2 the settings are not there. Login as profile 1 again and they are still in effect.

FeMedia FAQ's

5.1 When I type a filename into the Entry control and press the Tab key it loads, but if I press the Enter key nothing happens...
This can be fixed by simply deleting the feMedia control from the window, closing the window, reopening the window, and repopulating the feMedia control.

5.2 How do I know when a music file has finished playing so that I can load another one from code?
Have a look at the feabc.app example --> under the FeMedia menu there is an example of how to use the EventCallback method to watch for when songs finish playing.

NetTalk / FileExplorer FAQ's

6.1 I am using NetTalk and File Explorer to write an email program. I'm having a problem getting something to work...
Have a look for the demo app called "fenetalk.app" that came with File Explorer. It's a simple app showing the basics of getting File Explorer and NetTalk to "work together", demonstrating how to use NetTalk to send and receive emails, and File Explorer to view and edit the emails.

6.2 How do I embed images into the mail composed by FileExplorer?
You need to call the EmbedImages method to modify the HTML and embed the images. The HTML needs to be modified so that the image references are in the embedded "cid" format. See EmbedImages for details.

The undocumented feStorage Class FAQ's

7.1 I am using the feStorage class, but it does not work with the current version.
This class has not been supported since FileExplorer 2, and has been permanently deprecated in FileExplorer 5. The functionality is trivial to implement, and examples will be provide of implementing this very simply.

Examples

When you install File Explorer, several demo applications are installed in your C55\3rdParty\Examples\File Explorer folder. These examples are listed below, in alphabetic order.

BackgroundPrint

Demonstrates loading a page and printing it in the background, without any user interaction required.

"Demo" (important) - abc, feabc.app
This is the main example application. It shows off most of File Explorer's objects and features. We highly recommend going over this example application.

"Demo Legacy" - legacy, feleg.app
This is similar to the feabc.app example, but is written using the legacy templates (not ABC), and doesn't show off nearly as many features as the feabc.app example. The same classes are used for both Legacy and ABC, so we recommend using the ABC example as your primary reference.

Editor Files (important)

This is not an example, but it contains the files that are required for the HTML editor. The contents of this folder should be copied to your application directory when using the editor.

EmailHtml (requires Nettalk) (new)

This demonstrates loading and HTML from disk using the feFile class; embedding images using feEditor; automatically creating a text version (the example uses NetWebClient, however the feBrowser class provides an excellent option for doing this); and of course, sending the email with the HTML part, text part, and any local images embedded. (this app will not compile unless you own CapeSoft NetTalk, available here).

Full Screen - abc, fullscrn.app
This example shows how to play a media file (movie) using the entire screen to show the movie.

LoadFromList

Loads the feBrowser from a Clarion List control. When an entry in the list is selected, that entry is loaded into the feBrowser control. This is one of the many common uses of the Browser control.

NetTalk (requires Nettalk)

This example shows the overlap between File Explorer and another CapeSoft product, called NetTalk (this app will not compile unless you own CapeSoft NetTalk, available here).

Office Inside - abc, FeOi.app
This app demonstrates how to integrate File Explorer with CapeSoft Office Inside (this app will not compile unless you own Office Inside, available here).

RtfToHtml (new)

Converts an RTF file to HTML using the feEditor object. The resultant HTML can be displayed or edited as required. Does not required any tools other than Clarion and FileExplorer, and only requires Internet Explorer to be installed on the machine. This is a Clarion 6 example, although the same technique can be used with any version of Clarion that FileExplorer supports (5.5 and up).

 

Upgrading from FileExplorer 4 to FileExplorer 5

FileExplorer 5 introduces a number of exciting new features (check out the What's new In FileExplorer 5 section in this doc for details), and at the same time we have built in backward compatibility.

What must I do to upgrade?

  1. You need to purchase an upgrade from www.clarionshop.com (Why is Capesoft charging for an upgrade?)
  2. Run the FileExplorer 5 installer (you've probably done that if you're reading this).
  3. By default any HTML editor controls will use the new feEditor class and any media controls will use the new feMediaPLayer2 class. If you want to use the old version of either of these controls, simply go to the local FileExplorer extension template and tick the checkbox to use the old version under the Actions for the control.
As much as possible the new classes implemented a backward compatibility layer, so most things will continue to work. The feMedia2 class has a number of areas where the functionality of the control changed to such an extent that there are no direct equivalents of the old methods, in this case class implements functionality that is as close to the old class as possible and calls the ErrorTrap() method with a warning message.

The documentation also lists which methods are still under construction, so if you come across something that is not working please email us so that we can correct the issue.

My saf password does not work on the latest File Explorer install. Where do I get a new password?

In File Explorer version 5.00 Capesoft introduced a paid-for upgrade, which means that the unlock code changed. You can continue using File Explorer 4 and downloading the necessary install files with your existing File Explorer 4 saf code, or you can upgrade to File Explorer 5 (and make the most of all the functionality offered in the File Explorer 5 package). For information on how to upgrade go to.

Considerations if upgrading from a version earlier than 3.70 Gold

Version 2.9 Beta of File Explorer saw the first changes that made the product non backward-compatible. After two years of evolution, we reached a point where our initial design was severely restricting future design, so we decided to clean things up and restructure File Explorer where necessary. Below is a list of what we've changed, the compile errors you will see, and explanations as to why we changed certain things and what you need to do to get your code to work. Version 3.70 Gold was the first Gold build in almost two years, and should see the end of changes that cause backward-compatibility issues. Below is an outline of what you need to change in your applications if upgrading from an old version of File Explorer (prior to 3.70 Gold), and a list of compile errors you could get and how to correct the code that causes these errors.

We followed the instructions below to convert our feabc.app example app, which contains over 40 windows which host FileExplorer controls, it took 7 minutes to make all the necessary changes and get it to compile...

What you need to do to your existing apps that use a version of FE earlier than 2.9 Beta

  1. Open each window (one by one) which contains a File Explorer Viewer control.
  2. File Explorer would have populated an entry control on this window ( see "A" below )...
  3. ...which will be "Use"-ing a variable called "fepath" ( see "B" below )...
  4. You need to change this as follows: If you only have one Viewer control on a window, change it from "fePath" to "?fePath1". If you have more than one Viewer control on a window, change the controls as follows; "?fePath1", "?fePath2", "?fePath3" etc. It doesn't matter if ThisViewer1 has ?fePath4 (although I'd recommend matching the use variables to the Object names to make the code cleaner), so long as each entry control has a unique use variable.
Entry properties screenshot

Compile Errors and how to fix them:

Compile Error 1Error:
Syntax error: Unknown identifier: FEPATH
Syntax error: Unknown identifier: FE_APPPATH
Syntax error: Unknown identifier: FE_LASTPATH
Syntax error: Unknown identifier: FE_CURRENTPATH
Syntax error: Unknown identifier: FE_CURRENTCONTROL
Syntax error: Unknown identifier: FEHEIGHT1
Syntax error: Unknown identifier: FEWIDTH1
Syntax error: Unknown identifier: FEHTML1BUSYRECOVERING
Syntax error: Unknown identifier: FEPRIORLASTEVENT

Cause:
You have written code that makes reference to one of the above variables (Fe_AppPath, Fe_LastPath, Fe_CurrentPath or FePath ) which no longer exist. Or, in the case of the FEPATH error, you need to run through the section above titled "What you need to do to your existing apps..."

Fix:
You need to replace any code where you refer to these variables with the new properties, as shown below:

Replace fe_AppPath with ThisViewer.fe_AppPath
Replace fe_LastPath with ThisViewer.fe_LastPath
Replace fe_CurrentPath with ThisViewer.fe_Path
Replace fePath with ThisViewer.fe_Path
Replace fe_CurrentControl with ThisViewer.fe_CurrentControl
Replace feHeight1 with ThisViewer.fe_Height
Replace feWidth1 with ThisViewer.fe_Width
feHtml1BusyRecovering (global variable) is no longer used, simply delete your code, it is no longer necessary.
fePriorLastEvent (global variable) is no longer used, simply delete your code, it is no longer necessary.

Note
: If your object is not called "ThisViewer" you will need to use its name instead. You can find out what an object is called by clicking on the "Object" tab, from the "Actions" tab or your File Explorer control. By default objects are named "ThisViewer1", "ThisViewer2" etc.

Compile Error 2

Error:
ASSERT: Procedure "(procedure name)" is using an OLE control, not a panel

Cause:
File Explorer started off using the Clarion OLE control. Due to stability issues, we eventually moved all code in File Explorer to use the Plugware OLE container code, so File Explorer no longer uses Clarion's OLE control at all. Any File Explorer controls that you added to your app prior to version 2.9 would have populated a Clarion OLE control onto your window, which now needs to be changed to a PANEL control.

Fix:
First, please backup your app. Once you have done that, simply go to each procedure that contains an old File Explorer control (which still uses an OLE control, not a PANEL - the compile errors above will list which procedures contain the OLE controls), right-click on a procedure, choose Properties, then click on the ellipsis button immediately to the right of the Window button, this will let you edit the window definition for that procedure. Look for the code that looks like this:

OLE,AT(114,101,299,135),USE(?feControl),#SEQ(17),#ORIG(?feControl)
END

This is the OLE control that needs to be changed to a PANEL control. Simply delete the two lines of code (above), and replace them with this single line of code (note, all you're doing is changing OLE to PANEL, and deleting END) :

PANEL
,AT(114,101,299,135),USE(?feControl),#SEQ(17),#ORIG(?feControl)

That's it!

Other changes you need to know about:

Internet Explorer Version Info

( This information was found at http://support.microsoft.com/default.aspx?scid=kb;en-us;164539 )
4.40.308 Internet Explorer 1.0 (Plus!)
4.40.520 Internet Explorer 2.0
4.70.1155 Internet Explorer 3.0
4.70.1158 Internet Explorer 3.0 (OSR2)
4.70.1215 Internet Explorer 3.01
4.70.1300 Internet Explorer 3.02 and 3.02a
4.71.544 Internet Explorer 4.0 Platform Preview 1.0 (PP1)
4.71.1008.3 Internet Explorer 4.0 Platform Preview 2.0 (PP2)
4.71.1712.6 Internet Explorer 4.0
4.72.2106.8 Internet Explorer 4.01
4.72.3110.8 Internet Explorer 4.01 Service Pack 1 (SP1)
4.72.3612.1713 Internet Explorer 4.01 Service Pack 2 (SP2)
5.00.0518.10 Internet Explorer 5 Developer Preview (Beta 1)
5.00.0910.1309 Internet Explorer 5 Beta (Beta 2)
5.00.2014.0216 Internet Explorer 5
5.00.2314.1003 Internet Explorer 5 (Office 2000)
5.00.2614.3500 Internet Explorer 5 (Windows 98 Second Edition)
5.00.2516.1900 Internet Explorer 5.01 (Windows 2000 Beta 3, build 5.00.2031)
5.00.2919.800 Internet Explorer 5.01 (Windows 2000 RC1, build 5.00.2072)
5.00.2919.3800 Internet Explorer 5.01 (Windows 2000 RC2, build 5.00.2128)
5.00.2919.6307 Internet Explorer 5.01 (Also included with Office 2000 SR-1, but not installed by default)
5.00.2920.0000 Internet Explorer 5.01 (Windows 2000, build 5.00.2195)
5.00.3103.1000 Internet Explorer 5.01 SP1 (Windows 2000)
5.00.3105.0106 Internet Explorer 5.01 SP1 (Windows 95/98 and Windows NT 4.0)
5.00.3314.2101 Internet Explorer 5.01 SP2 (Windows 95/98 and Windows NT 4.0)
5.00.3315.1000 Internet Explorer 5.01 SP2 (Windows 2000)
5.50.3825.1300 Internet Explorer 5.5 Developer Preview (Beta)
5.50.4030.2400 Internet Explorer 5.5 & Internet Tools Beta
5.50.4134.0100 Windows Me (4.90.3000)
5.50.4134.0600 Internet Explorer 5.5
5.50.4308.2900 Internet Explorer 5.5 Advanced Security Privacy Beta
5.50.4522.1800 Internet Explorer 5.5 Service Pack 1
5.50.4807.2300 Internet Explorer 5.5 Service Pack 2
6.00.2462.0000 Internet Explorer 6 Public Preview (Beta)
6.00.2479.0006 Internet Explorer 6 Public Preview (Beta) Refresh
6.00.2600.0000 Internet Explorer 6 (Windows XP)
6.00.2800.1106 Internet Explorer 6 Service Pack 1 (Windows XP SP1)
6.00.3663.0000 Internet Explorer 6 for Microsoft Windows Server 2003 RC1
6.00.3718.0000 Internet Explorer 6 for Windows Server 2003 RC2
6.00.3790.0000 Internet Explorer 6 for Windows Server 2003 (released)

Header / Footer Strings for IE Page Setup

If you open Internet Explorer and click on "Page Setup" ("File" menu), then click on the question mark on the "Page Setup" dialog window's title bar, then click in the "Header" field, you should see a list of possible settings.

This list in IE 5.5 contains the following:

&w Window Title
&u Page address (URL)
&d Date in short format
&D Date in long format
&t Time (as per Control Panel)
&T Time in 24-hour format
&p Current page number
&P Total number of pages
&& A single ampersand (&)
&b Text to follow is centered
&b&b Text after the second "&b" is right-justified

Using DebugView

"DebugView" by SysInternals is an application that lets you monitor debug output on your local system. I use DebugView when developing because it gives an accurate picture as to what's happening in your code (as opposed to "messages" or "stops"). If you start your application (any application into which File Explorer is compiled) with the following command line parameters, debug output will be generated accordingly, which you can then monitor using DebugView.
MyApp.exe same as MyApp.exe /fedebugoff
MyApp.exe /fedebugoff almost no debug output
MyApp.exe /fedebugmin minimum amount of debug output
MyApp.exe /fedebugmax maximum amount of debug output
TIP: I'd recommend using debug output only when you're testing something. It can be quite annoying for other programmers to work on a system where there are a dozen different apps generating debug output at the same time! To make life easier, all File Explorer debug messages are prefixed with "FE", as shown below. You can set DebugView to ignore all messages that do not contain "FE". You will also take a performance hit when running an app with debugging turned on.

debug view screenshot

File Explorer and The Future (The "ToDo" List)

Over the years, the vast majority of features on this list have been added. If there is something that you feel is missing, or would be a valuable addition, please email us. We value our user feedback, and many of the changes and new features are based entirely on user feedback.

File Explorer Version Numbers

Please ensure that you are using the latest release of File Explorer and all the current DLLs, including pwutil.dll. The bulk of all support requests regarding FE are a result of old DLLs, LIBs or source files.

pwutil.dll - version 2.5.0.0 (This file must be shipped with all FE application. It is backward compatible, so it is advised that you always ship the most recent release.)

All other files (binaries etc.) will reflect the current version number in the History section.

Version History


Version 5.68 - 24 May 2021
Version 5.67 - 23 December 2019 Version 5.66 - 11 October 2019 Version 5.65 - 14 March 2019 Version 5.64 - 28 November 2018 Version 5.63 - 13 Sept 2018 Version 5.62 - 18 May 2017
Version 5.61 - 20 October 2016 Version 5.60 - 24 December 2015 Version 5.59 - 25 February 2015 Version 5.58 - 24 February 2015 Version 5.57 - 2 October 2014 Version 5.56 - 17 July 2014 Version 5.55 - 10 February 2014 Version 5.54  - 27 September 2013 Version 5.53 - 28 August 2013 Version 5.52 Gold (26 April 2013)

 

Version 5.51 Gold (25 April 2013) Version 5.50 Gold (29 February 2012)

General feMedia Version 5.40 Beta (05 January 2012)

General Version 5.39 Beta (24 October 2011)

General Version 5.38 Beta (10 August 2011)

General Version 5.37 Beta (6 June 2011)

General Version 5.36 Beta (24 May 2011)

feEditor Version 5.34 Beta (19 May 2011)

feEditor Version 5.33 Beta (13 May 2011)

feEditor Version 5.32Beta (5 May 2011)

feEditor Version 5.31Beta (4 April 2011)

feEditor Version 5.30 Beta (28 March 2011) Version 5.29 Beta (08 February 2011) Version 5.28 Beta (13 December 2010) Version 5.27 Beta (09 September 2010)

Changed Version 5.26 Beta (10 May 2010)

New Fixed Version 5.25 Beta (04 March 2010)

New Fixed Notes HTML Editor Additions
HTML Editor Fixes
Version 5.23 Beta (29 January 2010)

New Fixed Version 5.23 Beta (18 January 2010) Version 5.22 Beta (08 January 2010) Version 5.21 Beta (04 January 2010) Version 5.20 Beta (31 December 2009)

FeEditor

Other

Version 5.11 Beta (24 July 2009) Version 5.10 Beta (11 June 2009) Note: When adding the new editor control, you should delete the additional control populated by the template (the path, prompt and lookup buttons). These will be removed from future releases.

Version 5.08 Beta (7 November 2008)
Version 5.07 Beta (7 November 2008) Version 5.06 Beta (26 August 2008) Version 5.05 Beta (01 August 2008) Version 5.04 Beta (11 July 2008) Version 5.03 Beta (13 June 2008) Version 5.02 Beta (06 June 2008) Version 5.00 Beta (11 April 2008) Version 4.03 (17October 2007) Version 4.02 (17 October 2007) Version 4.01 (11 July 2007) Version 4.00 (21 February 2007) Version 3.99 Gold (15 February 2007) Version 3.98 Gold (10 January 2007) Version 3.97 Gold (06 January 2007) Version 3.96 Gold (16 November 2006 ) Version 3.95 Gold (30 July 2006 ) Version 3.93 Beta: ( 25 April 2006 ) Version 3.92 Beta: ( 25 April 2006 ) Version 3.91 Beta: ( 25 April 2006 ) Version 3.90 Beta: ( 25 April 2006 ) Version 3.89 Beta: ( 07 April 2006 ) Version 3.88 Beta: ( 24 March 2006 ) Version 3.87 Gold: ( 24 March 2006 ) Version 3.86 Gold: ( 03 March 2006 ) Version 3.85 Gold: ( 17 February 2006 ) Versions 3.84 Gold: ( 16 November 2005 ) Versions 3.83 Beta: ( 11 October 2005 ) Versions 3.82 Beta: ( 5 October 2005 ) Versions 3.80 Beta: ( 15 July 2005 ) Versions 3.79 Beta: ( 3 June 2005 ) Versions 3.78 Beta: ( 11 April 2005 ) Versions 3.77 Gold: ( 24 March 2005 ) Versions 3.76 Beta: ( 7 March 2005 ) Versions 3.75 Beta: ( 28 Jan 2005 ) Versions 3.74 Beta: ( 24 Jan 2005 ) Versions 3.73 Beta: ( 20 Dec 2004 ) Versions 3.72 Beta: ( 16 Dec 2004 ) Versions 3.71 Gold: ( 29 Nov 2004 ) Versions 3.70 Gold: ( 22 Nov 2004 ) Versions 3.60 Beta: ( 15 Nov 2004 ) Versions 3.52 Beta: ( Released 3 Nov 2004 ) Versions 3.51 Beta: ( Released 22 Oct 2004 ) Versions 3.50 Beta: ( Released 4 Oct 2004 ) Versions 3.49 Beta: ( Released 27 August 2004 ) Versions 3.48 Beta: ( Released 16 August 2004 ) Versions 3.47 Beta: ( Released 12 August 2004 ) Versions 3.46 Beta: ( Released 23 July 2004 ) Versions 3.45 Beta: ( Released 16 July 2004 ) Versions 3.44 Beta: ( Released 14 July 2004 ) Versions 3.43 Beta: ( Released 28 June 2004 ) Versions 3.42 Beta: ( Released 10 June 2004 ) Versions 3.41 Beta: ( Released 8 June 2004 ) Versions 3.40 Beta: ( Released 4 June 2004 ) Versions 3.39 Beta: ( Released 28 May 2004 ) Versions 3.38 Beta: ( Released 26 May 2004 ) Versions 3.0 Beta 1 to 3.37 Beta: ( Last released 19 May 2004 ) Version 2.9X : ( Several unofficial releases ) Version 2.5e : ( Released 20 Dec 2002 ) Version 2.5d : ( Released 12 Dec 2002 ) Version 2.5c : ( 8 Nov 2002 ) ( 43rd official release of File Explorer, exactly 2 years since beta 1 )