>L<'s
MasterClass Framework
C&L Nicholls - Spacefold
Lisa's Page
>L<'s Fox Stuff
Note: before reading and using any information on this page, please
read the caveats *3 with which I provide
material for your use. You may also want to read the short note
*5 on why I've
written MasterClass, what MC is, and how I make it available, if you have no idea what the MC Framework is about.
Please note
Development of MasterClass Framework has officially stopped in VFP 6. You'll find
more information about this decision elsewhere on the FoxSpoken pages -- here,
I'll just briefly explain that VFP 6 offers better architectural opportunities. MasterClass' original purpose (to educate VFP developers)
is still legitimate, but much of its premises, and the problems it solves, are inherently better-solved by VFP internally than they were when MC was conceived.
This page
remains for the use of those people still using MC for VFP 3 and VFP 5 development
projects.
Unpassworded M_CHG#.ZIP Change file(s) for Conference Attendees
M_CHG1.ZIP: Changes in MC Version 5.1 (post DevCon '96) updated Oct.96, ~21k
M_CHG2.ZIP: Changes in MC Version 5.2 updated Mar.97, ~27k
M_CHG3.ZIP: Changes in MC Version 5.3 updated Apr.97, ~14k
These small, unpassworded zipfiles contain changes -- what's new and
fixed in MC since versions distributed at various conferences. I'm talking
about the changes to the files you use to develop in MC (delivered
in MASTER.EXE by GENMC, or generated by GENMC), rather than all the changes
to the GENMC delivery/generator mechanism, although you'll find the latter
referenced in the change files as well.
The notes contain various pieces of VFP development advice along
with MC-framework-specific changes, which is really why I make them available
freely here.
MC Framework files for people who have received a password
from me
Please don't bother to d/l these (rather large, passworded) files
unless you know beforehand that you're supposed to do so.
GENMC.ZIP updated Apr.97, delivering MC 5a.3, ~399k (generator application to deliver the MasterClass basefiles and startup MC Framework-based
applications)
M_DOCS.ZIP updated Apr.97, ~177k (documentation
for the MasterClass Framework)
Instructions/version caveats for the people who should download
these files:
MC 5a.3 is a very minor upgrade to 5a.2, uploaded Mar.97. If you already have GENMC.APP 5a.2, you can skip this download and just pick up M_CHG3.ZIP, which describes the differences. M_CHG3.ZIP's chg_source field will give you everything you need to edit your MC base files up to the latest version of the framework.
In most cases, however, you do not need to download the change files above. Each of those zipfiles is contained in an M_DOCS record (read the Version Changes section and
COPY these files out of the MEMO field TO <filename>ZIP
as instructed). If you have been using MC before the current version, you
should probably read the M_CHG# logs before you do anything else!
I have tested both GENMC.APP and the framework as well as I can in both VFP 5.0 and 5.0a. However, this version was developed almost entirely in 5.0a. If you experience difficulties in 5.0, they should either be described in the change logs or I don't know about them -- so please tell me!
CAVEAT: this version of the MC framework requires a 5.0a version of GENMENU or GENMENUL.PRG, If you are using a version of GENMENU that is too early, GENMC will try to warn you and do something about it. If you're not using GENMC, you have to take care of this on your own.
Put the APP and the M_DOCS.DBF/FPT all in the same directory
when you unzip them. If it can find your Wizard.DBF file, the APP should
register itself as a Wizard and you can use the Tools...Wizards...All list
to get it later.
MC News: MC as a Server?
Several people have asked me whether the VFP 5 version updates MC for
OLE Server (DLL or EXE) development. The answer is 'yes it does, although
I'm not sure that MC is the best Server framework you can have'. I certainly
have made MC 'Server-aware' in 5, removing visible feedback and other aspects
inappropriate to automation or Server activity when you indicate that the
app is a Server-type, whether you instantiate it in the current session
of VFP or in its own protected environment. Like most MC settings,
this one is a Controller property, and you shouldn't have any trouble switching
its value on and off -- assuming your code is similarly careful
to check its surroundings.
Remember, every framework specialises, and mine specialises in multiple
instances of a given app. This does have potential for a Server application.
However, MC also puts a lot of effort into environmental strategies that
are required for safety in one session of VFP -- this kind of thing is
unnecessary for a Server app. Notably, the Controller object is
a formset to provide a private datasession, with some attendant overhead
over a an object descended from a simpler baseclass -- and this effort
is completely wasted in a Server, where everything -- bliss! --
including SET("HELP") and every other detail will be encapsulated
automatically.
So (sorry for the long wind-up), I'm still trying to decide whether
it is worthwhile to re-vamp the Controller into two collaborating objects:
a custom object that "takes care of business" and a formset only
instantiated to provide the private session where the MC application is
not a Server.
It's a lot of effort, and I don't want to do it quickly, since there
are a number of other services and design issues that might be different
in the Server case as well. For example, would I really need a custom forms
collection when _SCREEN.Forms() would never include any by non-MC-app forms??
For now, I'm content to have made MC capable of supporting a Server app
with some integrity, and the efficiency-design issues will come later.
I am proud to say (this is the good news) that MC takes less adaptation
for Server use than most VFP frameworks would. This is a direct consequence
of its lack of READ EVENTS assumptions. At the same time, the supporting
components that allow MC to ignore the READ EVENTS prop are overkill for
many developers. I'm looking into simpler alternatives,
especially for use by beginning VFP programmers.
Meanwhile, this doesn't stop my adding small tweaks and refinements...
look back at the information on GENMENUL.PRG
for some related discussion.
Later,

Lisa Slater Nicholls