Wiki Home

VFP Toledo Wish List


Namespace: VB
See all the lists in Category Vfp Wish Lists
"Toledo" is the not-so-secret code-name for version 8.0.
Microsoft now monitors the OpenTech Wishlist as well, giving VFP developers a choice for posting their ideas. -- Ed Leafe
Microsoft sees the UT Wish List. Once you've LoggedIn to the UT, which you have to do to make a wish or comment on one, navigate directly to the wishlist by clicking on Universal Thread Wish List Offsite link to http://www.universalthread.com/wconnect/wc.dll?LevelExtreme~4,1,1
. -- Nancy Folsom
Any ideas for how to tidily add 'Me too!' votes? Cross-reference to UT list? And could we split up into different Wiki topics (perhaps Language,Form / Class designer,Menus,Reports,Data (SQL/DBC/DBF/SPT/Views), Debugging,Interoperability (Internet / .NET / Linux / Mac),Other), as this topic is getting huge and difficult to edit. I don't feel empowered to do this but if Wiki stalwarts agree... -- Walter Nicholls
Universal Thread list has a comment/followup feature now - très cool. I've posted *my* wishes to this now
Votes For
Votes Against
In VFP 8.0
New Feature

General Improvements

1 when you
print a prg,method etc windows, have it print the title at the top and
maybe number the pages. -- David Brandon
1 *Be able to
create and attach XP style icons to our EXEs. Imagedit.exe should also be
shipping with VFP. -- Mike Helland
1 *Compliance
with the new XP interface system. This would pass all GUI requests through
the new style interface system. Including messageboxes, getfile, putfile,
forms, buttons and other things. This would drive FoxPro a long way
towards presenting very visually appealing front ends. -- Louis Zelus
1 Support for image transparency to save all those $%@#$ .MSK files - try a form with an Image control, set to an icon file or GIF with transparent parts. VFP7 ignores the GIF transparency, and gets the icon wrong (posted as bug). Support for PNG would be good too. My best example of this is with graphical command buttons - not only do I need three .BMP files for up,depressed,disabled but a whole extra set of .MSK files as well - even if they are identical! -- Walter Nicholls (Posted to UT wishlist 2001.11.12)
1 Property of windows/forms to set background bitmap caching on/off on a per-form basis. For Metaframe/Terminal Server, putting BITMAPS=OFF into config.fpw is critical, but this breaks any code writing directly to a window surface - including the incredibly useful ? statement. For some applications, this is really useful and the slowdown for remote users is acceptable - but not for the whole application, and certainly not for _screen (which is usually entirely one colour!) -- Walter Nicholls (Posted to UT wishlist 2001.11.12)
2 Two way tools
1 *Collection type
1 Step into and through server stored procedures.
2 *Global search and replace within a project I also vote for this!
2 Native tree control
1 Native list control
1 Native mover control
2 Native date picker control
2 Native horizontal scroll bar control
1 Scrollbars on containers - can do it on forms. Potential problems - the container's design size will be different to its size on the form, what does Resize() mean? -- Walter Nicholls (Posted to UT wishlist 2001.11.12)
11
Direct read/write to/from MS Access MDBs.
Can't we use ADO for this? What advantages would adding this to the product bring? -- Mike Helland
Not having to install MDAC as part of a VFP product install would be a welcome capability; I don't know if I think this is worth the 3+MB that it would add to the VFP runtime files. (of course, if they rewrote it, the Fox team could fit into less! ;) The reason I like the idea of using MDB's is to consolidate all the tables and indexes of a database into one file. - ?wgcs
I don't use MDBs so this may be a moot question, but aren't they more dangerous? What if the MDB gets corrupted? Then all your files are in peril. Our current way, one CDX gets corrupted, nothing else gets affected. -- Alex Feldstein
Well, if its only to get the whole DBC in a single file, maybe it would be worthwhile to be able to throw everything into a compiled DBC? It would just be all the DBF/CDX/FPT files stuck to gether, and uncompressed when they're used. Hopefully it would achieve the same goal as the MDB and be more "native" foxpro like. -- Mike Helland Kind of like an APP or a ZIP file? Wouldn't that have to imply readonly - how would you handle multi-user, especially when they grow? I guess OLE structured storage would work. My first impulse would have been to pour scorn on the idea, but actually, I was pondering this very kind of thing yesterday! -- Walter Nicholls Somehow Access manages multi-user without trouble; The reason I like this idea is when you have a shrink-wrap product and want to provide the user with the ability to manage multiple database "thing"s (stores, families, games, whatever), that is, where a "Thing" is such a thing as is appropriate to open from a "File .. Open" or "File .. New" dialog box, and the thing is a VFP database, we presently have two ugly options: 1) Make the user pick a directory to put the database files into instead of a single file; or 2) Store all "Thing"s in the same database and make the "File .. Open" not really select a file, but select which "Thing" out of the table of "Thing"s. That is, VFP presently is unable to truly create a "document-centric application" because any (native) relational document in VFP is composed of multiple files. So native support for MDB's or conglomerate DBC's would be nice. - ?wgcs

My vote is against that. Why? Because it's totally unessesary bloat to the VFP runtimes. VFP 8 beta is already at 5+ MB. Do we really want to add more to that? Besides, MDBs are inherantly slower than VFP databases. And less reliable. Now, perhaps a "FPD" (FoxPro Dataset)? Maybe. But keep in mind, it will always be slower, becuase O/Ses are much better at delimiting files than applications can ever be. -- Peter Crabtree

1 *A view editor that works for views with more than
one table.
2 For the third time running, can we have a help
button on the standard messagebox so the user can look at a help file
before responding to the messagebox? -- Stuart Dunkeld
1 Suppress the parameter prompt when opening views with NODATA that have nested
parameterized views. - William Fields More importantly, enable the NODATA
ON LOAD option on VFP tables. This I am sure affects grids as well as
bound controls in which I would prefer to leave blank until I have
determined what record I want to show. - Geoff Phillips
2 Since any Include File can include any number of
other Include Files, why not break the large foxpro.h file into separate
smaller files named and organized by topic -- say, msgbox.h, clipbrd.h,
colors.h, mouseptr.h, prtinfo.h, language.h -- sections the file is
already divided into with comments. Keep a file named foxpro.h around for
compatibility, but let it be instead a series of lines that #INCLUDE each
of the other, smaller files. This way those of us who mainly use the file
for its Message BoxOffsite link to http://www.news2news.com/vfp/?function=73
, FontMetric and SysMetric constants only have to "pay"
for what we need. -- Willson De Veas
1 Put the spell
checker back for us dyslexixs PLEASE!!
1 Include file search path - perhaps SET INCLUDEPATH TO xxx;yyy. This would need to be stored in the PJX somehow to solve the need to CD before BUILD PROJECT, but don't forget those cases where we want to call COMPILE xxx at run time (most of my Web Connection apps do this with .wcs files) -- Walter Nicholls (Posted to UT wishlist 2001.11.12)
1 Always close a frame when you click on the close box. Huh?
1 'Print Selection' option in code editor. -
Mike Collins

IDE Improvements

2 I'd like any new
property or method added to become bold in the property sheet. While
working with properties I often have the non-default properties showing.
New properties/methods are hidden by this setting -- Mike Yearwood
1 Programmatic control over the command window, data session window and any other window that lives within the _VFP object. I'd like to be able to reset my environment without having to manually place the windows. - William Fields
What's wrong with MOVE WINDOW and SIZE WINDOW? -- Tamar Granor SIZE WINDOW doesn't work with the Project Manager Window
They don't work with the data session window. - WF
Sure they do. You just have to know the magic word-the name of the window is "View". --TEG
You're funny :) Thanks Tamar! - WF
1

Have the editor recognize definitions for variables (ie. HIDDEN loMyVar
as Form) and adjust case to match the definition within the code for each
occurance of the var name. Beautify will synch your variable
cases.

1 * edit window Let the "edit
parent class" toolbar live on one of the standard VFP toolbars. This way,
we wouldn't have to open the class browser to gain access to the toolbar
button. It seems like I'm always looking to see what the parent class is
doing in whatever code window I have open. - William Fields
2 Grouping of controls at/for design time. For example - select a number of controls on a form, right-click and select "group". Now, any time you're in the form designer, that group of controls behaves like it's in a container until you right-click and select "un-group". This would have no run-time behavior, it would only be a design time thing. This would save quite a bit of time when you need to move many controls here and there around a form. You could sort of do this now
by putting them in a container.
1 Group resizing -
when you have multiple items selected and you drag a resize anchor, all
the controls should resize. Not just the one you're dragging.
2 * 7.0 set as dockable Let the project
manager and property windows live outside of the main VFP window like the
command window does now. Now that I'm using dual monitors, I'd like to
move those windows to my secondary monitor.
1 From the "Behavior Changes Since Version 6.0" - "The Class/Form Designer surface grid now displays in actual grid coordinates instead of the behavior of previous versions of Visual FoxPro, which was to display in 2x actual setting." THIS SUCKS! Make it
user-definable, or go back to the way it was before - we use a 6x6 grid
and this makes the form designer look cluttered and way too busy!
1 Better Visual Source Safe integration. The ability to take advantage of more VSS features right from within the VFP IDE (merging/splitting etc...). Also, if a checkout fails because one of the three files are open (IE. .scx .sct .sca) - undo the checkout of the other files dangit! Oh, and being able to view the source control history
log of a particular method or procedure (rather than the entire form or
class library) would be way cool too.
1 Support for dual
monitors.
1 *Block beautify
1 Split screen -- What's this mean? Split-Screen in the Editor, ala VB?? Bill Armbrecht
1 Compare files
3 Allow Camel Case in the drop-down user-defined procedure listing in the class designer, similar to the predefined procedure names. This implies that VFP remember the case we type in the 'add property/method' dialog, and store it as such in the VCX. At the moment it is lowercased immediately -- Walter Nicholls
2 Allow the developer to indicate the default value
for new properties added to a class. Most of the times .F. is not the
desired default value and thus we need to go back to the properties sheet,
look for the new property, set the desired default value and then go back
to add the next property. -- Hector Correa
1 Allow a log option on project builds so if there
is a bad file that's causing a C5 crash during BUILD PROJECT an
examination of the log could give you a hint as to which one it is. --
Andrew Coates
1 This came up again today. A form in the project got corrupted somehow and was causing VFP 6 to just disappear. It took about 3 hours to track down which form it was. A log option would have pinpointed the problem immediately. I just ran into an issue where one file out of hundreds in my project was marked "readonly" at the file system, when I went to build the project, the only error I got was "cannot update the cursor" - great error message. I ended up having to check the properties of files that were spread all over our development area, not a fun thing. A log file would have eliminated an hour or so of frustration!
I'd suggest adding a WITH LOG cLogFileName [ADDITIVE] clause to the BUILD command, and adding a checkbox and file chooser text box to the build project dialog. Entered into
the UT Wishlist 2001-11-28 -- Andrew Coates
1 Display file extensions in the project manager's Other/Text Files node. I have several text files with the same stem in my current project (.ini .css .h) and I have to guess which one it is that I want to open.
Entered into the UT Wishlist 2001-11-28 --
Andrew Coates
1 * Persist dockable info to be restored next time you
come in.
1 The items in the Procedure: drop-down list in the
method editor should never be disabled. If a method is already open in
another window, selecting it should simply give that window the focus.
2 When recompiling a project, have the IDE tell me
"cannot recompile file MyFile.VCX" (with the name of the file!) rather
than the "cannot recompile cursor" when a file cannot be compiled.
1 Support for storing all kinds of classes in VCX files and editing in the Visual Class designer. I think an exhaustive list is Header, Column, Page, Session, Data Environment (any more?). This would almost completely solve the problem of building pageframes and grids with custom classes, it would also go a long way towards solving the pathing problems that PRG classes have (VFP7's define class as x from y notwithstanding. The argument (if anyone says it) that 'non-visual' classes can't be edited in the 'visual class designer' doesn't hold water, since you can edit Timer and Project Hook this way. I really wouldn't mind if all you saw in the designer window was an icon, although a good representation for Header and page at least would not be hard -- Walter Nicholls (not a new idea, asked for so many times) (Posted to UT wishlist 2001.11.12)
1 Allow us to define our own groupings (tabs, subtrees) in the Project manager/PJX. There are two distinct examples - different file types (eg Crystal Reports), and also functional groupings (put all Customer maintenance together, regardless of whether PRG, SCX, MNX, BMP etc) -- Walter Nicholls (Also not new idea)
I had an idea how to do this last night. Add one new record type - Group - to the PJX, and one new field - GroupID. Extend the project window so it has two views: By filetype, and By Group. In By Group mode, the project window enumerates the records of type Group, and creates a tab for each one, then simply reads the group Id of each entry to determine which tab it should go under. I guess there should be a tab called "Other" for items where the Group ID is blank or invalid. -- Walter Nicholls (Posted to UT wishlist 2001.11.12)

Debugging

1 Edit code that is executing in debugger window - a
la Visual Basic.
1 Breakpoint: Last line stepped from. I want a break
point to follow me as I step though code. If I step_over a procedure and
it blows up, I would like there to be a break point at the place where I
hit step_over, so that I can step_into the next time. -- ?CFK
1 put back the original functionality of SET ECHO
ON: echo the line of code out to StdOut (the current output: screen or
file) so that examples can be created that show the lines of code and the
resulting output. Mike and I did create a program to take a coverage log
and look up the source for each line, but what a PITA. -- ?CFK
1 A direct way to
troubleshoot the exact cause of the "Cannot Access the Selected Table"
error # 1152. What a pain! - William Fields
1 Treat "(Expression can not be calculated)" as a no-change in the Watch window. It makes tracing a property or a local variable nearly impossible as it is, as it goes in and out of scope every now and then. Losing and regaining scope shouldn't trigger a "value changed" reaction. -- ?Dragan Nedeljkovich
I think I'd rather
see that an option. While I usually want it the way you say, now and then
the point is to see when something goes out of scope. (And, yes, of
course, you can use TYPE() in the Watch window to do that, but then you
need two expressions.)--TamarGranor

Internet Enhancements

1 A function (or maybe a type of Transform()) that accepts any type of variable and turns it into something we can add to an XML node (It would do a transform, trim, turn the " into &Quot; and the & into &Amp;, etc.) -- Mike Helland
Maybe a "UrlEncode()" function that could accept a second parameter indicating how far to go (ie. Do encode spaces to %20, etc.). Maybe just a general "Encode()" that could do urlencoding, xmlencoding and uuencode. - ?wgcs
I thought of that, but, I'm not sure how often encoding a URL would need to be used (especially with the SOAP toolkit). Where as XMLEncode() (or HTMLEncode()) could be used an awful lot. -- Mike Helland
I think I'd vote for Encode( string, format ) returns string, and matching Decode. However, I'm wary of clogging namespace up this way. Maybe _vfp.EncodeString? We'd want a bit of discussion on exactly what encodings are important - I've written my own at least twice, different to each other and to Web Connection's URLEncode() --WalterNicholls
1 This may be more
of a Front Page issue, but I would like to be able to use VFP tables
natively with Front Page.
1 An XMLToObject() method, that we can pass a single
node too (as a string... < node attr1="z" attri2="c" />) and have it
return an object with a property for each attribute in the node. For
consistany's sake, ObjectToXML() would probably be required. --
Mike Helland
1 Any function that takes XML (right now, XML To Cursor(),
but maybe the XMLToObject() above) could, instead of taking a text string,
also accept an IXMLDomNode object. The reason for this is, I could see,
loading a document into the parser, then, finding just the node or group
of nodes you need, and converting that to a Cursor or Object. So you would
end up doing XML To Cursor(oXML.xml, "cursor"). That would, I'm guessing,
take the xml out of a DOMNode's property, and then, parse back into the
DOM again. If the function took the object itself, it might perform better
because it wouldn't need to reparse the XML? -- Mike Helland

Dot Net

1 Ability to compile to CLR. Why? See: Should VFP Be In The CLR
1 I'm not sure if there is something already like this
or maybe I just don't know what I'm talkig about, but would there be a
way, for the VFP team to create an ActiveX control that will house a .NET
component (an object written in C#, or VB.NET, ect?). That way, if anyone
wrote a visual object in the CLR we could add it to our forms. --
Mike Helland

Menu

1 * Some Menu editor enhanced like FORM EDITOR -- TabacaruTeodorCezar
Meaning? My two biggest desires are resizeability (in UT wish list) and the ability to move items between menus (or move whole subtrees). And even a treeview control would be easier to navigate than the current editor -- Walter Nicholls FG##(See UT wishlist 2001.09.27 by John Carter)
2 Object oriented
menus! - ?wgcs
2 SKIP FOR expressions should only be evaluated when the menu pad they live in is actually selected. Right now, EVERY SKIP FOR expression is evaluated whenever
a menu pad is selected, resulting in unneeded code execution. -
William Fields

Report

1 * Some Report editor
enhanced like FORM EDITOR - TabacaruTeodorCezar
1 Distributable (via .exe build) REPORT DESIGNER
also, alternate font for detail item based upon
expression - Bruce Jensen
1 * SomeSupport for all visual classes in the Visual Class
designer. (duh) Header, Column, Page?
2 Property to set instantiation order of objects in
a container. What about Zorder? Send to front, send to back
changes/sets this.
1 Anchor UI objects to their container/form so there
is no need to write resizing code. (See J++ form designer for a excellent
implementation of this feature. VB too I think.)
2 Column cut and paste like in e.exe from tse
(alt-K) or Word (alt mouse).
1 RegularExpression support. Design time: Code
Editor's search and replace. Runtime: cursors: Seek, [scope] of commands
(locate, scan for/where?); string functions: AT(), strtran()?
1 * You can chain print
reports
Subreports please: I'd like to have subreports
like those found in the latest edition of Crystal Reports. That is, the
ability to include into a single FRX document a sort of sub-reports, those
are executed and printed sequentially. Each subreport can have his own
layout, etc., but the report will be printed at once, like a regular FRX.
This will avoid the tricky method of generate PDFs or HTMLs files in order
to paste them together and print accordingly. --CarlosAPerez

View Designer

1 * view SQLtab for ALL of the DBSETPROP() properties for
Views

Database - DBC, DBF and Local Cursor engine

1 Support for a TYPE clause in the CREATE TABLE command - that way we can create the type of table we want from the start instead of creating it and then doing a COPY TO when we want a Fox2x
table. - William Fields
1 Support for default field values in Views!
To the best of my knowledge, this is already available, unless I'm missing something in your request... -- Randy Jean
If a view is opened and a blank record is appended, fields with default values defined at the table do not have values in the appended record. Of course the values are placed when the new record is updated, but during data entry, the user will not see these values unless we populate them manually. Please correct me if I'm wrong. -- William Fields
Hmmmm. I see what you're saying now. I'm not sure you want views to be "that" smart about the back end, even it it is against VFP data. If I'm doing view based apps against VFP data, I don't put anything that I rely on in the DBFs themselves, except for indexes and referential integrity. Maybe just a way to just "copy" the field properties from the DBF into a view that is based on it would be nice. -- Randy Jean I'd be happy with that! - WF
Randy, you are technically correct. You can define default values for views - you just have to do it manually with a DBGETPROP(To get the default value expression from the underlying table) and DBSETPROP(to set the view field default value expression) for each field - I think this is pretty weak. I would like to see views automatically include default field values unless we explicitly turn it off. - William Fields
Or you can do it through the "wonderful" view designer (gd&r). (see Properties button on the fields tab) -- Randy Jean
Right again Randy, it's been so long since I've used
that piece of crap... =P - WF
1 Add data types to properly support back-end databases. My particular bugbear is varchar: put a string value into a DBF, even a local cursor, and it gets padded out. This can cause problems when updating through Remote Views, only way round it is to manually create UPDATE and INSERT statements on the trim()ed value and send with SPT. See also warnings in Oracle Data Types on just this kind of issue. Proper support for timestamp would also be very good -- Walter Nicholls (posted to UT
wishlist 2001.11.12)
1 Better support for SQLServer timestamp fields. These must not be made updateable in a view. If you use the view designer, these are relatively easy to uncheck but CREATE SQL VIEW is a royal pain - and timestamp fields are hard to detect programmatically. -- Walter Nicholls (posted to UT wishlist 2001.11.12)
1 Referential Integrity that can be programmatically
set and enforced by the database engine, not triggers.
1 store the left,top,hight,width data in the dbc,
not foxuser.dbf. that way when a dbc is sent to someone else, the
positioning of the tables is preserved.
1 Select multiple objects (tables and views) and
move, expand, collapse, browse, delete.
1 print the visual version (what you see in the
designer, like Ms SQL EM's Diagrams)

Language Features

1 If you pass a path along with a filename to the FILE()
function, it shouldn't return .T. if the file doesn't exist in that
directory. If you want to find the file anywhere along the VFP search
path, leave off the path. Or, add another parameter to suppress searching
for the file along the VFP search path. - William Fields
1 Native Regular Expression support - ?lc
Full integration of the remaining Fox Tools functions into the language.
Are they _that_ useful? VFPCOM.FLL and the ADO stuff on the other hand, I'd agree wholeheartedly, see next... --WalterNicholls
1 Support retrieval of multiple records into a single object with a rows collection natively. Something like ADO without all of the overhead and without any methods or events. In other words something like SELECT * FROM whatever INTO OBJECT MyRecords. Support for selecting the records into an existing object should be included as well.
Sounds almost exactly like SELECT .. INTO ARRAY! I'd rather have SELECT .. INTO RECORDSET xx giving an ADO record set, 'all of the overhead' includes a lot of useful functionality, and ADO record sets can be passed to ActiveX controls and things very simply. --WalterNicholls
2 Ability to pass properties by reference. You can pass an array property to ASCAN( ), but I can't write my own ASCANX(...) and pass an array property. Why not? You can: just preceed the array variable name with "@" and the array is passed instead of the first element - ?wgcs
I don't think so. That works for array
variables but not properties - Zahid Ali
1 *Allow SCATTER NAME to create "real" VFP objects.
SCATTER NAME creates objects with properties corresponding to fields in
the table. Currently none of the VFP default PEMs are present (e.g. Name,
Class, Parent, Add Property()) SQL commands to accept a named object:
INSERT INTO table FROM NAME ObjectName. This makes the command consistent
with SCATTER NAME and GATHER NAME.
1 A way that wrapper functions can pass "the rest of the parameters" to a wrapped function. for instance, Doug Hennings MakeObject has tuParm1..6, and then a case statement so that the call to New Object is passed the same set of init parameters that were passed to MakeObject. It is a bunch of code, and it will break if someone tries to pass 7 parameters. I am not sure if there is already an existing syntax for the solution, but I am thinking that an array might do the trick. so the first line of MakeObject might look like: lparameters tcClass, tcLibrary, tcInApp, taParms()
I've done it this way, with functions like MyDoForm, in abbreviated code without error checking etc
function MyDoForm tcFormname, p01,p02,p03,p04,p05,p06....
    local cParamList = left("p1,p2,p3...p99", (pcount()-1)*4
    do form (m.tcFormName) with &cParamList
-- Walter Nicholls
2 Named Parameters - like VB: It makes the code
easier to read when there are many parameters, especially if most are
optional and not passed.
1 Arrays that can contain arrays, or more than two
dimensions for current arrays.
11
Arrays of 0 length - alen(ArrayName) = 0.
This
is one of those ideas which would have been great if they had thought of
it back when they added arrays to the language, but now might cause more
harm than good (existing code might rely on this behavior) - Zahid Ali
1 Extended COPY TO syntax, mimicking BROWSE
functionality, so that expressions can be output to (for example) an Excel
file, plus fields found in a separate linked table. Example: COPY TO
myXLfile.XLS TYPE XL5 FIELDS table1.field1, myexpression =
ALLTRIM(table1.field2) + ALLTRIM(table2.field2), table2.field2
1 Constant(eExpression): The inverse of Evaluate(),
it should take an expression of any type, and return a string that would
evaluate back to the value of the expression. That is, for any expression
x, x = evaluate(constant(x)). The return value would have the proper
punctuation to denote datatype (quotes for char, braces or Date Time() for
date and time, .t./.f. for logical, nothing for numeric). The punctuation
makes this different from transform(). Loooks like dates and datetimes
should be returned in date(yyy,mm,dd...) format.
1 Scope operators for functions, and allow functions
within methods. I realize that this would require a more formal begin/end
of a function definition, but that is not such a bad idea either. This
would allow me to do what I really want: functions within methods. Pascal
supports the concept of a function that is local to another function;
functions outside can not use it. C++ does allow for both private data and
functions. Also, protected which is just like private but it becomes
public for inherited members.
2 Strict type checking for variables. Be able to
define data types for variables, and get either compile time or runtime
errors if the wrong data type is stored. Since it is handy to hold values
where we really don't know the type, include an "unknown " type. For extra
credit, "unknown fixed" and "unknown varies": a variable of type
"unknownFixed" that changes type would cause a runtime error.
1 Structure type variable support. -- Ones that can be passed to DLL functions. Why was this put in
the "Recommended against" list?
1 A TIMEOUT clause to the READ EVENTS command to
allow uses to trap application timeouts without resorting to Timer
kludges.
1 CatList(cDelimiter, cList1, cList2, ... cList(n)
): Concatenate items into a list, separated by cDelimeter. If an item is
empty, it would not be included in the list. The query builder already
does this when it builds the where clause (expressions separated by .and.
) For extra credit: Take an array of strings and return a delimited list
of the elements. This would take care of the inverse of the aLines()
function: Cat List( chr(13), aLines )
1 Expose many of VFP internal methods. Examples: The
SQL parser: I would like to be able to pass in an SQL command, check for
syntax errors, and retrieve the components: the fields collection, the
where clause, the collection of parameters. The program parser: given a
line of code with commands an variables, resolve the variables to values,
and return a string that has no outside references.
1 Hooks into the program interpreter: (not the
parser or tokenizer) I would like to be able to assign code to be executed
pre and post execution of each line of code. parameters like program,
lineNo, the line of code, similar to what is displayed in the trace
window.
1 {begin scope, end scope} scope blocks: locals and
privates defined within a scope block are only scoped to that block. same
effect as putting the code within a block in a separate function. The
preprocessor could just create a function on the fly. it would show up in
the call stack just like any other function.
1 Stack and queue variable type: created by pushing expressions (values or objects) into it, and Pulling or Poping the values out. push stackname exp1, exp2, ...expN Pop stackname VarN...Var2, Var1 or Pull stackname Var1, Var2,...Varn
Pop is First in Last Out, Pull is First in First Out. stackname is scoped
like any other object.
1 system vars for all of the SET command settings: _ALTERNATE, _ALTERNATENAME, _ANSI, _ASSERT... _UNIQUE.
one system var that represents all SET setting as an array: _SET. _SET[1] = _ALTERNATE = SET('ALTERNATE'). This would simplify the control of SETtings: push lsSets _SET; set this to onething; set that to something else; bunch of code; pop lsSets _SET
1 Call commands as functions. Example: llDone = Cancel(); lnRepCnt = replace( "cFid1 with m.lcFid1", "kFid1 = m.lkFid"). Q: Why? A: on shutdown iif( type("_SCREEN.oApplication.name")="C", _SCREEN.oApplication.OnShutdown(), cancel() ) This would also get rid of much of the hacks used to construct commands: macro substitution, eval() and Name Expression (which has another example of this)
You can pretty much do this now tieh _vfp.DoCmd(). Also, as for above, here is one of the tips I was oging to show at GLGDW WOrld Tips Championship:
ON SHUTDOWN iif(messagebox("Wanna Quit?", 32+4) = 6, _vfp.Quit(), '')

Expose all settings and commands as Properties and Methods of _VFP. _vfp.replace( "fid with var", "all" ); ? _vfp.tally
1 Nested string delimiters. '[' and ']' have a distinct begin and end, so it would be possible to nest them and have the parser figure out what is the delimiter and what is the string. It would make code generators easier to build. Example: ? [ ? [reccount():], reccount(), [records.] ] Currently you need to
keep track of what kinds of delimiters you use and flip to one of the
others {single, double, braket}.
1 In-line CASE
similar to IIF() that would allow multiple conditions to be checked
without having to nest IIF() statements. ICA() (inline case?), IDC()
(inline docase?) Syntax: IDC(lCondition1, uThenResult1 [lCondition2,
uThenResult2 [lCondition3, uThenResult3 [...]]] [,uOtherwiseResult])
Pretty self explanatory if you know the syntax of IIF(), just cross it
with the DO CASE. If lCondition1 is true, uThenResult1 is returned,
otherwise lCondition2 is checked and if it is true, uThenResult2 is
returned, and so on. If none of the conditions is true and
uOtherwiseResult is specified, uOtherwiseResult is returned. Simple
example: IDC(a=b, "A=B", x=y, "X=Y", "Neither") The 2 main places I've had
to nest IIF()'s are in SQL Selects and 'Print When's' on report controls.
Usually there are only 2 or 3 IIF()'s but they get ugly and unreadable,
especially in the Expression Builder when doing a Print When. (A resizable
expression builder... might have to add that too.)
1 Inheritance and class definition enhancements Jose Marcenaro
- Ability to specify "must override", "can´t override", and so on, for each method (.Net style)
- Ability to select which of the public methods of an OLEPUBLIC class should be exposed as OLE public. I.e:
Define Class MyBaseClass as Custom
   Public Read()
   Public OlePrivate DontMessWithThisMethod()
EndDefine
Define Class MyOleClass as MyBaseClass OlePublic
...
This would be useful for filtering which methods to expose without
using an additional wrapper class. Of course, something as .Net
"attributes" would be even better, but I may be asking too much..

Base Class Features

1 *A new base class: Collection so that we can programmatically create and more easily manipulate collection classes. Why can we use collections (in ActiveX AND in VFP itself... Controls, Buttons, Projects are all collections) but not create them?
1 *A base class that doesn't have any built in properties and only includes INIT, DESTROY and ERROR events. The purpose of this object would be for creating business objects that don't have a predefined interface and that don't have pre-existing properties that conflict with properties that may correspond to the business object's data.
Perhaps it should have at least Add Property() too? --WalterNicholls
1 *CommandButton base class: Need to be able to
change the backcolor. Also need a property which, when I have both an
image and a caption, specifies that the image goes to the left (or right,
I suppose) of the caption instead of above it.
1 * User defined
container controls - It would be nice to be able to assign default
column/header/default control classes to a grid. Likewise with a
command/option groups.

Enhanced SQL SELECT

11
SQL commands should be friendly w.r.t. closing of tables that they open. When you need to mix SQL and xBASE table manipulation, it's bothersome to have to pick up after SQL when you need exclusive access to a table.
Another which would break existing code - Zahid Ali
-Allow datatype casting of numeric expressions:
SELECT NumFld1 * NumFld2 AS Expr3 N(10,2) FROM ...
or
SELECT NumFld1 * NumFld2 AS Expr3 B FROM ...
or
SELECT INT(NumFld1) AS Expr3 I FROM ...

add ability to create XML output similar to how it
is done in SQL Server 2000

Debugger

1 In the Debug Output window, the ability to combine
different types separated by commas, like you can do with the "?" command.
In VFP 6: ?21/7, "Hello World" && Prints "3 Hello World" in the
active window Debug Out 21/7, "Hello World" && Error 36
2 Debugger, Trace: Say you have a form with two
controls, both have code in the init method. If you are in the init method
of a the first control of a form and you hit "Step out", shouldn't it halt
at the beginning of the init method of the second control? It doesn't. It
seems that the loop that instantiates objects in a container doesn't count
as a level. It should.
2 Display the original value of any DEFINEd
variables when hovering over them.
1 * Code references toolThe ability to search the object hierarchy for a
variable, property or object. This would allow you to find every instance
of txtbox1 or whatever variable or object from _screen on down.
1 I don't see it very often in wish lists though I
think is the most important for debugging and VB has it (!). The ability
to edit the code while in the debugger without need to stop running the
application (I have lost tonnes of time having to go back to design mode
just because I misspelled something -- DimPap NOTE from Laurent Dujat: I
remember of a CASE product which did that in 1985 under Windows 1.0! It
was possible to step back in the debugger up to 10 steps, modify the code
following, and restart execution from previous step. Time saved was
fantastic! All this in 640K of RAM. This should be possible with 64Mo! The
product name was Message Maquette.
1 Reentrant error handler. Current behavior: errors
in an error handler are handled by the default VFP error handler. It is as
though the first line of the error handler is ON ERROR, and trying to
reset it is ignored. I would like to be able to trap errors that occur
within my error handler. See somepage
2 Property Sheet should accept numerical expressions and evaluate at design time. If I enter 272+18 in the property sheet for the width of a control, it should convert this to 290.
I second this, but it would require a data type designation for properties, so VFP would know it should perform the math rather than treating the expression as a string. So it might be difficult to do that.
Not if you put =272+18 into the property sheet (Even
Excel treats 272+18 in a cell as the string "272+18" - it requires the =
to indicate an expression). Currently VFP evaluates such an expression at
compile time, NOT at runtime (constant expressions are folded by the
compiler - if you want proof/discussion email me). So you kind of have it
now -- Walter Nicholls
1 Property sheet should allow use of #DEFINE constants as values. (Seconded!)
1 Fix the UI bug preventing reports from printing
from a COM DLL! - Switch to suppress page count dialog when printing a
report.
1 Support for RTF in the Reports. (REPORT ? TO FILE
foo TYPE RTF)
1 Support for XLS in the Reports. (REPORT ? TO FILE
foo TYPE XLS)
1 Support for report HTML output (as in REPORT FORM (lcFile) TO FILE (lcFileName) TYPE HTML) &&
a VERY good idea... Can't you use GenHTML to print reports?
1 *Add a variable or property to the report that
containes the total pages just like the _pageno variable. (I know this
adds alittle overhead to the speed but Access can print "Page 1 of 20" why
can't VFP.
1 Report output in Microsoft Word Format. -
Basically, MS support for John's Frx 2 Word
1 Compile to a stand alone EXE (no runtime libraries needed) (didn't FpDos and FPWin have this?)
No they didn't to my recollection (but it's been a while). -- Alex Feldstein
Yes, FPD had this (not sure what version
was the last to have this, FPW never had it.). I never found it too
useful. Just made a much bigger EXE.
2 File associations: .prg file should bring it up in
VFP's modify command, and not run the file. Perhaps double-clicking on an '.fxp'
file should cause a launch? That makes some sense... but not a
'.prg'. You can do this by defining the default behavior in the
association.
1 *A bare class. It would have minimal predefined PEMs: properties: only those connected with being an object: .name, .class, .parentclass, .baseclass, possibly a few others; methods: .init(), .destroy(), and .release(); events: init, destroy, release.
What would we gain by this? Why would we use this class instead of the session class? I think, what would be useful, is a bareclass with only an Add Property(). Then we could create our object, and only add the properties we need. This would be handy as a paramter object, or data object. -- Mike Helland
Session object creates a datasession, so that's a good reason for not using it --WalterNicholls
2 When we are in the debugger in debug frame mode,
it would be interesting to be able to browse at least the current alias or
better, to be able to call the set window.
1 COPY TO and APPEND FROM commands to work with
strings. COPY TO and APPEND FROM commands should work with string in the
memory. Yet I need to get encrypted DBF file into string, pass it to DLL
function to decode and get result string, save string into the file and
than use append from command. It will be much better if we will be able to
omit saving string to file just for appending data from it.
5 Version for Mac OS X!!! No, seriously, I really mean it... And since it's closely related,
BSD (unix) and Linux. (After all, there was a FoxPro v2.6 for Unix). It
would only be good for VFP (and therefore Microsoft), and wouldn't hurt
Microsoft!
1 Be able to use the return value of a function directly as an object reference. FOr example: newobject('form').name, or sys(1270).name (this should work for all custom methods too). Okay, the
New Object example is stupid (because if you don't assign the returned
object reference to something, you'll lose it), but the sys(1270) is a
valid use!

Some Simple UI things that are often asked for:

1 * Align picture
horizontally with text on a command button.
1 Make sure
carraige returns work on all UI controls with captions.
1 * Change the
color of command buttons
1 * Freeze grid
columns
Suggestions Recommended Against Additional arguments in favor of these are welcome
Votes ForVotes AgainstFeature
1Integration with MS SQL Server without ODBC
You can do it now.. it's called OLE DB. user may select sql or dbf freely
Why recommend against this? I interpret this to mean being having SQL Pass - Through and Remote Views able to use OLE-DB to get to databases, they are limited to ODBC now -- Walter Nicholls
1Ability to access a specific variable in a different data session using a new keyword. EG. x = lnOtherSessionVar from OtherDataSession1 Are you also asking for variables to be scoped to a Data Session? I don't believe they are in any case now; unless I'm just not familiar with a new feature of vfp7 - wgcs I think it means be able to see variables not scoped to the current program. -- Mike Helland Maybe he means to access a specific FIELD in an alias in a different Data Session - ?wgcs
1SELECT ... FROM ... INTO XLS [Excel Application Object name] -- Anatoliy Mogylevets
You can do this now by using a temporary file and loading that file into excel (either by issuing a ShellExec on the file or by instantiating an excel application object and explicitly loading the file. You could even use a CSV file, do a FileToStr, assign the string to _ Clip Text and then cause a "Paste" operation in the excel.application object.) Do you really want a VFP language feature to break if M$ Excel isn't installed on a user's machine? (see Ms Product Activation)

DotNet And Vfp Dbc
Category VFP 8 Category VFP Future
( Topic last updated: 2005.03.14 09:50:06 AM )