eXpress++ 2.0 build 263 is released

Announcements about new features or events.
Post Reply
Message
Author
User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

eXpress++ 2.0 build 263 is released

#1 Post by rdonnay »

Build 263 focuses on improvements to the designer system.

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 ;
design.jpg
design.jpg (174.35 KiB) Viewed 16127 times
To enter design mode, press ALT-F1 when running the window of your application that is using the above DCGETOPTIONS clauses.
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.
The eXpress train is coming - and it has more cars.

bwolfsohn
Posts: 648
Joined: Thu Jan 28, 2010 7:07 am
Location: Alachua, Florida USA
Contact:

Re: eXpress++ 2.0 build 263 is released

#2 Post by bwolfsohn »

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.
Roger,

is this granular, or 1 size fits all ??

can i specify a code block for a specific function or prg and not have it interfere with a different codeblock elsewhere ?
Brian Wolfsohn
Retired and traveling around the country to music festivals in my RV.
OOPS.. Corona Virus, so NOT traveling right now...
http://www.breadmanrises.com
FB travel group: The Breadman Rises

User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: eXpress++ 2.0 build 263 is released

#3 Post by rdonnay »

can i specify a code block for a specific function or prg and not have it interfere with a different codeblock elsewhere ?
I don't understand your question.
The eXpress train is coming - and it has more cars.

bwolfsohn
Posts: 648
Joined: Thu Jan 28, 2010 7:07 am
Location: Alachua, Florida USA
Contact:

Re: eXpress++ 2.0 build 263 is released

#4 Post by bwolfsohn »

if i use wtfenable({||fexists('lotdebug.ovl')} in lots(),
can i use wtfenable({||fexists('buyerdebug.ovl')} in buyers()

or, will they step over each other ?
Brian Wolfsohn
Retired and traveling around the country to music festivals in my RV.
OOPS.. Corona Virus, so NOT traveling right now...
http://www.breadmanrises.com
FB travel group: The Breadman Rises

User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: eXpress++ 2.0 build 263 is released

#5 Post by rdonnay »

You can do it this way.

WTF <x> WHEN {||fexists('lotdebug.ovl')} // lots
WTF <x> WHEN {||fexists('buyerdebug.ovl')} // buyers
The eXpress train is coming - and it has more cars.

Leon Berger
Posts: 36
Joined: Thu Jan 28, 2010 2:30 pm

Re: eXpress++ 2.0 build 263 is released

#6 Post by Leon Berger »

Roger,

building a new exe-file with build 263, the exe is creating a file named "debug.log" at runtime. How can I disable this logfile?

Build 263 is shown as Version 262.

Greetings from Vienna
Leon
Best regards
Leon

User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: eXpress++ 2.0 build 263 is released

#7 Post by rdonnay »

building a new exe-file with build 263, the exe is creating a file named "debug.log" at runtime. How can I disable this logfile?
Please read the following post:
http://bb.donnay-software.com/donnay/vi ... f=2&t=1695
The eXpress train is coming - and it has more cars.

Post Reply