4Dv6 New Features Summary
Part 2
We have some more stream-of-consciousness notes from the second
half of the 4Dv6 New Features class:
- Proc.: DIRECTORY LIST and DOCUMENT LIST provide
file system information a la FilePack.
- Full access to resources: String list to Array, etc.,
resource file control -- opening and closing, creating resource,
both on MacOS and Wintel.
- BLOB Support, including: ARRAY TO BLOB, COMPRESS
BLOB, BLOB TO DOCUMENT.
- There are 621 new commands total, according to François
Marchal.
- Procedural control of password system.
- Built in 4D Web Server.
- COPY SET
- String commands: ISO TO MAC, MAC TO WIN, WIN
TO MAC
- Everything in FilePack now in 4D -- including setting docuemtn
types, setting position in afile you open -- true random access to
files. Get Document position, set document position,
etc.
- Environment commands: Current machine, Count
screens, Screen depth, Set screen depth, Menu
bar screen, Current machine owner, Menu bar
height
- In transaction is now a function
- PICTURE MENU BORDERS, PICTURE MENU HIGHLIGHT,
PICTURE MENU LEGEND
- Database event, trigger level, TRIGGER PROPERTIES. Table
events on add, modify, load, and delete records. We got triggers,
folks!
- User interface commands: GET MOUSE, PLATFORM
PROPERTIES, POST CLICK, POST EVENT, POST
KEY, SET CURSOR, SET FIELD TITLES different for
each process anduser
- GET GROUP LIST, SET GROUP LIST, GET USER
PROPERTIES, SET GROUP PROPERTIES, SET USER
PROPERTIES. This allows creating and deleting users
programmatically.
- Pierre LeBlanc from ACI France will be moving to the US
to support the Connectivity Products.
- DRAG WINDOW, ERASE WINDOW, Find window,
everything you could want to do to a window! Create Window now
returns a number to which to apply all these commands.
- Q & A
- Q: Deactivate phase -- when you switch out of 4D to another
application, will you get a Deactivate event? A: No. It's a
very good idea, though!
- Q: Any command now to blink the menu bar? This for when 4D
is in the background and needs to get the user's attention. A:
This is mainly a Mac thing, so not in this version.
- Q: Time arrays? A: Yes, but not sure?
- Q: Can you add a procedure to get an array of 4d choice
lists and an array of procedure names and an array of form
names. A: Not in this release, but maybe later.
- Q: Explain constants again? A: FM is not sure of the
answer; this may be "tutal bullsheet" -- there is a uture
version feature for an ditor for user-defined constants
- Q: Gestlat command is on the list for 4Dv6; how does this
work in Windows? A: Yes, this works in windows. Of course, not
all Mac features are here, but things like keyboard, FPU, etc.
Q: Will there be a list of Gestalt selectors? A: You're on your
own for these; they are well docuemtned elsewhere.
- Q: If a compressed BLOB is saved to disk, can it be opened
by Stuffit? A: It's an internal format to 4D, and can only be
opened by 4D. It uses the Jivaro compression engine. You can
pass a compression method to the COMPRESS BLOB command. There
are currently two: slow and good, and fast and not so good.
- Q: Could at some future time you ensure that for every GET
command there is a corresponding SET? A: We think there are? Q:
e.g.: QUERY DESTINATION has no corresponding GET. A: It's only
valid for the next query. That's not right. It is persistent.
Comment: basically there are some refinements to make for the
next version.
- Comment: MDD couldn't add features now, no kidding. We want
this to ship. Bruce wants to have a good Christmas. (Laughter)
- Q: When will Drag & Dro be implemented outside 4D? A:
There was much discussion about this; for this version, we
decided to support only inside 4D. A later version will support
it.
- Q: How do we handle Modified record? Will triggers change
this? A: No. Triggers will add features to this, but it is
still supported and acts just the same.
- Q: There is an ON DATA CHANGED event. Does this compare
against the most recent value? A: It's not an event. It's a
function you check during the execution cycle. (Walt clarifies
the question) A: The field is considered modified if you have
changed it once. You can still use the Old function, however.
- Q: Domi showed a record going into a BLOB. How? A: (FM
demonstrating) A BLOB can be large, of course. Anything can go
into a BLOB. He shows with an array, but it could be ANYTHING,
literally. Our summary: BLOBs work exactly like PictBundle,
with no cursor. You can write many things to one blob. BG
commentary: whoops! 4D BLOBs support an offset, so they ARE
just like a PictBundle. Cooool. You can even store BLOBs inside
BLOBs. (FM again) There is no catalog for a BLOB; you are on
your own for maintaining the internal structure of a BLOB.
- Q: Tell us about the development effort? What is France
doing? What is US doing? What compilers? What platform do you
develop? A: ACI has a developemnt team in France and in the US.
We work together. We all have PCs and Macs on our desk. We
compile on one, and and test on the other. It's in a mix of C
and C++. (Walt answer) The teams are virtually locatd. Some
work in the US, some in France, they go back and forth. The
whole team is here right now. Next week, they go to France for
the French DEVCON.
- Q: Do the file system commands work with shared volumes?
A: It won't show you the file system on the server, but you can
use the new messag epassing commands and execute on server to
get that information.
- Q: Can you save a BLOB on the server? A: Yes; using the
message passing commands.
- Q: Does DISTINCT VALUES now work with numeric fields? A:
No.
- Q: Is there a command planned for getting the current
procedure and line number? Like ASSERT. A: Line numbers don't
mean anything when you compile. The answer: not yet.
- Q: Can you modify the names of a file and field
programmatically? A: Not exactly; you change the presentation
of those names to each user.
- Walt says: the aliases work in all the 4D editors: search,
sort, label, report, etc.
- Q: Are the Search and Sort and QuickReport Editor the same?
A: (FM) Yes. I will show you.
- Search Editor is drag and drop sensitive; it looks
fairly similar, but with more fluid features.
- QuickReport Editor: It's very nice. The window is
expandable, and is drag & drop savvy. The field and file
list is on the top, with the report area on the bottom with
a grow box. It is currently a work in progress, but it looks
really good.
- Search and Sort editors -- when you are building a
query, it will let you see only related files, and not all
the files.
- Q: JOIN command? Faster? A: We have been working on it. Q:
Can it be used in a transaction? A: I don't know. I didn't
write any lines of code in this part of the source. (Laughter).
- Q: Programmatiaclly create and delete tables and fields? A:
There are new external entrypoints for doing this. I'm not sure
I'm allowed to tell you that. (Laughter) He's been fired twice
today! (More laughter)
- Walt comments: This is near and dear to my heart for the
support of CASE tools. I'll be lobbying for this.
- Q: ON ERROR CALL -- can it return the call chain as well as
the procedure? A: I'm not sure -- you can't do this now. I'll
put it in as a feature request.
- Q: Is there any way to trap for user shutdown? A: Do you
want ON CRASH CALL? (Great laughter) Q: No no, just for
shutdown outside 4D. A: If the user selects shutdown, 4D will
call it's ON EXIT procedure. The same is true of the server: ON
SERVER STARTUP, ON SERVER SHUTDOWN, ON CLIENT CONNECT, ON
CLIENT DISCONNECT. Wow!
Back to the DEVCON Update Page...