Vote for this Product at ClarionShop
 
Buy now at ClarionShop
Version 3.84
© 2005 by CapeSoft Software (Pty) Ltd
www.capesoft.com
Updated 16 November 2005
c3pa approved
     

 

Contents
   
Upgrading from a version earlier than 3.70? Please click here.
 
General Information
 

First time User? Start Here...
License & Copyright
Introduction
Product History   [ Suggested Reading ]
Features
Support
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 Classes
 


feBrowser


feHtmlEditor


fePDF


feMedia


feFlash

 

Dll Functions
 

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

 
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 difficuilt 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.

License & Copyright

This template is copyright © 2005 by 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.  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 licensed Plugware's COM classes and wrote a new control for browsing html pages, based on pure COM (not the flaky OLE control / container which we had been using).  The improvement in terms of speed and stability was mind blowing.  At that time we had the old Html1 control, and this new control, called Html3 (Html2 was the control used to Edit html).  We also had several other controls for viewing Media files, Flash etc etc.  These all used (and still use) the Clarion OLE container, but seem fine.

We kept supporting both Html1 and Html3 for a while, until Html3 could do everything that Html1 had offered in the past.  We reached a point in October 2002 when there was no reason why anyone should be using Html1 rather than Html3, and so decided to phase out Html1.  When we released version 2.5 in October 2002 we disabled the option "Use COM" in the Viewer Controls template properties, which had been the switch that decided whether the Html Viewer templates used Html1 or Html3.  The Html1 object was being instantiated from the FeHtmlViewer class, but now uses the FeBrowser class, the same as the Html3 object.  This means that Html1 is now in fact identical to Html3.  I know it's a bit confusing...  Such is evolution <g>...

So where are we now???  There is no longer Html1 and Html3.  What was Html1 has been done away with.  Your apps should compile fine (the new Html3 objects will be used), if not please email us at support@capesoft.com.  We now have one object called feBrowser, which used to be called Html3.  The other objects used for editing html, viewing flash and media files etc have not changed.  At some point in the future they will probably start using the COM engine, but you won't see any difference other than a sudden improvement in performance and probably features.

We are leaving a lot of the old methods in the classes for backward compatibility (such as the old LoadHtml1 method, which is now just Load).  A lot of these methods are no longer documented.  Where you are using the File Explorer templates you have nothing to worry about as they will simply implement the new methods for you.  If you have written any hand code, your code will still work (please email me if not), but when you have time to kill <g> I'd recommend changing the methods as per this documentation.

Oh, one more thing...  In the very very early days, we had a single class called FeViewer.  This was phased out a long long time ago.  No one has mentioned it in over a year so I'm assuming we need not even speak about it here.  Basically we broke it up into several classes, being feBrowser, FeHtmlEditor, FeMedia, FePDF and so on.  Please contact me if you need more info on this...


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 
 
 
 
 
 
     
 

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)
Macromedia 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

DLL required  
Clarion 6.1 PWUTIL.DLL
Clarion 5.5 PWUTIL.DLL
     

 

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 FileExplorer 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

 

Dll Functions

 

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 MultiPrj 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.
Have a look at the example application called "fegoogle.app".  This example shows how to load a webpage, wait for it to complete loading, then continue.

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).

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 feHtmlEditor control, where the html contains images???
Absolutely, bearing in mind that html is just text, and the html contains references to images which must be located somewhere "else" (hard drive, internet etc).  Have a look at the "Advanced_feHtmlEditor_TabAndRightClick" procedure in the feabc.app example; specifically at the code under the Load from Variable button.

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

3.4 Does the FeHtmlEditor 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.  Have a look at the "Advanced_feHtmlEditor_EditingFromVariables" procedure in the feabc.app example application.

3.5 Does the FeHtmlEditor have a "Save As" method?
Not as such.  It does have a Save method which takes a filename as a parameter though, which in essence makes the Save method both a Save and SaveAs method, depending on how you use it.

3.6 I'm sure my HtmlEditor control used to work, but now it doesn't...
This is probably becuase you bought File Explorer in the very early days, when we still used Clarion OLE for this control.  In those days, you could call the Load method for this control, and it would (usually) create the control, even if you hadn't called the Init method first (even though you should have been calling the Init method before you call the Load method, as the templates / docs have always done).  Since version 3.0 of File Explorer, you will HAVE to call the Init method before the Load method, or the Load method will not work.. ( The same applies to the NewDocument method ).

3.7 On Win 98 (second edition) Load happens before NewDocument!
Someone reported that under Win 98 second edition (only), the following lines of code...

ThisViewer.NewDocument()
ThisViewer.Load (loc:SomeVar, ?feControl, 1)

... actually didn't work, because the NewDocument method returned before the Viewer actually had a new document loaded, and so the Load method failed because there was no new document to work with by the time Load was called!  Version 3.0 of File Explorer (when we rewrote the Editor using COM) apparently fixed this..

3.8 Is there a way to check whether a page which I load has been edited by the user?
Use the GetInfo method immediately after loading the html page to get the OuterHtml property, which you can then save to a variable.  This variable can then be used as a "snapshot" of what the original html was, and can be compared against subsequent calls to the GetInfo method (OuterHtml) to see if the html has changed since the time you opened the page / set the snapshot variable.

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.

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.

The undocumented feStorage Class FAQ's

7.1 I'm getting an error saying "Error opening new file; 5 - Access Denied" when using the Retrieve method over and over...
Upgrade to File Explorer 3.0 or later, and change your code as follows.  Although this class is no longer documented / supported, if you get stuck send me an email (support@capesoft.com).

ThisViewer1.Unload()  ! new method in FE 3.0

! here you would typically get the feBlobStorage record

if FEB:ParentID = feSF:RecordID  ! check range
  MyfeStorage1.Retrieve (FEB:BlobHolder, true, 1)
  ! etc. etc...


Examples

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

"Demo"  - abc, feabc.app
This is the main example application.  It is our "bells and whistles" example, which shows off most of File Explorer's objects and features.

"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.

"Google"  - abc, fegoogle.app
This example shows how to automate a google search from within a Clarion app.  You enter a search string and click a button, and File Explorer will load google.com, enter the search string and trigger the search.  Quite cool.  Can easily be adapted for downloading bank statements, forex rates etc etc etc...
( The feGoogle.app example has been moved into the feabc.app. Please use that app instead. See the feBrowser_Google procedure in feabc.app. )

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

"NetTalk"  - abc, fenetalk.app
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). 

"The Storage Example"  - abc, festore.app
Not really documented or supported.  Might revisit this app later.  Several Developers are using File Explorer in this way, which is why we wrote this app.  For more info click here.

"Hand Coded"  - abc, feWebBrwsr.prj
An example showing how to implement File Explorer in a hand-coded (no templates) project.  Absolute basic functionality.

"Hand Coded 2"  - abc, feWebBrwsr2.prj
Similar to the feWebBrwsr.prj example, but here we've added a status bar.

"Benchmark"  - abc, fetest.app
This example is used by us when developing the product to test stability and performance.  Here for your interest more than anything else.


The Storage File Example

 SECTION NEEDS TO BE REDONE

Many users have inquired about using the FileExplorer controls to play media files "securely", without having to ship the actual media files with there final product.  The following example steps you through an example which does just this.  It uses a topspeed file to store media files (any format) in a blob field, using a standard clarion File-Browsing List Box control to maintain the file, and a new File Explorer control (button) to select media files and "attach" them to the currently selected record in the List control (one media file per record which you create in the TopSpeed file).  All of that can be done in minutes, without any hand-coding.  Then you create a button and embed 3 lines of code into it - this will load the media file "attached" to the currently selected record (in the List control) into the FileExplorer MediaViewer control.

This works by creating a temporary file ("feTempFile") from the contents of the selected record's blob field (ie. the stored media file), and loading that temporary file into the File Explorer Viewer control.  The new FileExplorer button which we use to select media files to "attach" to records in the TopSpeed file simply "imports" any file which you select into the selected record's blob field.  The result is an app where you can ship one TopSpeed file instead of several media files.  The single TopSpeed file can contain any number of media files, using any number of formats (AVI's and MP3's in a single file!).  You can then control access to the media files, preventing the user from simply viewing them using another program.  The only thing you need to control is the temporary file which is created, called "feTempFile".  You'll need to delete this file when your app closes.  Note that there is no file extension, so it is not immediately obvious to the end user what this file actually is.  Here we go...

TIP 1:  By the way, this example can be found in your C55\3rdParty\examples\FileExplorer\storage folder - called festore.app

TIP 2:  This code works well if the media files you are working with are of a reasonably small size (up to a few megabytes).  The code has been tested (Pentium 2, 128 MB RAM) with a 68 MB MPG file; importing the file in 13 minutes, and created the temporary file which loaded in 80 seconds.

This example evolved as several users needed it.  Although functional, it is not well documented and was added to the public release more for interest than anything else...  Please contact support@capesoft.com if you need if you need assistance.

 

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.



Compile Errors and how to fix them:

Compile Error 1

Error:
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.



 

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

Top of the list

Middle of the list

Bottom of the list

 


File Explorer Version Numbers

See the notes on the ClassVersion method for more info.  Note - you can also right click on the c55fex.dll file (Windows Explorer) to see the file's version info - note that the "Product Version" which is shown there correlates to the "DLL Version" listed below, and the "File Version" correlates to the "DLL Counter" shown below.

Please note that all odd numbered releases (1.3, 1.7, 2.5 etc) are considered "work in progress", while all even numbered releases are now considered "not work in progress".  This allows us the freedom to expand the product and test new features with those developers who are willing to test what we consider to be work in progress.  ( The only exception to this is where I actually use the word "beta" in the title, as in "3.0 Beta 6" ).

 

Template Version:

DLL version:

DLL Counter:

PWUtil DLL:

2.4 Gold ? 25 ?
2.4b ? 26 ?
2.4c ? 27 ?
2.4d ? 28 ?
2.4e ? 29 ?
2.5 ? 32 ?
2.5c ? 33 ?
2.5d ? 35 ?
2.5e ? 36 ?
2.9a ? 37 ?
3.0.# 3.0.# 39

2.0.0.6 (616KB)

3.1 Beta 3.10 40 2.0.0.6 (616KB)
3.11 Beta 3.11 41 2.0.0.6 (616KB)
3.12 Beta 3.12 42 2.0.0.6 (616KB)
3.13 Beta 3.13 43 2.0.0.6 (616KB)
3.14 Beta 3.14 44 2.0.0.6 (136KB)
3.15 Beta 3.15 45 2.0.0.6 (136KB)
3.16 Beta 3.16 46 2.0.0.6 (136KB)
3.17 Beta 3.17 47 2.0.0.6 (136KB)
3.18 Beta 3.18 48 2.0.0.6 (136KB)
3.19 Beta 3.19 49 2.0.0.6 (136KB)
3.20 Beta 3.20 50 2.0.0.6 (136KB)
3.21 Beta 3.21 51 2.0.0.6 (136KB)
3.22 Beta 3.22 52 2.0.0.6 (136KB)
3.23 Beta 3.23 53 2.0.0.6 (136KB)
3.24 Beta 3.24 54 2.0.0.6 (136KB)
3.25 Beta 3.25 55 2.0.0.6 (136KB)
3.26 Beta 3.26 56 2.0.0.6 (136KB)
3.27 Beta 3.27 57 2.0.0.6 (136KB)
3.28 Beta 3.28 58 2.0.0.6 (136KB)
3.29 Beta 3.29 59 2.0.0.6 (136KB)
3.30 Beta 3.30 60 2.0.0.6 (136KB)
3.31 Beta 3.31 61 2.0.0.6 (136KB)
3.32 Beta 3.32 62 2.0.0.6 (136KB)
3.35 Beta 3.35 65 2.0.1.1 (204KB)
3.36 Beta 3.36 66 2.0.1.1 (204KB)
3.37 Beta 3.37 67 2.0.1.1 (204KB)
3.38 Beta 3.38 68 2.0.1.1 (204KB)
3.39 Beta 3.39 69 2.0.1.1 (204KB)
3.40 Beta 3.40 70 2.0.1.1 (204KB)
3.41 Beta 3.41 71 2.0.1.1 (204KB)
3.42 Beta 3.42 72 2.0.1.1 (204KB)
3.43 Beta 3.43 73 2.0.1.1 (204KB)
3.44 Beta 3.44 74 2.0.1.1 (204KB)
3.45 Beta 3.45 75 2.0.1.1 (204KB)
3.46 Beta 3.46 76 2.0.1.1 (204KB)
3.47 Beta 3.47 77 2.0.1.1 (204KB)
3.48 Beta 3.48 78 2.0.1.1 (204KB)
3.49 Beta 3.49 79 2.0.1.1 (204KB)
3.50 Beta 3.50 80 2.0.1.1 (204KB)
3.51 Beta 3.51 81 2.0.1.1 (204KB)
3.52 Beta 3.52 82 2.0.1.1 (204KB)
3.60 Beta 3.60 83 2.0.1.1 (204KB)
3.70 Gold 3.70 100 2.0.1.1 (204KB)
3.71 Gold 3.71 101 2.0.1.1 (204KB)
3.72 Beta 3.72 102 2.0.1.1 (204KB)
3.73 Beta 3.73 103 2.0.1.1 (204KB)
3.74 Beta 3.74 104 2.0.1.1 (204KB)
3.75 Beta 3.75 105 2.0.1.1 (204KB)
3.76 Beta 3.76 106 2.0.1.1 (204KB)
3.77 Gold 3.77 107 2.0.1.1 (204KB)
3.78 Beta 3.78 108 2.0.1.1 (204KB)
3.79 Beta 3.79 109 2.0.1.1 (204KB)
3.80 Beta 3.80 110 2.0.1.1 (204KB)
3.82 Beta 3.82 112 2.0.1.1 (204KB)
3.83 Beta 3.83 113 2.0.1.1 (204KB)
3.84 Beta 3.84 114 2.0.1.1 (204KB)

 

Version History

Please note: We offer both beta and gold releases of File Explorer. If you are requiring the most stable release please use the gold releases. New functionality and bug fixes are normally first released as beta releases.

Last Gold Release:  Version 3.84 Gold ( 16 November 2005 )
Last Beta Release:  Version 3.83 Beta ( 11 Oct 2005 )

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 )

( NOTE: A complete record of the version histories since the first release of File Explorer in November 2000 can be found here. )


[end of document]