(current version v3.1, released on 10 july 2020)
Free application add-on offering handy features for developers, testers, designers and service engineers.
Features to increase productivity in working with applications created with Team Developer.
TDAppTools is available for all TD versions (32bit and 64bit), starting from TD 2.1.
TDAppTools is executed from within TD build applications offering a toolset giving detailed information on the application internals, even in production environments.
So to be clear, it is not a Team Developer IDE add-on which would primarily be used by developers in the TD development environment, but a toolset to be started
from your running application to get more information on that running application, wherever it is used.
Though it can also be used while debugging and running projects from source. TDAppTools has extra features enabled when running the application from the TD IDE.
(for instance locate GUI objects in source or break at the current source line when using Sql Monitor).
As TDAppTools is a personal project and mainly developed in spare free time it was not feasible to introduce all wanted tools at the start.
Those features should be compatible with most TD versions and offer generic functionality to be used in any project.
This tool is Spy++ with a TD flavor.
It is used like other GUI spy tools, but the Gui Inspector has the advantage that it shows specific TD information other generic spy tools do not offer.
With the well-known object selection tool, Gui objects can easily be identified on screen.
All information of the object is fetched in real-time and shows SAL details which will benefit anyone wanting to get more detailed information of the Gui internals.
List of features:
- Easy select objects using drag and point principle
- Show SAL object details like: class name, template name, SAL attributes and properties
- Full qualification of objects to show parent/child relationship using template names
- Shows in which process, dynalib (apd) or library (apl) the object is defined
- View and change object values, titles/captions, fonts, colors, position and size in realtime
- Drag objects around the screen to redesign a GUI
- Inspect the window hierarchy using a tree view (for one process or all processes in the system)
- Export data from tables, listboxes, comboboxes, listviews etc
- View and change Windows Styles
- View Windows properties
- Class Browser: inspect the complete class hierarchy of an object
- Locate process folder, show process details dialog, terminate process
- Find objects based on window handle (Hex and Dec format)
- Create screen-shots (to clipboard or to file)
- Change the state and visibility of objects (enabled/disabled/hidden/visible)
- Locate and select the object in the source-code when running from Team Developer IDE
- Locate and select classes from the Class Browser in the source-code when running from Team Developer IDE
- Print objects to IDE output window for easy select within TD
- Search for Gui objects having a specific class name, template name, window handle, type or value/title
- Monitor SAM, WIN and USR messages using DebugView.
- v2.3: Send fixed or custom messages to any object
- v2.3: Support for Window states (maximized, normal, minimized) and TopMost/NoTopMost
Instead of creating a complete manual of Gui Inspector, a demo video has been created to demonstrate the features.
In the end of the video it is explained how to integrate it in your own projects.
You can find the video of Gui Inspector on the TDWiki YouTube Channel here:
Using Sql Monitor you can trace database actions performed by your application in real-time.
This is without having to enable logging (SQL.INI) or having to change the setup of your system in any way.
Just start the main trace window of Sql Monitor and it will detect when your application calls Sql functions.
These actions are displayed in the trace window and statement log.
Having "Break in source" feature you are able to break at the code line in the TD IDE where the SQL action is being executed.
For example, break on SqlfetchNext call in the source at the moment a record is fetched having specific data values or break
on SalPrepareAndExecute when a query is being processed.
List of features:
- Detects calling of a set of predefined Sql functions from the current running application (eg SqlConnect, SqlPrepare, SqlFetchNext etc).
- Works on any database brand (eg Oracle, SqlBase, DB2 etc) as long as the supported Sql functions are called from the application.
- Enable and disable monitoring on-the-fly.
- Shows the original sql statement executed.
- Shows details on actions, like the parameter values of the sql function being called.
- Inspecting result sets. Display the values of bind variables for each fetched record.
- Exporting trace and result sets (records) to text, Excel (csv) and HTML.
- Shows the actual time spent to execute the actions (measured on API level, so no extra noise of business logic etc).
- Search for specific statements containing particular texts (like names for tables, columns, variables etc).
- Search for specific records within result sets having a particular value for bind variables.
- Pretty printed SQL statement using color coding.
- Inspect fetched (string) buffers as-is or in HEX view. Also conversion options from UNICODE<->ANSI.
- Break modes to halt execution when particular conditions are met. Application will wait.
- Break in the sourcecode at the current DB execution action
- Inspect sql statements, input bind variables BEFORE they are executed/send to the database (in breakmode).
- Inspect output bind variables AFTER they are fetched from DB but before the application is about to process them (in breakmode).
- Change the sql statement and/or input bind variable values BEFORE action is executed on database on-the-fly (in breakmode).
- Change output bind variable values AFTER they are fetched from DB (in breakmode).
- Change string (buffer) values by loading them from a file (in breakmode)
- Save string (buffer) to file on disk.
- New: support for ODBSal API functions OdrPrepareProc, OdrExecuteProc, OdrGetNextResults and OdrPrepareNextResults
- New: support for SqlPrepareSP, SqlGetNextSPResultset, SqlCloseAllSPResultSets and SqlDropStoredCmd
- New in 2.4: support for SqlConnectEx, SqlImmediate, SqlClearImmediate, SqlImmediateContext, SqlGetResultSetCount, SqlGetRollbackFlag, SqlGetModifiedRows, SqlOraPLSQLStringBindType, SqlStore, SqlRetrieve, SqlPLSQLCommand
- New in 2.4: enable/disable single hooks to ignore certain traces or improve trace performance
You can find the video of Sql Monitor on the TDWiki YouTube Channel here:
With TD 7.2 a new feature is introduced: profiling
TDAppTools Profiler Controller is a simple screen having options to define and control the profiling.
You can easily start a profiling session at any moment.
List of features:
- Only available for TD 7.2 and up
- Define the trace file
- Define the level (1 or 2)
- Start, suspend, continue and stop profiling
- View the trace file using the TD Profiling Viewer
- View the trace file using the windows default application for the file extension
- New in 2.4: TD 7.3 annotation feature added
You can find the video of TDAppTools V2.1 on the TDWiki YouTube Channel here:
You can find the video of TDAppTools V2.3 on the TDWiki YouTube Channel here:
How to implement
Implementation in your own project is easy.
To add Gui Inspector or Sql Monitor to the application is just adding one line of code.
Read the TDAppTools readme document for implementation and deployment instructions:
Here the YouTube TDAppTools playlist:
https://www.youtube.com/playlist?list=P ... wjQfwYxY5x
Info on TDAppTools and download link on TDWiki :
https://wiki.tdcommunity.net/index.php? ... TDAppTools