1691 Form design: Design recommendations
VERSIONS: Paradox 7 and later

SUBJECT: Recommendations

BY: LIZ < lizATparadoxcommunity.com >
Date: 19 November 2002

Font:
I just find that using the font Windows uses tends to "fit" with Windows visually and my goal is to make my app look like it belongs as much as MS Word looks like it belongs.

Style Sheet (code is saved in the style sheet):

1. The page is colored in its open method with:
self.color = cl3dFace

...this was done cuz in Paradox 8, that's the only way to get this color (seems Paradox 10 lets you work with the Windows color constants directly).

(buttons take on this color automatically, and there's no way to change that)
2. Ditto for notebook page objects, but they get an extra line:
self.InactiveColor = cl3dFace

...so that like every other notepage I've seen in Windows, their inactive color is the same as their active color.

3. I don't do anything custom with button objects.
4. For visually grouping objects, which I rarely do, I put a box around them and give it the Windows3DGroup frame. And if the group warrants a label, I use a text object with the "self.color = cl3dFace" code in its open, positioned over the top left side of the box. (Open the Display Properties dialog in Windows and navigate around, you'll see objects grouped inside said frames with said types of labels.)

5. MROs may or may not have a similar frame (and optional label) depending on how I want them to look. If I don't want the 3d frame, they have no frame at all. The MRO's record object has no frame. There may or may not be a scrollbar, depending on the look and functionality I want.

6. Any scrollbars are the wide kind.
7. All text objects (including field labels, etc.) are transparent (except for those described in #4 where they go on top of something with the intent of hiding what's under them, in which case they're colored cl3dFace) with no frame. All fonts are MS Sans Serif 8pt. Bold is used on rare occasion. I don't recall ever using Italic.

All text (field, text object, whatever) is black with very rare exceptions (then I use Red and DarkBlue - Red for warning/alert/whatever; DarkBlue for column header text when the column header is clickable for re-sorting a tframe).

8. Tableframes:
3D grid with record divider. Wide vertical scrollbar. I'd use horizontal scrollbar if needed, but I don't like that idea. The header gets the cl3dFace coloring code. The body of the tframe is white.*

* Technically, these should be clWindow, but if I were going to do that, I would have to use code to color the font clWindowText, and I don't want to get into it that far. Ditto when I talk about white, editable fields below.

Mark Pauker record highlight code is saved with the tframe. Highlight color is cl3dFace. This code is sometimes used for MROs, but then the highlight color is cl3dHighlight.

If the row is sized to allow word wrap in any field, all fields are sized to take up the entire row (so the user can click anywhere (vertically) in any column to move to that column).

9. Field objects:
Except for the checkbox and radio button fields, fields are sized at .19 inches tall, unless word wrap is enabled, in which cased they're sized however I think best.

a. Checkboxes and Radio buttons. No frames on any of the objects. Button objects use the Windows 3D style.

b. Combo and Edit style fields use the Windows3DFrame, wide scroll bar on the combo field's list and are white (see * above). If the edit field is read-only, the color is transparent rather than white (no combo field can be read-only in my world, it doesn't make sense). (List fields would fit this model, but I never use them.)

c. Labeled fields: the field and text objects have no frame and are transparent, the edit region has the Windows3DFrame and is white*, unless it is a read-only field, in which case, it's transparent.

Read-only fields are sometimes not tab stops, just depends.
10. Disabled objects - objects which are not applicable all the time have their enabled property toggled depending on whether they're applicable. This gives a visual reference automatically, no additional code required.

11. Objects I don't use, but what I would do if I did:
Line: black, solid, thinnest thickness
Elipse: same as line
Graphic, chart, crosstab, ole: no frame

I think that's everything. Style sheets and ProView's object repository help make this easy to maintain - I don't even think about it, just do it.

To index