|
|
 |
|
|
|
Version 3.84
© 2005 by CapeSoft Software (Pty) Ltd
www.capesoft.com
Updated 16 November 2005 |
|
|
|
|
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...!
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
- Simple to add a control to your program in a matter of minutes.
- Each "Viewer" control can play any number of file formats, you
choose while file formats are supported for each control
- Auto load a file into a control as the window opens
- Supports multiple controls per window, so you can play MP3 files while
browsing the web!
- Optionally enable "smart loading", where the user can select
a file to load / play, and the Viewer Control detects the file type and handles
the ocx / com initialization by itself...
- Supports allocating variables to each control (or a single variable shared
across multiple controls), so you can code controls to disable themselves
if the variable equals true or false or whatever...
- Full callback-function support with examples...
- Browse html...
- Browse pages from disk or the internet
- Templates that drop standard browsing buttons (back, forward, refresh,
save, print etc etc) onto your windows
- When a user clicks on a hyperlink you can see where that hyperlink
is navigating to, and either navigate there, cancel the navigation, or
navigate somewhere else...
- Easy to implement a status bar
- Read from and write to html fields in an html form from your app!
- Trigger the "submit" button on an html form
- Get a list of all the fields in an html form
- Edit html...
- Templates to add all the standard editing buttons to your windows,
such as bold, underline, print, save, indent, etc etc etc.
- Insert text, graphics, hyperlinks, etc.
- Write text to a loaded html page from your code...
- Easily retrieve properties such as the text ("text" or "html")
from the loaded page or selected section of a page, a list of images on
the loaded page etc etc.
- Use this functionality to easily make a WYSIWYG email editor, then
integrate File Explorer with CapeSoft NetTalk
to send the email! (Example included).
- Identify each key the user presses on the keyboard
- View PDF files...
- Easily load and view PDF files
- Includes functionality to save, print, find, zoom etc etc
- Use either the native Adobe Acrobat toolbar, or hide that toolbar and
use the File Explorer templates to drop your own controls onto the window...
- Play sound files...
- Supports MP3, Wav, Snd, Au, MID, M3U and MPE formats
- Complete with standard play, pause, stop buttons
- Control volume, play rate, number of times a file plays (loops) etc
etc
- Access file properties such as duration, title, author etc etc
- Play "movie" files...
- Supports MPEG, Mov, AVI, WMV and QT formats
- Standard stop, play, pause buttons
- Set volume, play rate, number of times a movie plays (loops) etc etc
- Play Macromedia Flash files...
- Great way to jazz up your apps. Why not play a Flash file in
the background on your "intro" window, or help screens...
Sky's the limit.
- Stop, pause and play buttons
- Methods for handling current frame etc.
- Other cool tools...
- Store multiple multimedia files in a single TopSpeed file...
- Methods for playing sound files using Window's API calls
- Read and write to the Window's registry
- Send messages to the system debugger
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:
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.
- Run the supplied installation file.
- For information on how to obtain the relevant OCXs, see the FAQ
section below.
Adding a File Explorer Control to your Application is this easy...
- Add the File Explorer Global Extension
Template to your application.
- Load your application in the Clarion IDE
- Click the Global button
- Click the Extensions button
- Click the Insert button
- Select the Activate_File_Explorer template from the Select Extensions
list that appears.

- Select the Select button and the File Explorer Global Extension's
prompts appear on the right-hand portion of the Extension and Control Templates
window.
- Leave all the template options as they appear. The default's are
fine for now. You can always come back and change them later...
- Click OK a couple times until you're back in your app, then compile...
That's it!!!
- 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.

DLLs required
(Standalone mode compiles)
|
|
|
DLL
required |
|
Clarion 6.1 |
C60FEX.DLL and PWUTIL.DLL |
Clarion 5.5 |
C55FEX.DLL and PWUTIL.DLL |
|
|
|
DLLs required
(Local mode compiles)
|
|
|
DLL
required |
|
Clarion 6.1 |
PWUTIL.DLL |
Clarion 5.5 |
PWUTIL.DLL |
|
|
|
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.
- Andy Ireland for developing the brilliant COM classes which File Explorer
makes use of..
- Carl Barnes for input with the hand coded examples, lists of features to
add to File Explorer, and occasionally sending info on how to write those
features when I took too long to reply <g>..
- Kevin Erskine for suggesting we support Mike Hanson's Resizer template,
and writing the template code to do it..
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 FileExplorer" )
5. Click the "Select" button ( you can leave all default settings,
these are discussed below )
6. Click "OK"
7. Click "OK" again |
|
|
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? |
- On the window where you want to use this control, choose "Control
Template..." from the "Populate" menu.
- Look for the section called "Class FileExplorer", then
select the item in that section called "DocumentViewer".
Click on your window to populate this control.
|
|
|
"General" Tab
Object Type
This control used to be able to load more than one file type.
As the functionality evolved we had to break it up to support only one
file type per control. Choose the File Type here.
"Common" Tab
Initial Document
If you want this control to load a file as the window opens, enter
the file name here. Tick "Variable?" if you want to enter
a variable instead of a filename.
Provide 'All Files' Option in File Lookups
If the user uses the template's 'File Lookup' button to find files
(much like the DOS File Lookup Clarion control), enabling this option
will result in the lookup including 'All Files' as a supported file type.
"Browse Html" Tab - only available if you choose Html
Browsing on the first tab
Auto-Resize control
Have the Viewer control automatically resize when the window resizes,
selected by default.
Implement Callback Events
Callback events are handled "internally" by File Explorer,
which calls a virtual method called EventCallback
each time an event is fired. If you want to enable Callback events,
simply tick this option here. (Note: Enabling Callback events
will add some overhead to the object, so theoretically it will slow it
down, however the speed difference should not be noticeable).
"Edit Html" Tab - only available if you choose Html
Editing on the first tab
Auto-Resize control
Have the Viewer control automatically resize when the window resizes,
selected by default.
Implement Callback Events
Callback events are handled "internally" by File Explorer,
which calls a virtual method called EventCallback
each time an event is fired. If you want to enable Callback events,
simply tick this option here. (Note: Enabling Callback events
will add some overhead to the object, so theoretically it will slow it
down, however the speed difference should not be noticeable).
"PDF" Tab - only available if you choose PDF
on the first tab
Show Toolbar
Decides whether or not the native PDF toolbar is displayed when you
view documents.
Show Scrollbars
Decides whether or not scrollbars are displayed when you view documents.
Initial Zoom
Sets the initial zoom percentage for the object.
Preferred Acrobat Version
Because it is possible to have more than one version of Adobe Acrobat
installed on your PC, and because some methods only work with Acrobat
4 ( as described in the methods and properties
sections of this document ), we enable you to specify which version of
Adobe Acrobat should be loaded. If the version you choose here is
not installed on the PC, any available version will be loaded.
"Flash" Tab - only available if you choose Flash
on the first tab
Loop Files
Plays the file repeatedly if enabled
"Object" Tab
Object Name
Each Viewer Control instantiates a File Explorer object (from the
File Explorer class), which it uses to "work". These File
Explorer objects need names. The templates will automatically name
the objects for you (typically something like ThisViewer1, ThisViewer2
etc), but you can rename the object here if you have reason to.
Var to Disable
Optionally create a variable (Byte) which can be set at runtime, which
will disable this object if set to 1 (True), and enable it if set to 0
(False). You can point all objects in your app to a single override
variable allowing a single 'switch' for the user to disable all controls,
or use multiple variables allowing the user 'switches' to disable specific
controls or groups of controls at run-time.
Don't Generate Any Code
No code will be generated for this particular object at compile time.
|
|
|
|
|
|
Media
Viewer
|
|
Summary |
|
Control Template
Play sound and video files
Optional |
|
What does it do? |
Populate this control
onto a window in order to be able to play sound and video files |
|
Prerequisites |
You need to have
added the Active_File_Explorer
global extension template to your application. |
|
How do I implement it? |
- On the window where you want to use this control, choose "Control
Template..." from the "Populate" menu.
- Look for the section called "Class FileExplorer", then
select the item in that section called "MediaViewer".
Click on your window to populate this control.
|
|
|
"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.
|
|
|
|
|
|
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. |
|
|
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. |
|
|
( none )
|
|
|
|
|
|
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. |
|
|
Reload Document After Updating
If 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. |
|
|
( 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. |
|
|
( 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. |
|
|
( 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 |
|
|
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, eg. "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 |
|
|
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 ( eg. 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. |
|
|
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, eg. 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 |
|
|
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 |
|
|
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
( byte Flag=0 ) |
MyString = fe_ClassVersion ( ) ! eg.
'3.12'
MyString = fe_ClassVersion (1) ! eg. '48'
MyString = fe_ClassVersion (2) ! eg. '3.12 Beta'
- This method returns a string, containing File Explorer version
information.
- The information it returns depends on the (optional) Flag
parameter.
- If you pass no parameter, or the value 0, the method returns
the File Explorer Class Version - as seen at the
top of the documentation.
- If you pass the value 1, the method returns the incremental
dll version, as explained in the File
Explorer Version Numbers section of the docs.
This is useful for checking the dll version in your app,
as you can use mathematical operators on the value that
is returned.
- If you pass the value 2, the method returns a descriptive
string containing the version details (as shown above).
|
|
fe_DebugString
(string DbgMessage) |
fe_DebugString
('Hello World')
- See the section titled Using DebugView.
This sends a debug message from within your own app. Useful
extra.
|
|
fe_GetHtmlGraphicsInfo
(*cstring HtmlSource) |
( not yet implemented ) |
|
fe_GetIEVersionInfo
( byte pTranslate=false ) ,string |
loc:TempString
= fe_GetIEVersionInfo() ! 4.72.3612.1713
loc:TempString
= fe_GetIEVersionInfo(true) ! Internet Explorer 4.01 SP2
- Returns the currently installed version of Internet
Explorer.
- If you pass true (1) for the pTranslate parameter,
then the product name will be returned (if possible) - see the
examples above.
- See the Internet Explorer Version
Info section for more info.
|
|
fe_GetOSVersionInfo
( ),string |
loc:TempString = fe_GetOSVersionInfo()
if loc:TempString [3:4] = '95'
...
loc:BuildNumber = loc:TempString [16:19]
DisplayTextForScreen = left(loc:TempString)
- This function returns the current Operating System.
The syntax of the string returned is as follows:OS.MajorVersion.MinorVersion.BuildNumber;
e.g. NTS.0005.0001.0000. We always return the string
in the format XXXX.XXXX.XXXX.XXXX, to make string processing
easier (i.e. ReturnString[1:4], ReturnString[6:9], ReturnString[11:14],
ReturnString[16:19] ). Note that the OS component could
be preceeded by blank spaces ( e.g. " 95" )
to make string processing easier, while the remaining components
will be preceeded by zeros ( 0 ) if they are not 4 characters
long, or will be clipped to the first four characters if they
are longer. This may sound complicated but it makes coding
much easier (as illustrated above).
- The OS component of the string returned will be one of the
following:
- 31 (Windows 3.1)
- 95 (Windows 95)
- 98 (Windows 98)
- ME (Windows Millennium)
- NTW (NT Workstation)
- NTS (NT Server)
- W2KP (Windows 2000 Professional)
- W2KS (Windows 2000 Server)
- 0000 (Four zeros indicates an unknown OS, please
notify support@capesoft.com)
|
|
fe_GetRegValue
(string ParentFolder, string NameOfKey, string NameOfValue)
,string |
MyString =
fe_GetRegValue ('HKEY_CURRENT_USER', 'Software\Microsoft\Internet
Account Manager', 'Default Mail Account' )
- Reads a value from the Windows registry.
|
|
fe_MCIPlay (
string pFileName ) ,byte |
fe_MCIPlay
('c:\test.mp3')
- Every MCI (Media Control Interface) multimedia device
supports a core set of MCI commands in a way that makes sense
for that device. For example, the play ( MCI_PLAY, see MSDN
for more info on the various Windows' API calls for this )
command causes the open device to play a file or track, no
matter what kind of data the device works with. File Explorer
has wrapped up a lot of this functionality into two simple
functions which you can call from anywhere in your Clarion
application, fe_MCIPlay and fe_MCIStop.
- fe_MCIPlay is used to play a variety of sound or video
files, including MP3's (see the example above).
|
|
fe_MCIStop (
<string pFileName> ) ,byte |
fe_MCIStop ()
- Every MCI (Media Control Interface) multimedia device
supports a core set of MCI commands in a way that makes sense
for that device. For example, the play ( MCI_PLAY, see MSDN
for more info on the various Windows' API calls for this )
command causes the open device to play a file or track, no
matter what kind of data the device works with. File Explorer
has wrapped up a lot of this functionality into two simple
functions which you can call from anywhere in your Clarion
application, fe_MCIPlay and
fe_MCIStop.
- fe_MCIStop is used to stop playing whatever file you started
playing by calling the fe_MCIPlay
function.
- The omittable pFileName parameter is not currently
supported, simply call this function as documented in the
example above.
|
|
fe_OnlineStatus
( byte pOption=0 ) ,byte |
fe_OnlineStatus()
! see below
|
|
fe_OnlineStatusConnectionName
( byte pOption=0 ) ,string |
fe_OnlineStatusConnectionName()
- Use the fe_OnlineStatus function to establish whether you
are connected to the internet. Use this function
(fe_OnlineStatusConnectionName) if you want to know the name
of the current connection (assuming there is one).
|
|
fe_ShellExecute
( string Parm1 ) |
( "Semi-private" function,
called by the fe_StartIE function, wraps the ShellExecute API function
) |
|
fe_StartIE
( string URL ) |
fe_StartIE
('www.CapeSoft.com')
- This function simply uses the ShellExecute API call to launch
Internet Explorer and load a webpage.
- TIP: Have a look in feabc.app's "Comments"
procedure to see how to use this function to make urls on a
window "live"...
|
|
feDispose
( ) |
feDispose()
- This function is used to clean up after File Explorer, and
is called by the Global Extension Template as your app closes,
to make sure File Explorer does not cause any memory leaks.
|
|
|
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...
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.
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.
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
- Open each window (one by one) which contains a File Explorer Viewer control.
- File Explorer would have populated an entry control on this window ( see
"A" below )...
- ...which will be "Use"-ing a variable called "fepath"
( see "B" below )...
- 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 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:
- We are no longer supporting the
Background Media Load Button control template, please use the
CallFe MadiaAPIMethod code template
instead.
- Callback events are now done completely differently. Please see
the example apps and look at the EventCallback methods to see how this is
now done. Any code you have in the old callback event embed points
will need to be redone, and will more than likely now be orphaned.
( 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) |

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 |

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

Top of the list
- FeDun object has been commented out - not thread safe under C6,
currently rethinking this.
Middle of the list
- Media object docs need to be updated
- Passing HTTP headers and submit data in the feBrowser::Load method.
- Template needs to be updated / cleaned up
- FeBrowser::SaveAs (fully automate, passing filename as a parameter)
- can the image paths etc be changed to local drive and images get
downloaded / saved accordingly??
- Timing issue with the HtmlEditor. If Load is called as the
window opens the control sometimes has not finished initializing by
the time Load gets called.. ( Same applies to Load, NewDocument,
Update(Source) )
- Can the Acrobat OCX display files before they have completed
loading?
- Clicking the "email" button on the Adobe 6 toolbar in a C6.1 app causes
the Acrobat ocx to GPF.
Bottom of the list
- FeBrowser::GetHtmlGraphicsInfo must be rethought
- Messages sent to the system debugger must be cleaned up
- Complete and document the DUN options
- Obtain pixel size of an AVI / MPEG video
- Ability to position cursor within an html document (feHtmlEditor)
- Revisit PDF object
- Write code for Media Player 9 (new features available)
- Can we control the size of the Internet Explorer "preview"
window?
- Disable right-click popup menu on feBrowser
- See if we can increase the parameter value size for the StartIE
function. Reported that it currently only works to 255 characters
for email body text.
- Setting IE page margins, as in "Update('PrinterLeftMargin',
'0.5"')"
- New method? HtmlInputFieldElement::SetFocus( )
- Test with CWIC.
- Can we stop popup windows when using feBrowser?
- Set radio buttons from feBrowser
- Finish the "framehost\feframe.app" example
- Frame support for FeHtmlEditor
- Completing popup windows (username / password)
- InsertText - add to bottom (like a footer)
- Methods should support cstrings or strings
- Setting the html encoding property (Unicode / Western European
etc.)
- Compiling resources such as WAV files into the exe, and loaded into FE
directly

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

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 )
- First build compiled with Clarion 6.2.9048
(and Clarion 6.1.9031)
- Several minor internal improvements.
Versions 3.83 Beta: ( 11 October 2005 )
- Fixed an issue in the feBrowser.Load
method.
Versions 3.82 Beta: ( 5 October 2005 )
- Tidied up the fe.inc file.
- Fixed an issue with FE not reporting the
installed version of Acrobat Reader correctly (just a string update, does
not affect any functionality)
- Added a new checkbox to the feBrowser
object's template properties, labeled 'Implement Delayed Close' - work in
progress.
Versions 3.80 Beta: ( 15 July 2005 )
- Deleted the 'KillCalled' property from the
feBrowser class, this property was already defined in the feCOM class which
the feBrowser class is derived from.
- New property:
feBrowser.GetInfo_SelectedHtml; feBrowser.GetInfo_SelectedOuterHtml
- New: FeBrowser.GetInfo, and
feHtmlEditor.GetInfo methods both now support
new options: fe:SelectedHtml; fe:SelectedOuterHtml
- Updated: Added new items into the
feabc.app example application's feBrowser_MainExample procedure menu to show
off these new features (above).
- Change: feBrowser and feHtmlEditor classes
are both now derived from a new class called 'FeGenericHTML'
- New: feHtmlEditor.Update now supports 'SelectedOuterHTML'
as the first parameter. Not yet documented,
still testing.
- Fixed: feBrowser.SetValueByID was not
working correctly.
- Change: feBrowser.SetValueByID improved
(internally), and a third parameter called pHTML has been added. Not yet documented,
still testing.
- Change: feBrowser.GetValueByID improved
(internally), and a second parameter called pHTML has been added. Not yet documented,
still testing.
- Numerous other internal
changes. Not yet documented. Currently being tested. Will
document in the next release.
Versions 3.79 Beta: ( 3 June 2005 )
- Fixed a compile error in the festorage.app
example (tpl).
- Several internal changes / improvements,
mostly in the feMedia class, not yet documented.
- The DOM code now supports "<button>"
elements.
- First build compiled with Clarion 6.1
9034, and Clarion 6.2.
Versions 3.78 Beta: ( 11 April 2005 )
- Started adding support for Media Player 9
and 10, still busy with this, simply set feMedia.MPVersionNumber = 10 before
calling Init if you want to try this code out. Still defaults to using
Media Player 6.4. Will document this and add it to the template (and
make it default to 10 or the latest installed version) as soon as the
following issues have been resolved in the feMedia class:
- Update ('AllowChangeDisplaySize') - not
yet working
- Update ('medshowinfowindow') - not yet
working
- Update ('medshowtoolbar') - not yet
working
- Update ('medshowslidebar') - not yet
working
- Update ('medshowgotobar') - not yet
working
- Update ('medenableslidebar') - not yet
working
- Update ('medenabletoolbar') - not yet
working
- Update ('medshowpositioncontrols') - not
yet working
- Update ('medautorewind') - not yet working
- Update ('medautoresize') - not yet working
- Update ('medzoom') - not yet working
- Update ('medstartposition') - not yet
working
- Update ('medendposition') - not yet
working
- GetInfo method (all)
- Callback Events
- Added support for Easy ResizeAndSplit to
File Explorer. Tested with Easy ResizeAndSplit 2.07
- New method: feBrowser.SelectElementByID
- New method: feBrowser.SelectElementByName
- Improved: My DOM code now returns the HREF
property of LINK objects in the ElementValue field of the queue that you get
back. See my feabc.app example's "Accessing the DOM" procedure.
This means that you can now easily get a list of all the URLs (hyperlinks)
in a loaded html document.
- Improved: My DOM code (see above) also now
includes "All-FE" and "All-IE" under the example's "Tag to search for" drop
list. The "All-FE" option is the old "All" option, which returns all
objects found (and supported) by FileExplorer. The new "All-IE" option
returns all objects directly from Internet Explorer - some of which may not
be supported by File Explorer. If you see anything in the IE list that
you need (that is not in the FE list) let us know.
Versions 3.77 Gold: ( 24 March 2005 )
- New template symbol called %FEBuild -
other templates can use this to check the FE version number
- FeHtmlEditor.Update method now supports
ShowDetails, and ShowBorders.
- Deprecated the feHtmlEditor_Update
procedure in the feabc.app example. Moving this code into the
feHtmlEditor_MainExample procedure. Going to be revamping the
main example for the next release.
- Numerous internal improvements (nothing
risky, all well tested, just optimized code in some areas and fixed an
possible issue when closing down some of the objects).
Versions 3.76 Beta: ( 7 March 2005 )
- Minor template improvement (Do not
generate code template option was still generating some recently added
code)
- Improved the feabc.app and feleg.app
examples (changed the toolbar icons to 32X32 - thanks Sean! Also
changed the legacy frame toolbar and About screen to look like the
abc example's, and improved the look of most of the windows in the legacy
app)
- Fixed an issue File Explorer had
pertaining to being hosted inside GROUP controls! Rewrote the code
used to manage how FE controls deal with being on Tabs, in Groups, and so
on, changes included:
- Deprecated
several template generated routines: feWatchingZOrdering,
feWatchingParentPropHideStatus, and feFixLeakingThroughTabsOnWindowOpen
- Several internal changes
- Cleaned up a lot of code in the dll
Versions 3.75 Beta: ( 28 Jan 2005 )
- New: Now supports Acrobat Reader version 7
- Improved: Minor template improvement
- Improved: New method (all classes) called
"_WindowClosing". Work in progress, not yet documented. Is
implemented by the templates though.
Versions 3.74 Beta: ( 24 Jan 2005 )
- Fixed: Compiler warning 'Field label is
duplicated, first used' under Clarion 6.1 build 9031 (HTMLURL Line840,
HTML2SOURCE Line1047)
- Changed: Internal property called
Debugging changed to DebugLevel (applies to all classes)
- FeDUN class completely removed
- Improved: Major internal (dll) change
(architecturally)
- Improved: Template improved
- Changed max length of URLs from 255 to
1024 (fe:URLStringSize)
- New: Two new events (virtual methods) in
the feBrowser class: EventClick, and EventDblClick. These required a
major internal change in File Explorer, so please test this release
before releasing to customers - it seems to work fine from what we've seen.
This is currently considered work in progress, and
will not be enabled unless you tick "Implement More Callback Events" in the
template properties for the feBrowser control. As soon as we're sure this is
stable we will incorporate it into the "normal" events, and will remove this
template option.
Versions 3.73 Beta: ( 20 Dec 2004 )
- First build compiled with Clarion 6.1 Build 9031
Versions 3.72 Beta: ( 16 Dec
2004 )
- New: Several internal changes for better
integration with CapeSoft Office Inside (more to follow in subsequent
builds)
- Improved: New internal method called feMedia.DbgMsg (internal
improvement)
- Improved: Template code pertaining to feMedia object, especially when
another FE object coexists on the same window
- First build compiled with Clarion 6.1 Build 9030
Versions 3.71 Gold: ( 29 Nov 2004 )
- Fix: Media Viewer template was not implementing AllowZoomChange,
Mute, RepeatTimes and StartPosition properties
- Fix: Template was causing compile errors on the (now disabled) DUN code
Versions 3.70 Gold: ( 22 Nov 2004 )
- First Gold release since 12 Dec 2002! Have rewritten virtually the
whole of File Explorer twice since then.. We now don't use the Clarion
OLE control / code at all, anywhere in File Explorer. There is nothing
that was in the last Gold release that is not working as well or
considerably better in this release.
- The template no longer supports using the Clarion OLE control, you must
change all Clarion OLE controls to Panels, see the section titled
Considerations
if upgrading from a version earlier than 3.70 for more info (look for
Compile Error 2). Clarion's OCX.CLW file is no longer
linked in. You no longer need to ship C55OLEX.DLL with your apps.
Versions 3.60 Beta: ( 15 Nov 2004 )
- New: feBrowser entry control now alerts for CtrlEnter, like
Internet Explorer, so you can type in google (CtrlEnter), or
www.google.com (Enter) (New undocumented method built for this called
_FormValidURL. Template changed to implement this automatically).
- New: New property for all objects called EntryControl (used
internally by templates)
- Deprecated: The CallFe_LoadMethod template had a setting called
Viewer Control, this is no longer necessary
- Deprecated Procedures In feabc.app example:
- Advanced_feBrowser_CodeTemplate (Now included in
feBrowser_MainExample)
- Advanced_feBrowser_StatusBar (Now included in
feBrowser_MainExample)
- Advanced_feBrowser_Tabbing (Moved to the BenchMark example
application)
- Advanced_feBrowser_Tabs (Moved to the BenchMark example
application)
- Advanced_feBrowser_TwoViewers (Moved to the BenchMark
example application)
- Advanced_feBrowser_ThreeLaunchesExample (Moved to the BenchMark
example application)
- Advanced_feBrowser_TwoWinsOneThread_Parent (Moved to the BenchMark
example application)
- Advanced_feBrowser_TwoWinsOneThread_Child (Moved to the BenchMark
example application)
- Advanced_feBrowser_GetInfo (Now included in feBrowser_MainExample)
- Advanced_feHtmlEditor_CodeTemplates (Now included in
feHtmlEditor_MainExample)
- Advanced_feHtmlEditor_GetInfo (Now included in
feHtmlEditor_MainExample)
- Improved: Numerous parts of the dll code optimized, cleaned up, etc.
- Improved: The CallFe_LoadMethod code template now updates the
parent object's entry control if present
- Improved: CallFe_EditMethod code template revisited
Versions 3.52 Beta: ( Released 3 Nov 2004 )
- Improved: Major template cleanup
- Improved: Several methods improved internally, including:
- feMedia.Load
- feMedia.Init
- feMedia.Update
- fePDF.Load
- feFlash.Load
- feFlash.Update
- Improved: feMedia properties (e.g. self.MedAllowZoomChange, self.MedMute)
now retain their values when loading new media files into the Viewer Control
- Improved: fePDF properties (e.g. self.PDFZoom) now retain their values
when loading new documents into the Viewer Control
- Improved: feFlash properties (e.g. self.FlashLoop) now retain their
values when loading new documents into the Viewer Control
- Deprecated Properties (have not actually been used in over a year):
feMaster.fe_Height, feMaster.fe_Width, feMaster.fe_TreatUnknownsAs
Versions 3.51 Beta: ( Released 22 Oct 2004 )
- Changed the template generated code for the fePDF object. ( Would
love to redo this code and lose all the routines that get generated.. )
Now all initialization properties are only set after the call to fePDF.Init.
Properties like PDFZoom used to have to be set each time we called the Load
method - this is no longer necessary. Also (due to demand), I now let
you set PDFZoom to any value you like (no longer validate it to between 0
and 100).
- Started cleaning up the template
Versions 3.50 Beta: ( Released 4 Oct 2004 )
- Bug Fix: An internal method was not always decrementing object counters
correctly under Clarion 6.1, which could have caused some objects to GPF the
second time they were initialized. (Bug in GetElementQ)
( ElementID is currently not being returned )
- Internal Improvement: Event Handlers are now disabled earlier in the
"Kill" logic for all classes
- Internal Improvement: Updating fields in feBrowser DOM code is now much
more efficient
- Internal Improvement: fe_GetCStringFromBstr function improved
- New property for the feBrowser class called DoNotLoadAboutBlankInInit
( Not yet documented )
- Internal Improvement: IIDisp objects no longer self-Release under the
current C61 build ( must update other products
accordingly )
- fe_GetIEVersionInfo now takes an
optional parameter
- feDispose is now obsolete. The template no longer generates calls
to this function. This fixes an issue under C6.1 causing GPFs as apps
were closing down.
- Need to check all method prototypes in the tpl to
make sure they're right (see HtmlEditor.Load)
- Several new virtual methods have been added to the template to make
processing feBrowser events easier:
- EventNavigateComplete2
- EventDocumentComplete
- EventOnQuit
- EventOnVisible
- EventOnToolBar
- EventOnMenuBar
- EventOnStatusBar
- EventOnFullScreen
- EventOnTheaterMode
- EventWindowSetResizable
- EventWindowSetLeft
- EventWindowSetTop
- EventWindowSetWidth
- EventWindowSetHeight
- EventWindowClosing
- EventClientToHostWindow
- EventSetSecureLockIcon
- EventFileDownload
- EventNavigateError
- EventPrintTemplateInstantiation
- EventPrintTemplateTeardown
- EventUpdatePageStatus
- EventPrivacyImpactedStateChange
Versions 3.49 Beta: ( Released 27 August 2004 )
- First build compiled with Clarion 6.1 Build 9027
Versions 3.48 Beta: ( Released 16 August 2004 )
- The feMedia.AutoSize method became obsolete several releases ago
(replaced with the feMedia.Resize method). There was still a reference
to the old method in the templates which has now been removed. There
was also an embed point before and after a call to the feMedia.Wait method
which has been removed, as because we are now using COM (not Clarion OLE)
there is no need to use the Wait method. Please
check your code for any orphaned embeds here.
Versions 3.47 Beta: ( Released 12 August 2004 )
- Several properties are now obsolete: fe_CurrentControl (used in most
objects), DisableWait (used in most objects)
- feMedia events are now passing in the correct parameters
- Documented the fe_MCIPlay and fe_MCIStop functions
- First build compiled using Clarion 6.1 Build 9025
Versions 3.46 Beta: ( Released 23 July 2004 )
- First build compiled with Clarion 6.1 Gold (Build 9024)
Versions 3.45 Beta: ( Released 16 July 2004 )
- feBrowser EventBeforeNavigate2, EventNewWindow2 and
EventCommandStateChange methods now return longs. Made several
internal improvements to the way File Explorer handles callback events.
- fe_OnlineStatus and fe_OnlineStatusConnectionName
functions improved.
- Removed the obsolete FeViewer class.
- Improved several examples, including
Advanced_feBrowser_AdvancedCallbacks.
Versions 3.44 Beta: ( Released 14 July 2004 )
- Template fix - feHtmlEditor, feFlash and fePDF might have been leaking
through tabs. Thanks to Trevor Cocks for finding this bug.
- Internal fixes in the FeBrowser BeforeNavigate2 and NewWindow2 events.
- First build compiled with C6.1 RC6
Versions 3.43 Beta: ( Released 28 June 2004 )
- New FAQs : 2.12
- Updated Docs : feBrowser.Load
- First build tested with Clarion 6.1 RC4
Versions 3.42 Beta: ( Released 10 June 2004 )
- Fixed a bug causing a GPF as your exe closed when compiled with Clarion
6.1.
Versions 3.41 Beta: ( Released 8 June 2004 )
- New method - feMedia:EventCallback (supports callback event from the
Windows MediaPlayer ocx).
- First build to support Clarion 6.1 CR2
Versions 3.40 Beta: ( Released 4 June 2004 )
- Fixed: feMedia object was not always resizing correctly
- Fixed: feFlash object was not resizing at all in the last release
- The feMedia::GetInfo method now takes an optional parameter
- Updated the feoi.app example (Office Inside / File Explorer in same app)
- First build to support Clarion 6.1 CR1
Versions 3.39 Beta: ( Released 28 May 2004 )
- Complete rewrite of the fePDF object!
- Big news : Templates now implement a Panel
control rather than the Clarion OLE control. File Explorer no longer
uses the Clarion OLE control for ANYTHING.
- FeFlash::EventCallback method improved. Please see
FAQ 1.11 for more info.
- New methods: FeFlash::SetVariable, FeFlash::GetVariable
- Changed FePDF::Init method's parameters
- Tidied up documentation and templates
Versions 3.38 Beta: ( Released 26 May 2004 )
- FeBrower::Update improved
- FeFlash - major overhaul.. Now using Plugware classes rather than
Clarion OLE, and Callback Events are now working!
- Init method now takes different parameters - changed
from (<long CurrentControl>) to (long ParentControl, <string LoadPath>,
long Handle1=0, long Handle2=0, byte SkipCallbacks=false).
- New methods - Kill, EventCallback
- Template now has two new checkboxes which you need to
manually set - "Auto-Resize control" and "Implement callback events"
- Improved Flash examples in the feabc.app example app.
- No longer supporting the
Background Media Load Button control template, please use the
CallFe MadiaAPIMethod code template
instead. Major overhaul of the CallFe_MediaAPIMethod code template,
much cleaner now.
- Changed the install exe to backup your old examples before replacing
them with new ones.
Versions 3.0 Beta 1 to 3.37 Beta: ( Last released 19 May 2004 )
- All the improvements / changes made during the 2.9 releases.
- Rewrote the feBrowser class! Improvements / changes include:
- Even faster, even more robust..
- Several methods had size restrictions on their parameters.
No longer! Methods include feBrowser:: Load, ...
- You can now have multiple objects (Viewer controls) on the
same window, and scroll large files safely (were some issues here in the
past).
- The issue reported with browsing Disney.com has been fixed.
- The FeBrowser::Refresh method now takes an optional parameter,
allowing you to specify the "level" of refreshing you want done.
- The FeBrowser::Edit method now takes a second (optional)
parameter.
- New property (used internally, currently undocumented) called
LastLoadedDoc, which will replace LastLoadedDocument and CurrentPath for
the Webbrowser class. No size restrictions.
- feBrowser::Load; from (long ParentControl, <string LoadPath>,
<long Handle1>, <long Handle2>, <byte SkipCallbacks>) to (long
ParentControl, <string LoadPath>, long Handle1=0, long Handle2=0, byte
SkipCallbacks=false). Improved ability to pass (new) optional parameters,
and the way this code works.
- FeBrowser::GetInfo method(s) now take a parameter allowing
you to specify a FrameNumber. ( See the Advanced_feBrowser_GetInfo
example procedure in feabc.app, which now shows how to use GetInfo with
frames ). Added new properties (&cstring's) which GetInfo now
updates and returns pointers to, better way of doing this as there are
now no size limitations. All properties auto-clean in the Kill method,
note these are read-only properties - see the fedemo.app (abc) - Advanced_feBrowser_GetInfo
procedure for implementation.
- FeBrowser::Resize method now takes longs as parameters,
not shorts.
- FeBrowser::GetElementQ method parameters changed from (
< *cstring TagName >, fe:QParam_Type QParm ) to ( <string
TagName>, fe:QParam_Type QParm, long FrameNumber=0 ). This method
now supports frames.
- FeBrowser::SetValueByName method parameters changed from
( string ElementName, string ElementValue, byte ElementType=0 ) to
( string ElementName, string ElementValue, long FrameNumber=0 ).
ElementType was never documented / implemented, so this will not affect
any existing code. This method now supports frames.
- FeBrowser::GetValueByName method parameters changed from
( string ElementName ) to ( string ElementName, long FrameNumber=0
). This method now supports frames.
- FeBrowser::SubmitForm method parameters changed from (
<string FormName> ) to ( <string FormName>, long FrameNumber=0
). This method now supports frames.
- Updated the Advanced_feBrowser_DOM example (feabc.app) to
demonstrate using the improved GetElementQ, SetValueByName, GetValueByName
and SubmitForm methods (with frame support).
- SetValueByName now supports dealing with duplicated field
names (new 6th parameter).
- FeBrowser::Load changed - now if you pass CurrentPath
as '' (empty string) it loads "about:blank", rather than just
ignoring you which is what it did in the past..
- The feBrowser::Update method now supports setting the "SilentMode"
parameter.
- The feBrowser::EventCallback method now returns *cstrings,
not *strings. This was never documented prior to this version so
it won't affect anyone.
- Can now read / set html CheckBoxes from your code
- feBrowser::GetHtmlGraphicsInfo
method improved (internal fixes)
- New methods:
- FeBrowser::SetFocus
- used to restore focus to the Viewer control Window.
- FeBrowser::ClickByName - which enables you to click buttons in html
pages! Cool...
- FeBrowser::Home
- FeBrowser::SearchPage
- FeBrowser::NumberOfFrames
- FeBrowser::NameOfFrame
- FeBrowser::HideControl
- FeBrowser::UnhideControl
- FeBrowser.ClickByRecordNumber
- Rewrote the feHtmlEditor class! Improvements / changes include:
- No longer using any "Clarion OLE".. All
pure early-bound COM. Many many many advantages to speed, stability,
and new features we can now add.
- Changed the Init method's parameters from (<long CurrentControl>)
to (long ParentControl, <string LoadPath>, long Handle1=0, long Handle2=0,
byte SkipCallbacks=false). Updated the templates to take this into
account.
- Changed the Load method's parameters from (string CurrentPath,
<long CurrentControl>, <byte LoadFromVar>) to (string CurrentPath,
long CurrentControl=0, byte LoadFromVar=false). Updated the templates
to take this into account.
- "Save" method improved.
- ThisViewer1.Load ('') now has the same effect as ThisViewer1.NewDocument().
In the past ThisViewer1.Load ('') did nothing.
- feHtmlEditor::GetHtmlGraphicsInfo
method improved (internal fixes)
- New methods:
- FeHtmlEditor::SetFocus
- sets the focus to the window that the FE control is on
- FeHtmlEditor::HideControl
- FeHtmlEditor::UnhideControl
- FeHtmlEditor::InsertTable
- FeHtmlEditor.TableLayoutWindow
- Rewrote the FeMedia class! Improvements / changes include:
- Init method used to take a single optional parameter. Method now
takes several parameters. Template code updated, but your own
source code will need to be changed.
- Several methods now return an optional byte, including:
Play, Pause, Stop, Load, Init
- Methods which now return an (optional) byte, indicating success / failure:
- FeBrowser::Back, FeBrowser:Forward, FeBrowser::Refresh, FeBrowser::Stop,
FeBrowser::Edit, FeBrowser::PrintMe, FeBrowser::Init, FeBrowser::Kill,
FeBrowser::Load
- FeHtmlEditor::Load, FeHtmlEditor::Edit, FeHtmlEditor::NewDocument, FeHtmlEditor::PrintMe
- New Functions:
- fe_GetRegValue (string ParentFolder, string NameOfKey, string
NameOfValue),string
- fe_GetOSVersionInfo ( ),string
- fe_DebugString (string)
- New examples:
- feabc.app: Advanced_FeHtmlEditor_GetInfo
- feoi.app: Showing how to integrate File Explorer with CapeSoft
Office Inside
- Removed the following methods:
- Deleted an old (undocumented) form of the FeBrowser::Edit
method, which took a string and a long as the two parameters...
Don't expect any problems from this deletion.
- Deleted an undocumented method called FeBrowser::_LoopThruElementsByTagName,
and an undocumented method called FeBrowser::OleControlSite_Invoke.
- Removed the following properties:
- feBrowser.UseLateBinding, feBrowser.DontInitializeHtml1, feBrowser.NavigateMethod
- Changes to the templates:
- Viewer Control - Html Editor options - new option called "Auto-Resize
control", enabled by default.
- Fixed some issued with compiling in local mode.
- FeMediaAPI::Play method now supports long file names.
- Fixed an issue in the (undocumented) FeStorage class, and added a section
for this class (and this issue) to the FAQ's.
- Worked on C6 compatibility
- fe_ShellExecute function improved
- New method: feMedia::EventCallback (callbacks
now working for Media Player object)
- Updated the Media Player template and
examples where the new EventCallback method is now working
- New method: feHtmlEditor::EventCallback
(callbacks now working for Html Editing object)
- Updated the Html Editor template and
examples where the new EventCallback method is now working
- Improved feHtmlEditor::GetInfo (now
supports self.ObjType again)
- Rewrote the feHtmlEditor::KeyPressed
method, now working again
- Commented obsolete template code, including:
- All references to OCXRegisterEventProc,
OCXRegisterPropChange, and OCXRegisterPropEdit have been commented
- Local variables "feLastEvent"
and "feLastKeypress" are now obsolete
- No longer including the "OCXEVENT.CLW"
file
- OcxCallbackDeclarations code
no longer used / needed
- Any code which you embedded into the
"Event Handler Callback" embed points will now be orphaned.
Please move this code to the new "EventCallback" method, or email
us if you need help doing this.
- The fe_UnloadCOM function (internal) is now obsolete, the internal
_ThreadQ is also now obsolete, as is the private glo_UsingOldClasses
variable
- The feInit function is now private (was once used by the Global Extension
template, no longer necessary)
- Expanded the FeHtmlEditor::Edit method to support Tables
- FeBrowser "DOM" code now supports IMG tags also
- Changed the data type "fe:QParam_Type"
in order to return more data via the feBrowser::GetElementQ method (this is the
only method that uses this data type), you might need to change your code
accordingly if you are using the feBrowser::GetElementQ method
- Improved / expanded the fe_OnlineStatus function, and added a new function
called fe_OnlineStatusConnectionName
- Fixed an issue in the DOM code (GetElementQ, SetValueByName etc) which
caused GPFs if dealing with very large webpages. Several other internal
improvements here. (Ver 3.26)
- Internal improvements to the feBrowser, feHtmlEditor and feMedia "Init" methods.
- Fixed a possible problem with
the way the feBrowser object was closing down
it's callback-event handler
- When using the Viewer Control to
browse html pages (feBrowser), the
FileDialog dialog window used to select which file to view now shows the
following (note, methods such as GetInfo also work with mht, xml and
eml files!) :
- "HTML
Files" - *.htm, *.html, *.mht
- "Text Files"
- *.txt
- "Image Files"
- gif, jpeg, png,
art, au, aiff, and xbm
- "XML Files"
- *.xml
- "EML Files"
-
API calls to
CreateCompatibleDC were
failing in apps using FE - Fixed
- The
feBrowser::ClickByRecordNumber method should now also support "Input"
element types
- New function called
fe_SetFocus. Not yet documented or supported.
- Fixed issue with DOM code
where element collections contain more than 127 elements (handled by the dll, no
changes needed to your code)
- Changed the FeBrowser::EventCallback method parameters - This will
break your current code, please see the docs for how to change your code
- New approach and new methods for handling callback events for the
FeBrowser object, see the docs for more info ( 32 new methods to handle IE
events )
- The DOM methods SetValueByName, SetValueByID etc now cause the "OnChange"
and "OnBlur"
events to fire in the html container when you set the value in an html list-control
(SelectElement) or input element from your code! This means that if the html calls a function (e.g. javascript / vbscript) when the user chooses something in a droplist
or enters some text into a field, then that
function will be called when your code changes the droplist selection or input
field also! This is all done automatically inside the dll, so you
don't need to change any existing code. Real life example: I
had a page with two droplists. The second list got populated with
options based on what you picked in the first list - done via a javascript
function fired on the OnBlur event of the first list. Using FE to
select something in the first list will now trigger the script function to
fire, which fills the second list, which you can then select from using FE
as per normal.
- Bug Fix : TextArea elements were not being returned in the Element Queue if
you selected "all elements"
- New method for feBrowser, feHtmlEditor, feMedia - SetFocus
- feHtmlEditor::Edit method now supports fe:HtmlEditor_Outdent parameter
- Documentation improved (broken into several smaller documents)
- Seem to have fixed the problems with using FileExplorer and OfficeInside
in the same apps (standalone mode only, local mode still not working)
- Internal improvements to the FeMediaAPI.Play and FeMediaAPI.Stop methods
- New functions: fe_MCIPlay and fe_MCIStop
- Some Win 98 first edition issues.. - think they're fixed in Beta 2
- Changing focus between windows hosting multiple WebBrowsers all
implementing Event Handlers croaks the app..
- fixed in Beta 2
- FeBrowser::Update method has been broken - fixed
in Beta 4
- Html Browser and Html Editor controls show "through" tabs
- fixed
- FeMedia object wasn't working under Win XP in
beta 1 and beta 2, fixed
in Beta 3
- HtmlBrowser and HtmlEditor had an issue with
legacy resize implementation, fixed
in Beta 3
- feBrowser::GetElementQ partly broken in Beta
1 - fixed
in Beta 4
- Submitting forms broken -
fixed
in Beta 4
- Saving html from the feHtmlEditor control to
a variable broken in beta 4 - fixed
in Beta 5
- FeBrowser event callbacks are broken. -
fixed in 3.44
- Callbacks broken for Media object ( see feabc.app "Advanced_Video_Callbacks"
) - fixed in Beta 17
- Callbacks broken for HtmlEditor object ( see feabc.app "Advanced_feHtmlEditor_Callbacks",
and "Advanced_feHtmlEditor_TabAndRightClick" ) -
fixed in Beta 17
- Finish the remaining FeHtmlEditor methods not yet using the new
engine:
- GetInfo (just a few items not yet done, almost all were never
documented) - fixed in Beta 17
- KeyPressed - fixed in Beta 17
- Seems to be an issue with having my Viewer control inside a (boxed)
group, see the feabc app's "Advanced_feBrowser_Tabs" procedure.
For now you can temporarily work around this issue by not having Viewer
controls inside (boxed) groups. - fixed in Beta
19
- Issue with the feBrowser object "leaking" through tabs
as the window opens - fixed in Beta
19
- Issue with the feHtmlEditor object "leaking" through
tabs as the window opens - fixed in Beta
19, requires some code
- Support for FE / Office Inside co-existing in same apps
- seems to be fixed in 3.38 Beta
- Adobe Acrobat 6 support - needs to be tested
- no known issues by 3.44
- feMedia events not passing in correct parameters
- done in version 3.47
- Filling in fields contained in frames - done
- Submitting forms contained in frames - done
- FeHtmlEditor docs need to be updated - mostly
done
- FeBrowser has been reported to "show through" tabs in
legacy apps - partly fixed in 3.11
- Ability to "push" buttons via code (feBrowser) -
done
- Revisit and document the SilentMode property -
done
- Setting radion buttons from code using feBrowser -
done
- Flash - control what happens when Flash buttons are pressed -
done
- Flash - Callbacks - done
Version 2.9X : ( Several unofficial releases )
- First version ever where we've changed some things making this version
non backward-compatible. We have added a section to the docs to step
you through how to upgrade your apps to use this version, click
here
for details. Changes outlined below.
- Several local / global variables are now no longer used - moved to
properties.
- The "Path Variable" option on the Viewer Control templates
is now disabled / obsolete.
- The "Use old classes" option on the Global Extension template
is now disabled / obsolete.
- Changed the way we load initial documents for each Viewer control,
code moved to a procedure called "feLoadInitialDocument_ObjectName",
embed points added so you can customize this. ( Also: Some objects
were loading the initial document from ThisWindow::Init, other from the
Window Open event, now all objects use the window open event. )
- Moved the code that triggers an event:accepted on the File Explorer
entry control (Viewer template) from ThisWindow::TakeFieldEvent, to a
new procedure called "feWindowTakeFieldEvent_fePathControl_EventAlertKey_ObjectName",
which is called from TakeFieldEvent. Embed points provided.
- Moved code out of ThisWindow::TakeEvent into a new virtual method called
TakeEvent.
- Moved code from the TakeEvent logic into a routine called "feWatchingParentPropHideStatus_ObjectName".
Embed points preserved.
- Various improvements, fixes etc, including:
- Fixed a problem with the feMedia (Video) control's event:alertkey code.
- FAQ's
- Docs (including Summary of callback events)
- Examples ( including in feabc.app: new Frames examples; new callback
example for feMedia and feHtmlEditor, new example showing how to load
from a listbox )
- Loading initial documents for feMedia objects (template settings) redone.
- Changed the equates for the feBrowser events (old ones still supported
but no longer documented, click
here
for info )
- Added equates for the feMedia callback events ( and updated docs, click
here )
- Added equates for the feHtmlEditor callback events ( and updated docs,
click
here )
- The feBrowser::Load method now takes additional parameters, the only (additional)
one working at this stage is one to specify a TargetFrameName.
- Removed several options from the template settings.
- New method: FeMedia::TranslateEventID (similar to FeBrowser::TranslateEventID
)
- New function called "fe_StartIE". Replaces the feBrowser::StartIE
method which is no longer documented.
- Added some code to the Advanced_feBrowser_DOM example, courtesy of Carl
Barnes.
- New procedure in the feabc.app example, called "Advanced_feFlash_HelpAbout".
- Eliminating variable size restrictions. So far have done the feBrowser
Navigate method. More to come.
Version 2.5e : ( Released 20 Dec 2002 )
- The FeBrowser::EventCallback method now takes 7 omit-able parameters, also
improved the methods functionality.
- Updated the "Advanced_feBrowser_SimpleCallbacks" procedure in
feabc.app to demonstrate FeBrowser::EventCallback's new functionality.
- Worked on documentation / example applications.
Version 2.5d : ( Released 12 Dec 2002 )
- The self.Debugging property which was being set by the global extension
template is now set by passing a parameter to the exe, in the form of "/debug0",
"/debug1" or "/debug2".
- Tidied up the documentation and examples. Concentrated mainly on
FeBrowser and FeHtmlEditor.
- Added three new buttons to the Html Editing buttons controls, to "Select
All", "Undo" and "Redo".
- The ClassVersion method has been replaced by a new function called
fe_ClassVersion.
The old method still works but is now undocumented.
- The OnlineStatus method has been replaced by a new function called
fe_OnlineStatus.
The old method still works but is now undocumented.
- New concept ( thanks to Charles Edmonds <g> ); there is now a subfolder
in your C55\3rdParty\Docs\FileExplorer folder called "misc".
I'll be adding useful pages to that folder from now on. Any suggestions
welcome.
- Renamed most of the properties in the FeBrowser and FeHtmlEditor classes.
Have left the old properties in tact, still support them etc. so your code
won't break. Busy changing all docs and examples to use the new, correct
property names.
- Templates no longer call the feInit function.
- The feBrowser::Kill method now takes a parameter: Kill(byte
level=0)
- The FeHtmlEditor::Edit method now supports the following (additional) equates:
- fe:HtmlEditor_SelectAll
- fe:HtmlEditor_Undo
- fe:HtmlEditor_Redo
- Improved the CallFe_EditMethod template
- Added equates for the feBrowser::Edit method, changed templates accordingly
- The following (additional) feBrowser events are now supported in the library:
- NavigateError
- PrintTemplateInstantiation
- PrintTemplateTearDown
- UpdatePageStatus
- PrivacyImpactedStateChange
- The following feBrowser events are now documented and use these equates:
- fe:WINDOWSETRESIZABLE
- fe:WINDOWSETLEFT
- fe:WINDOWSETTOP
- fe:WINDOWSETWIDTH
- fe:WINDOWSETHEIGHT
- fe:WINDOWCLOSING
- fe:CLIENTTOHOSTWINDOW
- fe:SETSECURELOCKICON
- fe:FILEDOWNLOAD
- fe:NAVIGATEERROR
- fe:PRINTTEMPLATEINSTANTIATION
- fe:PRINTTEMPLATETEARDOWN
- fe:UPDATEPAGESTATUS
- fe:PRIVACYIMPACTEDSTATECHANGE
- The FeBrowser::EventCallback method now takes more parameters (omit-able).
This method is being worked on and should be more useful in the next release.
- Expanded the (undocumented / internal) Debugging method
Version 2.5c : ( 8 Nov 2002 ) ( 43rd official release of File Explorer,
exactly 2 years since beta 1 )
- Fixed a problem / incompatibility between FE and IE6. The problem
would have resulted in an error message to the effect of "There was a
version error trying to launch the pdf control, version error: 6.0.2600.0000"
when trying to load PDF files. The problem only exists when you set
the templates to "Use the latest version" of Adobe Acrobat.
If you have set the templates to specifically load Adobe 4 or Adobe 5 you
would not experience this problem.
- Improved / enhanced various methods, including:
- Improved the FeMaster::GetRegValue method - Now supports DWORD data
type
- Improved FeMaster::OcxVersion method ( enhanced PDF version info support
)
- Improved FePDF::Load method - more robust
- Several improvements to the FePDF class, and updated the documentation
- Changed the position of the feDispose() call (template change).
- The feBrowser::GetHtmlGraphicsInfo and feHtmlEditor::GetHtmlGraphicsInfo
methods now (alternatively) accept a string as the passed parameter.
- The fePDF::Load method now optionally returns a byte, indicating whether
the method passed / failed. Will expand this concept and change the
other objects and document this in the next release.
- Updated the fenet.app (File Explorer / NetTalk) example.
- Updated the Advanced_fePDF_VariousControls procedure in the fe_abc.app
(demo).
- Added a section to these docs with the url's to download the latest components.
( 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]