Adding the designer has been simplified. DCDESIGN.DLL has been removed and the design features are now in DCLIPX.DLL.
To set up the designer, add the following options to any Source file in which you want design capability.
The SOURCEEDITOR clause is only needed if you wish to track the source in your own editor as you click on screen objects.
Code: Select all
DCGETOPTIONS ;
SOURCEFILE __FILEPATH__ ;
SOURCEEDITOR 'Q.BAT' ;
DESIGN HOTKEY xbeK_ALT_F1 ;
When you click on an object on your screen, the source code will be displayed in the design window. You can move or resize objects with the mouse or the keyboard. Click on "HELP for this command" to open up the eXpress.hlp. Click on "Browse Commands" to see all the DC* commands available.
The Object Tree View Panel shows the heirarchy of the window objects that are created from the DC* commands in your source code.
The middle mouse button can be used to set a cross-hair or a grid. If a grid is set, then objects which are moved will automatically snap to the grid.
The cross-hair is used in conjunction with the ALT arrow keys to snap the object to the cross hair. Right mouse button is used to tag a group of objects which can then all be snapped to the cross-hair. This feature is a "work-in-process" and may have a few anomolies. I also would like to add more features. If you have problems with this, report them in this thread. I will fix the problems and upload a new source file.
If your subscription is current, send me an email and I will reply with download instructions.
Soon, subscribers will receive regular announcements by email with download instructions.
Code: Select all
---------------- New to 2.0 (build 263) ----------
1395. DCDESIGN.DLL has been removed from system. Designer code is now
included in DCLIPX.DLL.
1394. More improvements to the screen designer. Look at the sample in
.\SAMPLES\DESIGN.
1393. DC_InspectObject() now displays iVars that were created by
DC_NoIvarContainer().
1392. DC_DbRecord() now supports adding new instance variables on the fly to
a record object by just assigning a value to an iVar that does not
exist as a field. The class inherits from DC_NoIvarContainer().
1391. Add new function: DC_ExpressRootDir(). This function reads the
development system environment variables to determine the root
directory where eXpress++ is installed. This function is used mainly
by the designer.
---------------- New to 2.0 (build 262) ----------
1392. Fixed a problem with DC_AutoWindowRestore() not properly restoring
the window column if the window was saved on a monitor other than the
primary monitor.
1391. Improved the eXpress++ DESIGNER system to offer much better design
features. Look at the sample in .\SAMPLES\DESIGN.
---------------- New to 2.0 (build 262) ----------
1390. The samples folder now contains a sample program named SNYFFLE. This
is a client/server application that allows up to 4 people to play a
Scrabble-like game on the internet. Snyffle works exactly like
Scrabble except it supports additional optional features that make it
more fun and interesting. There are 2 versions, SNYFFLE.PRG,
SCSERVER.PRG which require Xb2.Net and SNYFFLE20.PRG, SCSERVER20.PRG
which require Xbase++ 2.0.
1389. The instant messenger system has been updated to work without the need
for Xb2.Net when compiling in Xbase++ 2.0. There are 2 versions of the
source: IMCLIENT.PRG, IMSERVER.PRG and IMCLIENT20.PRG, IMSERVER20.PRG.
1388. Added new Get-Set function: DC_ShowBalloonTip(). This function is used
to enable the Balloon Tip feature added in build 260. See item 1306
below. The default is now .FALSE. (disabled).
1387. Added a new SHOWLASTCHAR sub clause to the PASSWORD clause of
@ DCSAY..GET and @ DCGET. This will cause the last character entered
to be displayed instead of an asterisk.
1386. The Xbase++ 2.0 version of XDOT.EXE can now use any Xbase Tools
functions and DC_Xml*() functions.
1385. Added a new subclass: DC_XbpOwnerDrawBrowseGeneric(). This is a
GENERIC owner drawing system for DC_XbpBrowse. Each browse cell can draw
text, icons or bitmaps anywhere within the cell by declaring each within
a multi-dimensional array. Look at the sample programs:
.\samples\browse\calendar.prg and .\samples\browse\generic.prg.
Note: This feature is not supported in Xbase++ version 331.
1384. Added a new Get-Set function DC_MenuReverseColor(). This is used to
change the way the color of the selected menu item behaves. The
default is .f. to preserve the look of existing menus. A .t. will
cause foreground and background color to switch.
1383. Added a new RADIOGROUP clause to the @..DCRADIOBUTTON command. This
accepts a variable that must be initialized as an empty array. This
feature eliminates the need to have unique parents for each radio
group. See the sample in \exp20\samples\radiogroup.
1382. Added new function DC_CSV2Array(). This function imports a
comma-delimited CSV file into a 2-dimensional array.
1381. Added new function DC_WorkArea2CSV(). This function exports a work
area to a comma-delimited CSV file.
1380. Added new methods to DC_XbpDialog1() class to allow for placing objects
in the title bar of a window. See the sample in
\exp20\samples\titlebar.
1379. Fixed a problem with DCRMCHART tooltips causing memory leak.
1378. Added new function: DC_Error2String(). Creates a string from an
Error() object that contains error info, environment info and status of
open work areas.
1377. DC_DbNotify() now handles allows for an optional <cFieldName> and
<aActions> in the :writeBlock code block.
1376. DC_ApplySqlParams() can now apply a literal value by enclosing the
parameter in brackets, ex: [onhand].
1375. There are 9 new methods in a DC_DbRecord() object: ::RecNo(),
::Deleted(), ::Alias(), ::Scatter(), ::Gather(), ::IsEmpty(), ::Trim(),
::asArray(), ::clear(). The sample program
.\samples\dbrecord\methods.prg show how to use these methods.
1374. Added a new RECORDOBJECT <oRecord> clause to the @ DCBROWSE command.
The sample program .\samples\dbrecord\browse.prg (Tab 3) shows how to
browse a database while using a single record object to access the data.
The navigation code blocks of the browse force a oRecord:scatter() of
the record into the object before each row is painted.
1373. Fixed a bug with DC_XbpMenuShift() sometimes causing an error when
using a CodeJock skin and pressing the SHIFT key on a menu item.
1372. Added new functions DC_SaveEvents() and DC_RestoreEvents().
DC_SaveEvents() will save all events in the event queue of the current
thread to an array and clear all pending events from the event Queue.
The event queue can then be later restored by DC_RestoreEvents(). This
is sometimes necessary to affect correct behavior of dialog windows
when a series of events must be interrupted to display a new window.
1371. The ::mouseOver font of DCPUSHBUTTONXP now defaults to the ::font.
1370. Resizing system has been improved for performance and to eliminate
window trails on the desktop. It also is thread-safe when using
resizing rules that require resizing to work properly if a single
window has child objects that run in different threads.
1369. DC_XbpMenuShift() is now thread-safe. This insures that each window
can have it's own short-cut system for menus.
1368. DC_SetScopeArray() regression fixed (again).
1367. DC_WtfEnable() now accepts an array or a codeblock. The code block is
evaluated every time WTF is encountered and will only allow the WTF to
display if the code block returns a .T. Code block must return a
logical value.
1366. Added new function DC_DebugWindowBrowseFont(). This sets the font for
the WTF browse window.
1365. Fixed a bug with DC_Array2Excel(). The Cancel button did not work.
1364. Fixed a bug with scaling and Tab Pages. The font will no longer grow
on relative tabpages if not declaring a font.