Thursday, February 05, 2009

Program Consolidation

Now that 4D has a Maintenance AND a Partners program, I think it's time to consolidate them.  I needed it explained to me a couple of times, and judging by the traffic on the NUG, it looks like everyone does.

Combining and repricing I think will benefit everyone.

Sunday, November 30, 2008

Fix Font Rendering At Magnification

Wow, it's been a while since I did any 4D work - like months.  Today I'm working on a form that's being reproduced from an existing one (as in "I'd like this form to come out").  Unfortunately, 7 and 9 point fonts in 4D render like crap when you increase the magnification to 200, 400, or 800%.  What you get is what you saw on the screen at 100%, just blown up.  In other words, the fonts don't seem to be re-rendered.  The image just gets enlarged, which makes it all difficult to read and use.

So please fix that.

Monday, November 24, 2008

Back, Bookmarks In 4DAF

Morfik and Google's Web Toolkit have been around long enough, that I would think that everyone would be coming around to certain features that are obvious user interface improvements.

So, 4D, can we please get the back button and bookmarks working in the 4D Ajax Framework? Please?

Thursday, March 13, 2008

One:One Relations

I'm not sure why, but Chip Scheide thinks it's a good idea:

yes these exist based on a one to many with only one record in the many
-
but a specific one to one relation (maybe a square (or circle) on both ends of the "arrow")

Which enforced a strict one to one relation.

Wednesday, March 12, 2008

Write-Through Cache

P. Smith again:

Cache flushing replaced by write-through cache
------------------------------

Flushing cache... that's a whole different topic that surely could use some work too... Even in v11 it's still a kludge. I would love to see an option for write-through cache: when a record is saved or a transaction is validated, the data is written immediately to disk. In this case, the cache would still be used, but only for finding recently used data and indeces for query purposes - not for storing unwritten data. The underlying OS would then determine when data is physically written to disk - which is one of the things OSes are generally pretty good at.

Pause/Resume 4D:

P. Smith has a couple of interesting ideas:

Pause / resume 4D
----------------------------
I'd love to have a feature in the 4D environment similar to Parallels Desktop, allowing us to pause the entire 4D application and resume at will. Sometimes 4D gets so greedy with system resources that it grinds my development machine to a virtual halt when methods are running on a very large database. Sometimes I have two or more copies of 4D running. They can really grind the whole system to a near halt, especially when flushing cache.

Another Shield Idea: Get Rid of Them

Chip Scheide thinks that we should get rid of shields altogether:

Shields - get rid of them!

I would suggest as a replacement : color code/pattern code (combination?) the older style corner style marker to indicate what properties are set.
programmer settable colors - similar to method editor.

the shields are cludgy at best - and get in the way - MOST of the time.

working with forms with well over a 2 (sarcasm) - but in reality over 40 or so - objects the shields are worse than useless they make it difficult to impossible to work with the form.

More Graceful Kills When 4D Backup Runs

Bob Miller, you have the floor one last time:

If a user attempts to connect when a backup is in progress, the message, "4D Server is currently performing a backup..." is given. The only button option is 'Abort'. I found that if the user does this, it can send him into an uncertain state, because the current method does not finish executing. I'd like the option for the user to quit 4D at that point (because if a method is aborted, I don't want the user logged in anymore).

"Build" Button Directly On Compiler WIndow

Mr. Bob Miller:

Put a 'Build' button directly on the Compiler window. Why go to the menubar when I have a whole window devoted to compiler operations?

Fix Clicks When Multiple Environments Open

Bob Miller (I'll second yet another):

Now that the toolbar is across the top of the design environment, if you have windows open in the Custom environment, and windows open in the Design environment that are visible, you can't just click into the Design environment and know where you click is going to be placed, because as soon as you enter Design, the toolbar pops up and moves your "destination" downward. This is most irritating. I often have a form editor window open and want to click not only into Design, but directly onto the object that I'm tweaking. I click, and often another object is clicked upon. Going from Design to clicking on something in the Custom environment is no better. Either programmatically move the cursor so your click accurately passes through from one environment to the other, or allow the Design toolbar to be undocked and work as a floating palette.

Allow Smaller Editor Windows, Despite The Toolbars

Bob Miller:

Now that tools are down the left side of the window in the form editor, this essentially creates a fairly large minimum window size. Allow the user to resize the window smaller, even if it means covering up tools. Create a "..." area, that if clicked, shows the 'hidden' tools in a popup.

Allow Copying of Names Of Explorer Objects

Bob Miller:

Allow copying the names of objects in a folder to a clipboars, so they can be pasted into Word or Excel. In general, it would be nice to be able to copy names of objects whenever they are listed.

Allow Objects in Multiple Folders

Bob Miller

Allow an object to be in more than one folder at a time. Provide a 'Copy to' command on the popup in addition to the 'Move To' command, used to move an object to a folder.

I'll say here that I'd support some sort of alias scheme, instead, if needed.

Explorer - Increase Areas Where Folders Appear

Bob Miller:

Show folders also under 'Project Methods', or allow two Explorer windows to be open so one can view the project methods in the explorer while also viewing the contents of a folder.

Enhance Explorer - Put Methods, Forms Into Folders

Bob Miller:

Provide for putting methods, forms into folders from the explorer

Select Explorer Folder in Editors

Bob Miller:

Provide for putting methods, forms into folders from the method or form editor

New Command: Query Selction With Array

Also courtesy of Bob Miller

New Command: Query Selection By Example

Yep. Bob Miller has something to say about this, namely that we need this command.

Query By Example Default Values Set By Method

Bob Miller:

Allow form methods in forms used by Query by Example to set default values on fields and buttons (for search criteria)

Lose The List At The Bottom Of The Method Editor Preference

Bob Miller:

Allow one to completely turn off the list at the bottom of the method editor.

I thought you could already do this by dragging the bottom of the code section down, but maybe I don't understand.

What Was The Name Of The Form I Tweaked Yesterday?

Bob Miller - another second from me:

Display the time/date of creation and last-modification on each form and method, allow searching for objects that were changed within a date range.Ideal: Have a view that lists the 50 (or user preference) most recently modified objects.

Find In Database Search Menubars, Too

Bob Miller:

When using 'Find in Database', look in all menus and menu items for the text and for any methods that may be associated with the menu items. As it is, methods that are only called out in menubars can't be traced to the menubars that call them.

How Long Is That Alpha

Bob Miller yet again, and again - I like this idea, too.

On the explorer, show the length of alpha fields directly in the 'Tables and Fields' listing.

Split Method Types in Explorer

Bob Miller:

On the explorer, put Form Methods on a different list (with a separate icon) from Database and Project methods. If you have a lot of tables, then project methods end up at the bottom of a long list.

Method Editor Highlighter Tool

Bob Miller was busy...

Provide a 'highlighter tool' for the method editor, where the highlighting 'sticks' to the text, even if lines are added or removed above the highlighted text.

Don't Display Empty Clipboards In Method Editor

Bob Miller with another excellent idea that I'll second:

Don't display empty clipboards in the method editor.

Simpler Listing Of Objects On Form Page

Bob Miller, layout guru

When in the form editor, create a page that lists every object on the current form page. This is somewhat similar to the popup at the top of page 1 of the form editor, but a listing that is always open would be nicer.

Shields for Draggable, Droppable, etc.

Bob Miller, Master Of The Shield:

Create shields to identify: Draggable, Droppable, Focusable, Tabable, Enterable, Non-Enterable, Invisible by Default.

Page Zero Shield

Bob Miller:

Create a shield to identify 'Form Page Zero' objects.

Simpler Entry Order Mod For Complex Forms

Bob Miller apparently builds really big forms, so...

Would be nice to be able to edit the entry order directly, instead of having to redo the whole thing just to make a change in the middle of the entry sequence.


Make Meaning of Entry Order Shields Clearer

Bob Miller again:

Shields for 'Entry Order' don't seem to agree with the 'Entry Order' tool; I find that the shields may say that buttons are on the entry order, but they aren't on the arrows when 'Entry Order' tool is on. This makes it hard sometimes to find objects.

Select All Objects With Same Shield

Bob Miller, lover of Shields:

Need way to select all objects that currently have a shield on them, similar to 'Select Similar Objects', but using shield criteria. Example: I find all objects that have 'On Load' turned on, then I select all these objects and turn this form event OFF for all selected objects.

Shields For Events

Bob Miller with another good idea that I'll second:

Need to be able to use shields that show all objects that have a given form event enabled, example: what are all the objects on the form that have 'On Load' turned on?

Toggle Shields On/Off Shortcut

Bob Miller:

Nice to have a key-equivalent for 'Toggle Shields on/off'

What Object Does This Shield Refer To:

Bob Miller:

Add a tooltip to the shield that displays the name of the object it is for.

I like this idea, but I'd like to suggest an even better one - the icons for the shields generally don't mean very much to me. I'd like to see smaller shield icons and have some other visual reference.

Make Shields Active

Bob Miller with another that needs a second:

If you click on a shield, take the user to the place where that property is set. Example: click on a shield for scripts to go to the script, click on a shield for enterability to bring up the properties window with the tab displayed for enterability, etc.

Object Method Shields - Back To The Old Way!

Bob Miller waxes nostalgic about The Good Old Days:

I really don't like the shields to show object methods. This is one I always want to have on; it should be part of the form object (ie. like before, shading or other indication to show that there is an object method).

Visually Differentiate Invisible Columns In Design Mode (List Box)

Bob Miller:

If 'Show Invisible Columns' is selected for a List Box, make the now-visible columns that have the invisible property look different, so you can tell which are invisible.

List Number Of Objects In View Palette

Bob Miller:

Include the number of objects in each view on the view palette.

Objects As Templates

Bob Miller's Great Ideas Continue:

Would be very nice to be able to set default size for objects using the 'Use as Template' feature, then drag them off the object bar to the form with the template size. As it is, the size of buttons is not part of the template, or if it is, it is lost when you have to draw each new button. I'd like all my buttons to have the same size by default. This saves having to redraw, resize them each time.

New Form Event: On Load Record

Bob Miller with another great idea that I'll second:

Have the "On Load Record" event fire when the record is loaded into an input form. "On Load" seems to only fire when the form is loaded; we need an event that fires when the record is loaded (in an input form).

Method Caller ID

Bob Miller, with another beauty:

The "Current Method Name" command is good, but a "Called By Method Name" would be wonderful; this would identify the method or script that called the project method.

Find Objects In Explorer

Bob Miller:

Find Object in the Explorer (which folder is an object in?)

Expand Or Collapse All Folders In Explorer

Bob Miller:

Expand all and Collapse All on folders in the Explorer (home).

More Find In Database Properties

Bob Miller Continues...

Ability to search for methods and forms according to a last-modified date (or date range)

Restore Item In Trash To Original Location

Bob Miller again:

Ability to restore an item that is in the trash directly to the folder it came from (even if you do not know where it came from)

Rename Object Being Un-Trashed

Bob Miller has another:

Ability to Rename a method being retrived from the trash that has the same name as another object.

Different On-Screen and Printer Font Preference For Method Editor

Bob Miller, you have the floor:

Have separate default font and size for method editor on-screen and printing.

Display Selected Object's Position, Size

Bob Miller:

When object is selected in form editor, display its position (left, top) and size on the border of the window

Reduce Layout Editor Icon Size

Bob Miller:

Option to make icons smaller on icon bar in Design mode, they take up way
too much real estate as-is (particularly the one at the top of the form and
method editors)

I'll second that one, too.

Method Hints

Bob Miller (I'll second this one):

Allow methods that use parameters to display their parameter list similar
to the hints for 4D commands that appear at the bottom of the method
editor.

Method Hints

Bob Miller (I'll second this one):

Allow methods that use parameters to display their parameter list similar
to the hints for 4D commands that appear at the bottom of the method
editor.

Non-enterable field/variable property

From Bob Miller:

A field/variable object property that is non-enterable, yet lets you
select and copy the value.

Better Code Hinting

From Julio Carneiro

better and improved code hinting, including IP, process and local variables... 4D 'knows' variables that have already been defined/declared. Those could be made available for code hinting, besides commands, table/fields and methods. after you start using other IDE's that provide code hinting one wish 4D method editor would be a bit more 'intelligent'.

Double-Height Toolbar Area

From Michael Kaye:

One thing I would love to see is the ability to make native Mac
windows with an double height Toolbar area a la iTunes/iPhoto windows.

I would envisage that for these windows types, that the "toolbar" area
would become part of the form layout (above header), thus allowing us
to create icons buttons plus other active elements, and also code to
allow customisation via drag and drop etc.

Sunday, March 09, 2008

Control Object's Properties Programmatically

Again from Ken Eyring:

Control all of an objects property's programmatically, e.g. border size, background pattern, etc. We have the ability to control some of the properties, e.g. font, color, etc... -- why not all of them? This would be a big plus for us.

Create Objects On The Fly

From Ken Eyring:

create objects "on the fly" programatically. e.g. objects to display the value of a variable, lines, rectangles, etc. This would be extremely helpful for us with our scheduling module. Currently, we have to create a ton of objects on the form, keep them offscreen until they are needed, and then use the Move Object command to make them visible. This causes a dramatic slowdown in displaying and managing the form.

Saturday, March 08, 2008

Get Object Text()

Cue Tony Ringsmuth:

New Command: "Get Object Text"
A command that can return the text of form objects (buttons, Static Text, or Group Boxes)
Example:
Get Object Text(MyButton) -> "OK"
Get Object Text(*;"Text2") -> "First Name" `where Text2 is a static text form object
Get Object Text (MyListBoxHeaderBtn) -> "First Name" ` where MyListBoxHeaderBtn is a ListBox Header Button

SET OBJECT TEXT()

Tony Ringsmuth, please:

New Command: Set Object Text
A command that can set the text of STATIC FORM OBJECTS (Static Text, or Group Boxes)
Example:
SET OBJECT TEXT(*;"MyFieldLabel1";"First Name")

CREATE TEXT OBJECT()

Mr. Ringsmuth again:

New Command: CREATE TEXT OBJECT("MyObjectName")

Creates a text object with the object name of MyObject Name. The developer then uses another new command "SET OBJECT TEXT" to set the actual text of the object, and MOVE OBJECT to put it where you want, etc.

Example:
CREATE TEXT OBJECT("MyObjectName")
SET OBJECT TEXT(*;"MyObjectName";"First Name")
MOVE OBJECT(*;"MyObjectName";50;50;200;70;*)`Put it where I want

Improved Comments Areas on Methods

Tony Ringsmuth, again proving that he's reading my mind:

Improved Comments Areas on Methods

From within a method window, we should have a comments pane. Currently, you can only see or edit the "Comments" of a method in the preview pane (what a pain).

Also, in V11, for compiled components, if you click on a method name in the explorer, it should automatically show the comments, instead of just a blank preview.


I make extensive use of the Comments areas whenever possible. I like to put in the version of the application when the object was created, the version numbers when they've been modified, notes on what was done and why, etc. For Methods I like to show the syntax. That way absolutely everything I need to know when I get amnesia about something is right in one spot without having to read the code. Also this is the only way to communicate with a developer when you have an API in a component that is private. So, it would be much better if the method editor and comment editor worked together better. That way when I'm working on a method I have the comments right there to edit without having to flip back and forth.

Improved Find In Database Command

Tony Ringsmuth:

I want a "Find in database" command that can display the results in listbox table format, with the following columns:

1: Method or object name
2: Line number
3: One full single line of code that contains the "found" criteria

If you double-click on the line, it jumps you to that method, and highlights that line of code.

So, if I do a Find for "Alert", the table would display something like:

METHOD NAME LINE CODE
MyMethod1 15 alert("Please re-enter")
ModifyRecord 30 alert("Record Locked")

Native Text To Array Command

Tony Ringsmuth again:

TEXT TO ARRAY($MyText;FontName;FontSize;FontStyle;Width;aMyTextArray)

I think all of us have written a routine to do this at one point or another, so adding it to the language seems like a good idea.

Programmatically Insert 2D Arrays In A Listbox

Again, courtesy of Tony Ringsmuth.

Rotated Text on 4D Forms

Suggestion courtesy of Tony Ringsmuth. I'll second this one, although I've been able to kluge this together in some cases when needed.

Customizable Shields In Layout Editor

Thanks to Tom Swenson for this one:

"I want customizable shields in the 4D layout editor.

i.e. whatever properties are viewable in those windows along the side (the names keep changing I don't bother memorizing them anymore) -

say 'on clicked', or 'on load' or object name ='MyBrainFartFromTwentyYearsAgo_@' or with both an on clicked and on load event checked. etc.

So when some poor developer goes into a database thats been hacked upon by numerous people, they can quickly find out where the hell some key press is being intercepted.

For example, some hidden button that was put on the off the screen on page 7 of some layout with hundreds of small items on each page by a developer back in version 6.0.3 to handle an obscure bug."

On Clicked Form Event for Enterable fields and Enterable Variables

Courtesy of Tony Ringsmuth:

"Enable an 'On clicked' form event for enterable fields and enterable
variables.

4D detects a click in a field, such as when there is a choice list attached
to the field and the user clicks in the field again, the choice list pops up
again.

From a developer perspective; I implement my own programmatic form of choice
lists. I want to be able to emulate this click action, even when a user is
already in a field. Even if the focus is already in the enterable field or
variable, I want to detect if the user has clicked in it again."

Overloaded Parameter Lists

Doug Cottrill again:

"Overloaded parameter lists, especially $0. 4D lets you call APPEND TO ARRAY with different array and value types. I'd like to write routines that return a value with different types."

I don't know if I'm gung-ho for this one, but I AM all for having an easy-to-use list of suggestions for the 4D development team to have to look at, so here it is.

Lock Listbox Columns/Rows In Place

Doug Cottrill suggests "The ability to lock listbox columns (IE, scroll right with the first X columns staying in place)"

In spreadsheets we're able to lock particular columns or rows in place so that when we scroll, those columns or rows stay in position. This is useful when you have row or column headings that you want to have stay when you're moving through your data.

Doesn't 4D View already have this? I don't remember, but I thought it did.

TextToArray Substitute

Also from P. Smith:

"TextToArray substitute in native 4D language, to facilitate management of display and printing of text"

Pointers to Methods

P. Smith suggests that we get pointers to methods. An excellent idea.

Text Wrap In List Boxes

Thanks to Garri Ogata for another suggestion on how to improve 4D List Boxes

"I would like text wrap in a list box"

Button Image in List Boxes

Jim Dorrance suggests the following improvement to List Boxes in 4D:

"I would like to be able to affect an image to a List Box header button with 'Set Format'. It is actually not possible to generically program an empty List Box object with a button image."

METHOD EXISTS()

Thanks to Doug Cottrill for another suggestion for an addition to the 4D Language:

"Function Command 'Method Exists' returns TRUE if the method exists in any component that is in the component folder"

Edit Multiple Components

More 4D requests from Doug Cottrill:

"Allow multiple components to be opened from the main structure file and in edit mode"

Second for Form Scope Variables

Previously I discussed variables whose scope is a particular form. Doug Cottrill adds the following comments:

"I want to be able to pass variables in to a form method when opening the
form. Not sure exactly how this would be implemented as there are mutiple
commands that display a form (Dialog, Modify/Add Record, Modify/Display Selection). This would save me from needing to use global variables just to get info to a particular form. A request has already been made on your blog for form scope variables. This would fit nicely with that request."

Custom Data Types, Data Structures

This one is courtesy of Doug Cottrill:

"1a) Custom Data Types. I want to be able to declare MyVar as a 'PhoneNumber'. If any object that is not a phone number gets assigned to it, it throws an error. This also gives rise to being able to define the allowed operations on the custom data type.
1b) Data Structures. I want to declare an "Address" as having a City, Street, and Zip etc.) Now I can assign one address to another with a single line of code."

P. Smith seconds the request for more complex data structures. I third it.

Friday, March 07, 2008

Cancel Database Operations

This one comes courtesy of Tom Benedict:
The ability to cancel a QUERY, an ORDER BY, or an APPLY TO SELECTION operation.

Thursday, February 21, 2008

GAH! How About Data Structures That Can Be Repaired?

Unfortunately I get bitten occasionally by some really annoying issues with 4D that have plagued it and me for what seems like forever.

One of those things is data corruption that 4D does not detect. This manifests itself in really bizarre behavior that just can't be explained. A few days ago, for example, one of my users noted that a certain behavior had suddenly changed when a certain Part from our logistics system loaded, but only on one form.

Today I got to work on it. It was a really weird problem that caused some expected UI features to not work properly. It only happened for this one Part. I haven't worked on this portion of the system for a long time, so I started poking around, when I found the teltale sign that there was "one of those" problems, namely, using the command RELATE MANY([Part]Part Number), which is supposed to load the related many records connected to the Part Number field in tables like [Shop Order], [Work Order], [Container], etc. Instead it unloaded the [Part] record, which shouldn't EVER happen.

Testing on other parts verified - only this part was affected. Of course 4D hadn't noticed that there was a problem, so it's off to 4D Tools to recover the indexes and the data file - only 4D Tools didn't find anything wrong. Outstanding. Back into 4D to test some more - nope - no repair. Still doesn't work. 4D Tools' own algorithm for finding and fixing indexes and broken records doesn't see anything.

Back to 4D Tools to Recover By Tags, which completely recreates the entire data file. Of course that doesn't work either. Does 4D have any other alternatives? Nope. 4D Tools is done helping. So the next thing to try is to 1) Remove the relations to the [Part]Part Number field, then 2) Drop the index on the field, and the related fields (because you never know where the poison is), then exit 4D and relaunch it. Except...even though 4D asks you to verify that you want to drop the indexes, there are times when it won't (and won't bother to tell you either). So now we have to fix those conditions (things like manual recursive self-table relations, which in this case would be for a parent part-number assembly to child parts for the purposes of a Bill of Materials).

After all that, still nothing. Zip. Back to the drawing board. The tricks you usually use to recover from this sort of error don't work this time. 4D, could we please have some more robust way of taking care of data, please?

Wednesday, February 20, 2008

More Helpful Startup, Please

Well, it's a good thing that I'm a real old-school 4D geek after the problem I encountered this morning.

Here's how this one went: I tried to open an existing 4D Database. I tried doing it from the Desktop, from within 4D, and finally within 4D Tools (because I couldn't get it to open any other way). Each time I got an error "File not found. The database cannot be used." Huh?

Yeah. Nice error messages. Not very helpful.

4D databases at a minimum consist of four files. We'll call this database "x". So you need to have x.4db, x.rsr, x.4dd, x.4dr. .4db is the structure file. .4dr are the structure "resources". .4dd is the data, and .4dr is the data resources.

This is left over from the way 4D was originally constructed when it was a Mac-only application back in OS6 and before. At that time, 4D separated the data from the structure into two files. Also from that age, Mac files consisted of two "forks" - data and resource. Windows did not have these two parts of a file, so when 4D went Windows, they had to take the forks and divide them into separate files, or rewrite more of the engine.

If you're missing one of those files, or if the corresponding parts don't have the same name (before the suffix), then 4D quits with that marvelously descriptive error that I got this AM, apparently. Also the resource and data fork files have to be in the same folder (although the data files (.4dd, .4dr) do not have to be in the same folder as the structure files (.4db, .rsr)).

I apparently decided to rename this bugger at some point, and the .rsr file had a different name than the .4db file.

So, it would be nice if in the future 4D would rewrite some of the error messages such as this one so that noobs that haven't been using 4D for 20 years have a better shot at figuring out what's wrong. It might also be nice if the startup routine was more robust, so that it noticed that there were files of the right suffix, but inconsistent prefixes, and let the user do something about it right then.

Thursday, August 16, 2007

Shrink the Toolbars Just A Little

The toolbars for the form designer and the method editor are just a little bit tall. Once you allocate 15 or so pixels for a window title and then another 30 or so for the toolbar things can get just a little bit cramped on lappies.

Friday, February 09, 2007

Increment/Decrement Operators

I'm not in favor of crazy-use of this tool, but it would be nice if I could have
i++
and
i--

By crazy-use I'm not in favor of allowing the developer to embed them in a line such as
x:=i++
or the really annoying and painful to read
x:=++i

While this saves a small amount of typing with short variable names, I prefer to use long names, so it would save me time when instead of typing
numberOfEmployeesOnTwelfth:=numberOfEmployeesOnTwelfth+1
I would instead just type
numberOfEmployeesOnTwelfth++

Wednesday, January 24, 2007

Set Blocks in Methods

4D has the ability to collapse control structures in methods. However, sometimes it would be nice to be able to mark sections of code without having to first encapsulate the block in if (true)...end if so that I can shrink it down. I'd like to be able to mark a section of code as a block and then be able to collapse or expand it.

This would be similar to sectioning a block of code off into its own method, minus having to separate it and declare a bunch of parameters so that the variables are still usable. In this case I'd like to be able to assign it a name so that when it gets shrunk down I see the name, but nothing else.

For example, let's say that I have something like this

` <do some random math>
a:=1
b:=2
c:=a+b
d:=a*b
e:=a^b
f:=b^a
g:=a\b
h:=b\a
i:=a%b
j:=b%a
k:=(b+c)/d+(e/f)%g+j-a*d
` </do some random math>

Now instead of all that stuff I would only have to see
` <do some random math>...</do some random math>
when the block is collapsed.

Thursday, January 18, 2007

iTunes-like folders

Just like iTunes has smart playlists, I'd like smart folders in the "home" view in the design environment. I'd like to be able to have all forms, or all objects associated with a table, or whatever auto-organized.

Also just like playlists, I'd like to be able to have one object belong to several folders.

Thursday, July 28, 2005

Do SOMETHING to make the antialiased text in 2k4 easier to read

In 2k4, the text is, by default, antialiased. In some cases this is nice, but when text is hilighted in 2k4 it's extremely difficult to read. Please address.

Integrate the Designer Form and Form Method

It'd be excellent to be able to have a tab at the top of the Form Editor that let you switch from Form view, to Code view.

Tuesday, July 26, 2005

Call Stack to Array

I'd love to have a command that returns the call stack to an array. It
could return the info in the elements in the same format as "Current Method
Name" does.

This would have to be a trivial command for 4D to implement because the this
info is already displayed in the debugger.

Peter Hay

Inherited Form Event Properties

Almost every input form in my database has the same events checked.
Almost all of my output forms have a different set of events
checked. My printing fomrs have a different set of events checked.
Sometimes I want to change the events that are checked in all of my
input forms all at once or all of my output forms at once, etc.

There should be a way to have an inherited list of property items,
sort of like an inherited form, so that the current form would get
some or all of those properties including the appropriate events
being checked. Then when I want to change one of the events, all of
the forms that inherit that property should also change.

Paul Ringsmith

Open Window Grouping

The ability to save entire groups of open Method, Forms etc. windows and recall them by selecting a name.

This would give us a chance to switch back and forth quickly between sets of screens instead of having to always slect from the menus.

Shift+CTRL+P

It would be great in the method editor if the key combo "Shift+CTRL+P" opens the method highlighted, as CTRL+P does, but holding down the Shift key as well, it closes the current window you're in...
Nick

OPEN 4D PREFERENCES - limit pane access

In 2K4 with the way that Backup has been integrated, and the lack of an API, there are only two ways to change Backup Prefs:
1) Use the OPEN 4D PREFERENCES command - which I appreciate, thank you very much
2) Directly modify the 4D Backup XML (and, as Jeff Kain rightly pointed out, risk changes to the format of the file later, and on top of that, well, never mind. I would rather not HAVE to go this route, although I can, if I must. Granted it's nice to be able to do this, but, I still like #1 better).

It would therefore be nice if I could use the OPEN 4D PREFERENCES command (which takes a parameter to indicate which pane will be opened), to also limit the panes a user can access. In this way it is possible to give sys admins access to, say, the 4D Backup prefs, but not let them mess around in, say, some of the web server prefs.

Tuesday, July 19, 2005

[4D Tools]Detect/Correct Form Corruption

I don't know about everyone else, but form corruption is a MAJOR headache for me. I seem to find form corruption all the time, and it's always by accident. Worse, fixing corrupted forms, especially complicated ones by the "accepted" technique - nook the form and start over takes forever. It also seems that upgrading versions introduces or at least uncovers corruption.

I would appreciate it if 4D Tools would detect AND FIX corrupted forms.

Thursday, July 14, 2005

Protected IP Variables

I would like to be able to assign IP variable ownership to a particular process, method, etc. so that the variable only has "read only" access from other methods, processes, etc. This is different than constants in that the variable is modifiable by a particular method or process. Examples of this type of thing would be serial numbers.

The reason for doing this in variables instead of in a table is that it is not necessary to do a lookup every single time a value is needed.

Mouse Navigation Buttons

I would like to have the ability to have my "back" and "forward" buttons be assigned to the "Previous Page" and "Next Page" buttons in the form editor.

Friday, June 24, 2005

Significantly Extended Javascript Integration/Better HTML generation

4D has a great forms editor. I would deeply appreciate it if 4D would build better web forms, including much better JavaScript and much more JavaScript. If need be I don't mind writing my own JavaScript macros that would be integrated by the forms generation, but it would obviously be nice if that wasn't necessary.

It seems that the C/S pendulum is swinging back toward server-based apps with thinner clients, and those clients being web browsers of some sort. Given that, I would like to see 4D automatically generate the forms code that would drive this environment.

Wednesday, June 15, 2005

Query Selection By List

Bob Miller

Compound Indexes

Bob Miller

Client/Server File Transfer

A native command to send/request a file from 4D Client to 4D Server, and
have 4D server store it/retrieve it.

Bob Miller

"Form Variables"

Variables that have scope that is local to forms, form methods, and scripts on the form only.

Bob Miller

Standard Form Display Preferences (ACI0020870)

Bob Miller

Form Display Default Properties

Every time I create a new form, I turn off the ruler, turn off the grid display, and set 'marker labels s on' whenever markers are turned on, set the margins, set the resize property, etc.. I would like for these initial settings to be persistent, so I don't have to set them each time for each new form. Then, on Form Properties, I set the horizontal and vertical margin, turn off the 'Resizing Option', and select certain form events. Why can't I save these perferences in a style sheet?

Bob Miller

A tab on the Explorer for Project Methods Only

I hate to scroll past all my form methods to get to the project method listing)

Bob Miller

"Non-Enterable and Selectable" Property for Fields and Variables

Supplement the"Non-Enterable" property - allow user to copy portions of a field/variable without being able to change it.

Bob Miller

A Line Continuation Character in the Method Editor

Bob Miller

An "Open Windows" Palette

: Today 4D lists all open windows for methods and forms on the 'Design' menu. Unfortunately, this is not a list of all the open windows - if the structure window, or the list editor, or the menubar editor are open, these are not listed. I'd like a floating palette that lists all open windows. If I double-click on any item in the open window listing, that window comes to the front. When I close a window, it disappears from the open window listing. What would make this even better would be if I could put items into a 'favorites' listing, so I can quickly open windows that I work on frequently, but which may not be open at the time. This way I could have fewer windows open, yet be able to quickly open frequently accessed items.

Bob Miller

Smarter 4D Backup Logfile/Settings

When a 4D Backup fails, the only log entry is that the backup failed. There is no message indicating why it failed - such as, "Backup volume not mounted", "Backup volume is full", etc. Also, it would be very nice to be able to view and change 4D backup settings without setting off a backup. We have a database that takes 2 hours to back up, and if the backup fails, we have no idea why. We then check the backup settings, and this triggers a backup event, forcing users off the system. We would like to check and set the backup settings, including the backup interval, volume and folder locations of the backup, and other settings, independently of setting off the backup event.

Bob Miller

Fix the Bug that causes ALT to hang 4D Server

When 4D is running, if the ALT key is pressed, the file menu becomes hilighted, and 4D server appears to stop processing user requests. From a 4D Client's point of view, 4D Server appears to be hung, and connections may be dropped. If on the 4D server someone then presses ALT again, or presses any key, the File menu is no longer highlighted and 4D Server continues to run normally.

Bob Miller

Don't Allow Windows to Open Outside of the Screen/Parent Window Area

It is extremely annoying when you open a method and you can't see it. Often the only way to get it back is to use the keyboard to copy the contents, elete the method, make a new method, and paste the content in. It's also annoying when you change to a machine that has a lower resolution and every window opens bigger than the screen.

Scott.

Perform String Functions on BLOBs

Ability to perform functions such as Position on BLOBs, which is handy when you have to parse more than 32K of text.

Thanks for creating the wishlist

Jim Labos

Provide UNLOAD RECORD(*) to Unload Current Record in All Tables

For the moment, unloading record from differernt tables requires looping through all corresponding tables. This would increase network traffic between client and server.

Alan Chan

Support Unicode

Alan Chan

Support Multiple CPUs especially with triggers

Alan Chan

Monday, June 13, 2005

Support Multiple Triggers

Alan Chan

Saved Design Environment Window Sets

Ability to assign a name to the current open windows in design mode, and ability to callit up again (current windows all close and new set opens)

Jim Labos

Tuesday, June 07, 2005

Improved Performance under Remote Desktop Connection on Win2K3

For some reason running the method editor over RDC connecting to a Win2003 machine is unusably slow. Using the same database connecting to a Win2000 machine over RDC is smooth (even on a slower machine). This is particularly strange as everything else runs faster on the 2003 RDC.

Scott

Native Threading

This will allow the OS to take advantage of multi CPU and multi Core systems (as well as those with hyper-threading) and even more importantly allow networking without busy waits, i.e. allow the networking commands to block at the OS level so they are only woken when a response is ready instead of checking repeatedly.

Scott

Monday, June 06, 2005

Object (on Form) Palette

We have he idea that if You open a form an alphabetical list of all objects on that form is displayed (either sorted by variable name or by object name). Clicking on one object in the list will select that object in the form, display its properties, and - new: display its object method. This way one could easily step through the object methods of all objects on a form.

Best, Dietmar

Query Selection By Example

Forms used in Query by Example to be able to have button scripts and form events

Bob Miller

Wednesday, June 01, 2005

Conditional Find In Database

It would be great to be able to combine "find in database" searches with and and or conditions. For example find all instances of variable x and all methods using array y etc etc etc. In large cumbersome old databases this would often simplify identifying a problem in a large bunch of unfamiliar spaghetti code.


Dan Pride

Saturday, May 28, 2005

Replace first item found...

When doing a replace in Method Editor, replace the highlighted value (the
first item found) as well as successive values.

Window sizing...

Resize opened windows in Design mode to fit in current screen.

Method Editor Clipboard Management

Ability to save/load clipboards in Method Editor automatically, by option
or preferably by code.

Method editor search ala QuickCode Pro...

Ability to highlight text and search up or down by clicking on an arrow in
method editor.

Table/Field Sequence Option

An option to list tables/fields in either alpha or numeric sequence in
method editor.

Smart Cursor in Form Editor

Automatically select text tool if the cursor is over a text object or
pointer if over other object type.

Objects Belong to Multiple Groups

There are times when a method, form, etc. really have multiple functional groups that they belong to. It would be nice to be able to put an object into multiple groups in the explorer, or at least be able to put an alias to an object in multiple groups.

Friday, May 27, 2005

Don't Resize Debug Window

When clicking through a method in trace mode and hitting a command like OC Execute SQL the debug window resizes.
Its a REAL pain the the arse.
Dan Pride

Text fields and Variables with no 32K limit on size

I wish there was no limit on the size of text fields and variables.

Sadhaka Jivanandanatha

Thursday, May 26, 2005

Rotated Text

At a minimum, we should have 90, 180 and 270 degrees rotated text, if not any of 360 degrees.

We should be able to rotate static text, fields and variables on screen and printable forms. We should be able to programmatically rotate any of these items.

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

Enable an "On clicked" form event for enterable fields and

Enable an "On clicked" form event for enterable fields and enterable variables. This way, we can replicate how 4D makes fields with choice lists behave.

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

Compiled Components

The ability to distribute a compiled 4D component

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

New Command: Get Form Objects List

Get Form Objects List (<-ObjectNamesArray;<-ObjectPointersArray;<-ObjectTypesArray)

This command would retrieve a list of all objects on a form into several arrays:
ObjectNamesArray: a text array of the object names

ObjectPointersArray: an pointer array of the object fields/variables. For non data type items (like lines and rectangles), this would return nil

ObjectTypesArray: a text or numeric array that would return some kind of type of each object, such as Field, Variable, Button, Line, Rectangle, etc.

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

List Boxes: Allow 2D Arrays

Allow the programmatic configuration of 2D arrays in listboxes

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

List Box Footers

Allow a footer area in list boxes.

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

Arrays of type Blob

Arrays of type Blob.

--
Tony Ringsmuth
Business Brothers Inc.
763-420-8686

Combine the ToolBox & Explorer into one dialog.

Combine the ToolBox & Explorer into one dialog.

Steve Hussey

Wednesday, May 18, 2005

Ability to have multiple databases open at once

It's much easier to make changes across structures if I can have two databases open at the same time in the same instance of 4D.

Thursday, April 28, 2005

Step...Repeat in Debugger

Continually hitting a "step" button in the debugger is a pain. I would like to be able to set a timer for statement execution. The debugger would execute statements and update the watch list automatically every n seconds without making me press one of the "step" buttons over and over. There should, of course, be a feature to pause the action or stop the automatic execution manually, or when I hit another debug checkpoint, if I choose.

Submitted by Dan Pride 4/28/05

Tuesday, April 19, 2005

Runtime Explorer - More than just Designer

We use the 4D password system mainly so that each developer can have their own view. We've rolled our own password system for production, so we clear the designer password (turn off 4D password system) before shipping. We've got 3 developers working on the same structure.

This means that unless we log on as the Desiger, we don't have access to the Runtime Explorer.

I would like to see some way to allow a 4D user name access to the Runtime Explorer.

Friday, April 15, 2005

Smarter Memory Management

I would like to see 4D clear objects from memory that are no longer in use. This could occur when a process achieves. Selections, sets, etc. are not cleared automatically by 4D, which can lead to memory leaks.

It would also be nice if the Compiler would, as part of its "optimization" process, determine when objects are no longer in use and clear them.

Thursday, April 07, 2005

Shortcut keys for tools in design environment

Similar to what Photoshop offers. Maybe f for fields, b for buttons, p for pointer, etc.

Tuesday, March 22, 2005

Change the 4D Wildcard character to *

Method editor - mark blocks of code

The ability to show/hide control structures (if -then, repeat-until, etc.) and their contents in the method editor is great. I would also like to be able to mark blocks of code with a label (maybe a tag) and have 4D enable me to collapse it. Maybe that tag is something like ...

Change naming convention to Microsoft-esque

Currently we're using 4D2004. That's so last year. It should be called 4D2005. That's much easier to sell. It sounds much less like last year's technology.

Right-click objects to edit any properties of that object or delete object method

Page x of y on printed reports

the "of y" part is what's missing.

Get rid of the 4D Desktop

I would like the windows in 4D to be independent so that on Windows I can see what's going on under 4D, and so that when I switch from having a second monitor hooked up to my laptop to standalone mode I don't have half of my windows unavailable for use.

Help Text for Methods

I would like to be able to create help text for my methods so that when I type in a method name I can see the syntax in the help-text area similar to what's available for commands.

Built-in macro editor, so macros take effect immediately

Note: We have one report that on OS X.3 in 2K3 this is NOT an issue (see comments). However, I have tried it in 2K3 and 2K4.1 in XPSP2, and it does NOT work as of this time.

Constant Editor

Built-in html rendering

The 4D MarketBlast plugin addresses this issue.

Built-in PDF generation

First Thing's First

For Contract Manufacturing or Production Machining, contact R. M. Kerner Co. first.