rmControls v1.92
 
Table of Contents
Components/Controls/Classes rmLibrary - functions/procedures Description of Components and Functions
Disclaimer Contact Details Library Status
History Acknowledgments Release Notes
 
Components/Controls/Classes
rmStandard rmEdits rmCombos
TrmCalendar
TrmCheckBox
TrmClock
TrmCollectionListBox
TrmGauge
TrmImageListGlyph
TrmImageListGraphic
TrmLabel
TrmListControl
TrmSpinButton
TrmTrackBar
 
TrmBtnEdit
TrmFloatSpinEdit
TrmSpinEdit
TrmTimeSpinEdit
 
TrmBtnCombo
TrmColorComboBox
TrmComboBox
TrmComboCalendar
TrmComboPathTreeView
TrmComboTreeView
TrmNewComboBox
TrmSpinCombo
 
rmEnhanced rmNonVisual rmAdvanced
TrmCCPageControl
TrmCCTabControl
TrmEditDrawGrid
TrmEditGrid
TrmPanel
TrmPathTreeView
TrmSpeedButton
TrmSplitter
TrmTabSet
 
TrmApplicationEvents
TrmBrowseForFolder
TrmColumns
TrmCornerGrip
TrmDGTree
TrmFileDrop
TrmKeyBindings
TrmTreeNonView
TrmMemoryDataSet
TrmTrayIcon
TrmWordTree
 
TrmBinaryDataStorage
TrmCaptionButtons
TrmDayView
TrmDiffEngine
TrmDiffMap
TrmDiffMergeViewer
TrmDiffViewer
TrmInspector
TrmMDIBackground
TrmNotebookControl
TrmTabbedNotebookControl
TrmOutlookActionLink
TrmOutlookButtonList
TrmOutlookControl
TrmTaskBar
TrmTextDataStorage
 
Others rmControlsEx  
TrmToolWinForm
 
TrmZLIBDataStorage
 

 
 
rmLibrary - functions/procedures
Conversion Math/Numeric Hardware
BoolToStr
CharToStr
DateToInt
IntToDate
SizeInt
StrToBool
StrToChar
 
CompInRange
GreaterThanFloat
GreaterThanInt
IntInRange
LessThanFloat
LessThanInt
SetInRange
 
GetMediaInfo
 
Graphic CRC WinSock
DarkenColor
DrawGrayText
GradientFill
LightenColor
ReplaceColors
RotateImage
RotateText
 
GetFileCRC32
GetStrCRC32
GetStrmCRC32
 
LocalIP
LocalName
 
String Shell OS
CountSections
LeadingZero
MaskStrCmp
PadLeft
PadRight
ParseSection
rmDateTimeToStr
SoundEx
StripString
 
GetFileIcon
GetFileImageIndex
GetFileImages
GetFileType
ReadShortCutFile
WriteShortCutFile
 
FindCmdLineSwitchWithParam
GetTempDir
GetTempFile
ReadRegString
WinOSVersion
WriteRegString
 
Common ListView Sorting Procs Rect Forms
CaptionStringSortProc
DateSortProc
DecodeSortData
EncodeSortData
FloatSortProc
IntegerSortProc
StringSortProc
 
ClientRectToScreenRect
RectDiameter
RectHeight
RectWidth
ScreenRectToClientRect
 
LoadDialogPosition
LoadFormState
SaveDialogPosition
SaveFormState
 

 
Description of Components and Functions
Name Description
TrmApplicationEvents This component allows for designtime assigning of the standard application events.

This was originally created to correct a VCL bug in the original release version of Delphi5.
TrmBaseEdit As apart of the general tidying up I did I created a base edit control that most of the edit based components now descend from.
TrmBinaryDataStorage This component allows you to load and store binary data as a part of the forms resource.
You can't load data at runtime but you can save the data to disk or stream it out from the component.
TrmBrowseForFolder This is actually a couple of controls in one.
It allows you to display the standard windows dialog for: Browse for folder, Browse for Computers, Browse for Printers and Browser for Files or Folders
TrmBtnCombo This component descends from the TrmBtnEdit.
It implements an edit control that has an ellipsis button and has a dropdown combo list built in.
TrmBtnEdit This was another of my early components.
As such it's probably one of the most worked on components in the library.
It is used as a base control for a number of other rmControls.
It is an edit that has upto two ellipsis buttons.
TrmCalendar This is a simple replacement for the M$ common control calendar.
TrmCaptionButtons This allows you to place buttons on the caption bar of the form that the component is owned by.
TrmCCPageControl This and the TrmCCTabControl were originally apart of the ComCtrls95 component set.

They have enhanced drawing functionality along with some of the original enhanced features of the original component set.
The TrmCCPageControl has the ability to have it's pages ripped off to form floating forms that can then be reattached to the original control when closed.
TrmCCTabControl This and the TrmCCPageControl were originally apart of the ComCtrls95 component set.

They have enhanced drawing functionality along with some of the original enhanced features of the original component set.
TrmCheckBox This is a non-windows implementation of a Checkbox.
TrmClock This is a simple clock face that will show the appropriate hand position for the specified time.
TrmCollectionListBox This is control similar to a listbox but instead of a string list it uses a collection.
Each item can be multi-line and also can have an image associated with it.
TrmColorComboBox This is a standard combo box that has been modified to display colors and their associated names.
TrmColumns This component is tied to the details view of a TListView control.
It can store and retrieve the columns, their sizes and which on had sorting.
Useful for storing and retrieving stuff to registry for multiple views.
TrmCornerGrip This component is just placed on a form.
As long as there is nothing aligned so as to cover the bottom-right corner of the form then you will see the standard SizeGrip rect on the form at runtime.
TrmComboBox This combo box descends from the original Delphi TComboBox, but has extra features like look ahead completion and MRU history.
TrmComboCalendar This is a combobox that drops down a version of the TrmCalendar.
TrmComboPathTreeView This is a combobox that drops down a version of the TrmPathTreeView.
TrmComboTreeView This is a combobox that drops down a standard TTreeView.
TrmDayView This is a "PIM" day viewer component. Supports multiple time divisions (5min, 10, 15, 20, 30, 1hr).
TrmDGTree This is a very specialized type of non-visual tree.
I primarily use it in a spell-checker component/application that I've written.
TrmDiffEngine This is the non-visual difference engine that I developed from some C source I found on the net.
It can be hooked up to multiple rmDiffViewers/rmDiffMergeViewers at once.
TrmDiffMap This is a simple control that can be placed along side either an rmDiffViewer or rmDiffMergeViewer and can be linked to show where differences are located with in the two sources.
TrmDiffMergeViewer This control allows the end user to create a new, merged, version of two diff'ed files.
TrmDiffViewer This control shows the differences found in two diff'ed files.
TrmEditDrawGrid This was originally a standard DrawGrid but a friend needed the ability to have an inplace editor in a cell and so I provided this and the TrmEditGrid as possible solutions.
TrmEditGrid This was originally a standard StringGrid but a friend needed the ability to have an inplace editor in a cell and so I provided this and the TrmEditDrawGrid as possible solutions.
TrmFileDrop Drop this component on a form and set a couple of properties and you can turn any TWinControl descendant in to a drop zone for files from the shell.
TrmFloatSpinEdit This is a spinedit for editing real numbers.
TrmGauge This is a simple component that can be used to as a measuring gauge.
It has multiple drawing styles and can support gradient color filling.
TrmImageListGlyph This is a simple control that attaches to an imagelist and can change the displayed image via an imageindex property.

The difference between this component and the TrmImageListGraphic is that this one also allows you to have a caption attached to the image.
TrmImageListGraphic This is a simple control that attaches to an imagelist and can change the displayed image via an imageindex property.

The difference between this component and the TrmImageListGlyph is that this one has NO caption property.
TrmInspector This is a control similar to that found in Delphi's properties inspector.
TrmKeyBindings Personally I don't know why Borland didn't come up with something like this.
This control allows the end user to customize the short-cut keys assigned in actionlists.
The changes can then be saved/loaded at any time.
The dialog that the end user sees is very similar to the one found in M$-Word.
TrmLabel This was one of the first components I ever wrote.
It is basically an exercise in eye candy.

It provides the ability for borders, font textures and gradient shading.
TrmListControl This control was originally created for the rmDiff viewer controls.
It is essentially a listbox control but one that has a couple of extra properties and features.
TrmMDIBackground This component allows you to place an image in the MDI Client area of a form or to change it's color.

The image can be centered, tiled or stretched.
TrmMemoryDataSet This is a Dataset descendant that can be used just like a regular dataset with on major exception.
It doesn't hook up to a Database, a datasource or anything else.
You can set up the columns at design time or runtime and the it operates almost exactly like a standard dataset but with out the overhead of having a DB lying around.
TrmNewComboBox This was my first attempt at doing a non M$ Win32 based component.

It is similar in behavior and operation to the TrmComboBox but it is NOT a subclassed M$ Comboboxl.
TrmNotebookControl The TrmNotebookControl is a TNotebook replacement. It is similar to the TrmOutlook control in how you use it but it will probably never be "deprecated" from the control set.

And it doesn't suffer from the extra border problem that you get if using the TPageControl.
TrmTabbedNotebookControl The TrmTabbedNotebookControl is a TTabbedNotebook replacement. It is based on the TrmNoteBookControl with a TrmTabSet for the Tabs.
TrmOutlookActionLink This component allows you to automatically build rmOutlookButtonLists and add them to an rmOutlookControl from an ActionList.
Each category in the ActionList becomes a page in the rmOutlookControl.

This component was written by Piotr Jurago of Poland.
He sent it back to me and I've included it here.
Thanks Piotr!
TrmOutlookButtonList This is similar to the M$ list control that you see in their outlook controls.

It supports large (32x32), small(16x16) and Custom image sizes.
This has been rewritten to reduce memory usage and to speed it up.
This can now handle thousands of items and is very efficient in how it stores and displays them.
TrmOutlookControl This is actually very similar to a PageControl is how you use it, but it looks and feels like the control found in M$ Outlook.
Hence the name.
TrmPanel This panel has a builtin splitter/sizer grip built in as well as a sizing button.
Either one can be used separately or in conjunction with each other.

Both of these features only work when the panel has been aligned to an edge.
TrmPathTreeView This is treeview was originally based on the Delphi TTreeview.
The addition of the pathing code allows nodes to be added via a path and indexed via paths very quickly.

On average testing over 10000 nodes were added to the rmPathTreeView in less than 2000ms and all nodes were indexed/accessed via the pathing routines in less than 100ms. 
TrmSpeedButton This enhanced speedbutton is used through out the rmControls library.

It has a couple of different drawing styles to allow for dropdown menus and combo boxes.
TrmSpinButton This is an enhanced version of the Delphi Spin Button.
It provides some greater flexibility when used for automatic repeats.
TrmSpinCombo This is a spinedit that has a dropdown list combo built in.
TrmSpinEdit This is the base spinedit for most of the spinedit rmControls.
TrmSplitter This was originally created to over come a bug in an early version of the Delphi 4 VCL.
That bug has sinced been fixed as of Delphi 5 and this is probably a redundant component.
I always ment to do more with it but I think I superceded it with the TrmPanel functionality.
TrmTabSet This is an updated version of the old Win 3.1 Tabset component.
It is more resource friendly and provides the ability for further drawing styles. (ah-la - Windows 2000 style tabset)
TrmTaskBar This is similar to the M$ Windows Taskbar.
It is to be used on an applications mainform and it shows all windows attached to the application.
It is especially useful in MDI applications and has many useful functions like hiding the minimized MDI Child windows.
TrmTextDataStorage This is similar to the TrmBinaryDataStorage, but it is different in that it uses a stringlist.
This can be edited at designtime just like any other component that has a Stringlist in it.

You can't load data at runtime but you can save the data to disk or stream it out from the component.
TrmTimeSpinEdit This is a spinedit for editing time values (24 and 12 hr time formats)
TrmToolWinForm There is a very annoying bug in the M$ implementation the ToolWin windows style. (ie. bsSizeToolWin and bsToolWindow)

It causes what's know as the ALT-Tab bug where any form with a toolwin style that has focus will not allow the application to change focus to another application via the ALT-Tab key sequence.
(Check it out with the Delphi property inspector!!)

This form allows you to use a form that looks EXACTLY like a sizeable tool window but doesn't suffer from the ALT-Tab problem.

Look under the 'File|New...' menu item and select the rmToolWinForm to get it.
TrmTrackBar This is a replacement for the M$ common control trackbar component.
It offers the ability to change the thumb and other customizations.
TrmTrayIcon This component allows you to place an icon in the windows tray and provide functionality to handle menus and the such.
TrmTreeNonView This has to be the most useful component in the entire rmControl library.
This is a non-visual treeview with the same pathing functionality as the TrmPathTreeView.
The speed increases on this component are almost to amazing to believe, your just going to have to believe me.
TrmWordTree This non-visual component attempts to provide a simple dictionary type word lookup interface.
Given a list of words it will veryify words found in it's dictionary or provide a list of similar words found in its dictionary verified by a soundex algorithm.
TrmZLIBDataStorage This component allows you to load and store ZLIB compressed data as a part of the forms resource.
You can't load data at runtime but you can save the uncompressed data to disk or stream it out from the component.

To use this component you must first install the rmZLIB package and then the rmCtrlsEx package.
BoolToStr Returns the strings 'True' or 'False' for the boolean value given.
CaptionStringSortProc A function that does a compare of two TListItems caption property and returns the result.

Uses the CompareText function.
CharToStr Takes a character and converts it to is string equivalent.  (ie. 'A' to '#65')
ClientRectToScreenRect Operates similar to ClientToScreen except that it works on a TRect instead of a TPoint.
CompInRange Determines whether a Comp value is within a given range.
CountSections Counts the number of sections in a string separated by a specified character.
DarkenColor Returns the given color value darkend by x percent.
DateSortProc Takes two TListItems and from a given subitem index sorts the items as TDateTime values.
DateToInt Takes a date and returns it as an integer in the format of "yyyymmdd".
DecodeSortData Decodes the ListViews column id and sort direction from a single encoded value generated from the EncodeSortData function.

Handy for a single ListView that needs to emulate multiple LiveViews.
DrawGrayText Similar to the DrawText command but draws the text disabled.
EncodeSortData Encodes a ListViews column id and sort direction into a single encoded value that can be decoded by the DecodeSortData function.

Handy for a single ListView that needs to emulate multiple LiveViews.
FindCmdLineSwitchWithParam A function that allows for the processing of commandline options that need to contain parameters.

A command line option like "/load:filename.txt" can return the "filename.txt" value from the option "/Load:".
FloatSortProc Takes two TListItems and from a given subitem index sorts the items as Float values.
GetFileCRC32 Calculates a CRC32 value on a given filename.
GetFileIcon Returns the icon for a given file extension.
GetFileImageIndex Returns the shell icon image index for a given file extension.
GetFileImages Returns the shells imagelist handle for displaying shell icons.

(Warning: Use this function with caution.  Read up on using shared imagelists before using.)
GetFileType Returns the Shell file type string for a given file extension.
GetMediaInfo Returns information about a drive based on the flags passed into the call.
GetStrCRC32 Calculates a CRC32 value on a given string.
GetStrmCRC32 Calculates a CRC32 value on a given stream.
GetTempDir Handles the tedious work of the standard windows GetTempPath routine.
GetTempFile Handles the tedious work of the standard windows GetTempFilename routine.
GradientFill Draws a gradient fill on a canvas based upon a start and end color.
GreaterThanFloat Returns the larger of the two real number values.
GreaterThanInt Returns the larger of the two integer values.
IntInRange Determines whether an Integer value is within a given range.
IntegerSortProc Takes two TListItems and from a given subitem index sorts the items as Integer values.
IntToDate Takes an integer, value formated as "yyyymmdd", and returns it as a TDate.
LeadingZero Pads an integer value with leading zeros to a specified string length.
LessThanFloat Returns the smaller of the two real number values.
LessThanInt Returns the smaller of the two integer values.
LightenColor Returns the given color value lightend by x percent.
LoadDialogPosition Loads a dialog forms last position and size from the registry.

The main difference between this function and the LoadFormState function is that this doesn't restore the WindowState variable.
LoadFormState Loads a forms last position, size and optionally its last WindowState from the registry.

The main difference between this function and the LoadDialogPos function is that this can restore, if desired, the WindowState variable.
LocalIP Returns the Local machines IP address if available.
LocalName Returns the Local machines Name if available.
MaskStrCmp Does a string comparison with the * and ? wildcard characters
PadLeft Pads a string with leading spaces to a specified string length.
PadRight Pads a string with trailing spaces to a specified string length.
ParseSection Parses a returns data from a string separated by a specified character.
(ie 'One|Two|Three|' the index 2 would return 'Two')
ReadRegString Basic wrapper function for the tediousness of having to read basic string information from the registry.
ReadShortCutFile Reads a .LNK or .PIF file and returns the details of it in an TShortCutDetails record.
RectDiameter Takes a TRect and returns what the circular diameter of the Rect is.
RectHeight Returns the height of the Rect
RectWidth Returns the width of the Rect
ReplaceColors Takes a simple black and white bitmap and does a two color replacement.
rmDateTimeToStr Returns the date time as a string in the format of  'yyyymmddhhnnsszzz'
RotateImage Rotates an image by a specified rotational angle.
RotateText Draws text on an canvas specified by a rotational angle.
SaveDialogPosition Saves a dialog forms last position and size to the registry.

The main difference between this function and the SaveFormState function is that this doesn't save the WindowState variable.
SaveFormState Saves a forms last position, size and WindowState to the registry.

The main difference between this function and the SaveDialogPos function is that this saves the WindowState variable.
ScreenRectToClientRect Operates similar to ScreenToClient except that it works on a TRect instead of a TPoint.
SetInRange Determines whether a value is with in a given range and sets it to one of the bounds if it isn't.
SizeInt Takes an integer value and returns the shorted string version.  (ie 1024 to '1kb')
SoundEx Does a simple SoundEx calculation on a given string.
StringSortProc Takes two TListItems and from a given subitem index sorts the items as string values.
StripString Strips a string of all characters from a specified character set.
StrToBool Attempts to return the Boolean value of the given string.
StrToChar Takes a string and attempts to convert it to is character equivalent.  (ie. '#65' to  'A')
WinOSVersion This returns an enumerated type specifying the current operating system.
WriteRegString Basic wrapper function for the tediousness of having to write basic string information to the registry.
WriteShortCutFile Writes a .LNK file from the details given in a TShortCutDetails record.
Other Files, Units and Unmentionables
TrmHint A rewrite of the standard Borland Hint window with some extra properties.
CompilerDefines.INC
(File)
This file provides every rmControl unit with a standard set of compiler defines and options.

Do not modify this file, doing so will most likely cause your library to stop compiling.
sergey_orlik_def.inc
(File)
Since I use parts of Sergeys form expert code to install the TrmToolWinForm I still have to include a copy of his include file with his compiler defines in them.
rmMSGList
(Unit)
A unit that converts standard windows messages into strings for logging or debugging purposes.

It fairly complete list also including VCL messages and some common ComCtrl messages when able.

Function GetMessageName(Msg:integer):string;
rmGlobalComponentHook
(Unit)
Provides a standard stack type interface to the rmControls that descend from TComponent and that hook their owners WndProc.
This enables the component to correctly backout of the hook with out hanging the form or application.

***** This is not to be used lightly!! *****
PLEASE look at all the units that use the functions located in this unit and how they use them.
** You have been warned **
rmInspectorItems
(Unit)
This unit contains most of the usable rmInspectorItems.

This are most of the items I've ever had need for.
rmScrnCtrls
(Unit)
This unit shows how I've implemented most of the rm'ified Combo controls from standard controls such as the TrmTreeViewCombo.

If you want to make your own "combo" controls looking through this file is probably a very good place to start.
rmZLIB
(Package)
Starting with the v1.90 release I'm shipping an rm'ified version of the ZLIB routines.
I'm doing this to help support the rmZLIBDataStorage Component and to avoid possible name resolution conflicts.
The version of ZLIB being shipped is 1.1.4.
rmCtrlsEX
(Package)
Starting with the v1.90 release I'm shipping an extra unit that has outside dependancies.

This package requires that the rmZLIB package be installed before installing this one.
This package contains the TrmZLIBDataStorage component.
There are other bits and pieces of this component set that I could tell you about but I'm not.
If you are really interested and have and somewhat advanced knowledge of both Windows and Delphi programming then feel to browse the code.

 
Disclaimer
THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED.

Because of the various software environments into which this code may be used, NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED.

Good data processing procedure dictates that any program based on this code be thoroughly tested with non-critical data before relying on it.

THE USER MUST ASSUME THE ENTIRE RISK OF USING ANY OF THE ACCOMPANYING CODE.

 
Library Status
This code is being released as freeware.
I only ask that if you modify the code that you email a copy of the new source back to me.
If you do use and enjoy the library, drop me a line and let me know.

 
Contact Details
My name is Ryan Mills and the rmControl library homepage is http://www.mills-enterprise.ca
If you have questions or source code updates you can email them to this address rmcontrols@mills-enterprise.ca
(Note: add an _ (underscore) to the front of the email address)

 
History
I originally started this library in 1997 as the meControl library.
It wasn't long after this that I found the Delphi Prefix Registry and discovered that the "me" prefix was already spoken for.
Since then I have registered the "rm" prefix renamed all of the original components and produced a few new ones.

 
Acknowledgments
I wrote alot of the code found in this library and the code that I didn't write I either have been asked to take over and maintain or have found on the net and included in this library.

If you look in the header comments of the units you will find the relevant comments giving credit to the original author.

 
Release Notes
Date Released Version Comments
12-09-2002 1.92 Not much new to report. Fixed a few more bugs and I've finally got some demos.

New components in this release: None

Fixed some bugs with some of the TrmInspector items. Specifically the TrmDateInspectorItem as well as the TrmCalendarCombo.

Demos: rmInspectorrmDiffrmWordTree

12-05-2002 1.91 OK, I know this is ridicules, but two updates in two weeks? Even I don't get it.
Actually I do. The v1.90 has a bug in the TrmNoteBookControl that I didn't catch until a day after I release the code. D'OH!

I should have tested the last release for D5 compilability but didn't have D5 installed. You guessed it, it didn't work!   So I've reinstalled D5 and fixed all three packages and verified that they all compile under D5 through to D7. Woo-Hoo!

I've also caught some flack about how to compile the rmControls library. So here's the install order of the packages for anyone who doesn't understand packages:

1) Install the rmZLIB package.
   This is a standalone packages that provides ZLIB support for the rmControls Library.

2) Install the rmCmpLib package next.
   This contains all of the (base) controls.

3) Install the rmExCmpLib package last.
   This packages contains controls that require outside packages, such as the rmZLIB support package.

After that your done!

New components in this release: TrmTabbedNoteBookControl

11-24-2002 1.90 EEK! Over a year since I last did an update. I'm so sorry!

Anyways here is the latest and greatest. (All disclaimers in effect! <g>) I've been busy starting my own company and getting married. It takes a bit out of a guy.
I've added a few new components, restructured a number of others and generally been a bad boy.
There should be no big breaks of functionality from the last version but testing is necessary.

**** This version now fully supports D7, D6 and D5, I think. ****

I no longer have D5 installed and haven't tested any of the new stuff.
If you have any problems please let me know.
New components in this release: TrmClock TrmDayView, TrmNoteBook, TrmZLIBDataStorage

New functions/procedures in this release: DateToInt, IntToDate, DarkenColor, LightenColor, FindCmdLineSwitchWithParam, GetTempDir, GetTempFile, ReadRegString, WriteRegString, CaptionStringSortProc, DateSortProc, DecodeSortData, EncodeSortData, FloatSortProc, IntegerSortProc, StringSortProc, ClientRectToScreenRect, ScreenRectToClientRect, LoadDialogPosition, LoadFormState, SaveDialogPosition, SaveFormState

I have located a bug in original release of D6 that affects the ActionManager.
**This bug affects the TrmKeyBindings component specifically.
If you change the shortcut of a TClientActionItem at runtime (for sure) it will change the shortcut but it wont change the caption on things like the menu items.  BAD!!

I finally have an email address that is a little more permanent: rmcontrols@mills-enterprise.ca

- Fixed a bug in TrmInspector that was causing a memory leak.  Thanks to Patrick O'Keeffe for finding it.
- Fixed a bug in TrmPathTreeView, thanks to the guys at the Marathon project for that one.
- Generally fixed a number of bugs most if not all the units. (Read: I'm sure I touched every unit!)
06-22-2001 1.80 I finally got my copy of D6!  Thus the big jump in the version numbers.  This release now supports both D5 and D6.  The most changes had to occur in the design-time code.  There were a couple of function deprication issues that I had to IFDEF out but for the most part this version of the code base is same.  You shouldn't notice any difference. 

*****Please Note*****
Just because I've gotten the entire component set compiled in D6 doesn't mean that at this time I have run a full regression test on all the code.  Please notify me immediatly of any problems encountered while useing these components with Delphi 6.
*****Please Note*****

I have once again had an email address change: ryan.mills@quest.com (no longer in use)
I am working on getting a more stable and permanent address but I haven't yet as I am moving in the next week or so.  Please be patient with me.  I do monitor the borland news groups if you can't seem to get ahold of me any other way.

- Updated TrmTreeNonView and TrmPathTreeView with some speed enhancements
   and a bug fix that caused the indexing to fail on the Items.assign function. 
- Updated the ancestry of TrmImageListGlyph 
- Updated with bug fixes TrmCalendarCombo, TrmDiffViewer, TrmNewComboBox
- Fixed a bug in TrmListControl that was causing a memory leak.  Thanks to 
   Ingo Eckel for finding it.
- Rewrote the clientarea code for the TrmPanel to properly handle multi-embeded
   rmPanels
- Modified the rmConditionalDefines.INC file to include what I consider necessary 
   compiler defines.
- Rewrote the drawing code for the TrmTab3x component to allow for alTop 
   aligned tabs.  All other alignments still work like the original alBottom alignment did.

Added SoundEx, RectHeight, RectWidth, rmCheckBox, rmCheckboxInspectorItem
  rmOutlookActionLink (written by Piotr Jurago of Poland)

05-03-2001 1.70 - Updated the TrmMemoryDataSet.  Mea Culpa, I included an 'in progress' copy of 
   the control instead of the working copy.  Thanks to Graeme D. Keast for finding 
   that one. 
- Updated the rmNewComboBox.  I was again in the progress of changing over the 
   base component of the copy I sent out. Thanks to Peter Giroux for that one. 

Added rmToolWinForm

04-19-2001 1.65 Updated a number of components implementing bug fixes and enhancements.

Added rmDGTree, rmMemoryDataSet and rmInspector.
03-19-2001 1.60 This is the original public release version.