# Release Notes for JEDI VCL

## Other release notes included in this distribution

- Install. Contains information on how to install JVCL.

- License. Contains information on the JVCL usage and distribution license.

- Migrating. Contains information on how to migrate your applications from previous versions of JVCL and/or previous versions of components that has been added in this release of JVCL.
- BCB Compatibility Guide. Describes how to install JVCL in C++Builder.
- JvExVCL description. Describes how to use the JvExVCL (layer for VCL and VisuaLCLX) in your own code.
- Build status. Contains information on the current build status of the JVCL for supported Delphi and BCB versions.
- Localization. Contains information on how to enable localization support in JVCL.

###

## Changes in this version

#### New folder structure

The files in JVCL is arranged according to a new folder structure. Previous versions of JVCL put all source files into one folder and all packages into another. The number of units in JVCL has forced us to divide this further in the current version. The current folder structure looks like this:

<JVCL>

<root> - contains important documents, like this readme

\archive - old components (not installed) for those cases where you are unable to migrate to a newer version or replacement

\bin - output folder for binaries (from \examples)

\common - contains common units, like API translations, INC files and the like

\converter - DAT files for JVCLConvert (in \devtools\JVCLConvert)

\dcu - output folder for dcu files (from \examples)

\design - contains units only used at design-time

\devtools - contains the sources for various useful tools

\Dict - dictionary files for TJvSpellChecker

\examples - all available demos

\help - contains the help file(s) and additional documentation

\images - original images and rc files for the palette icons

\Includes - C/C++ include files for UIB

\install - source scripts and utilities for the installer

\lib

\c5 - dcu and obj output for BCB5 packages

\c6 - dcu and obj output for BCB6 packages

\d5 - dcu output for Delphi 5 packages

\d6 - dcu output for Delphi 6 packages

\d7 - dcu output for Delphi 7 packages

\d9 - dcu output for Delphi 2005 packages

\d10 - dcu output for Delphi/C++Builder 2006 packages

\d11 - dcu output for RAD Studio 2007 packages

\d12 - dcu output for RAD Studio 2009 packages

\d14 - dcu output for RAD Studio 2010 packages

\locale - contains the DxGettext template and some ready to use translations

\packages

\bin - bootstrapping tools

\c5 - packages for C++Builder 5

\c6 - packages for C++Builder 6

\c6per - modified packages for C++Builder 6 Personal Edition

\d5 - packages for Delphi 5

\d5std - modified packages for Delphi 5 Standard

\d6 - packages for Delphi 6

\d6per - modified packages for Delphi 6 Personal Edition

\d7 - packages for Delphi 7

\d7per - modified packages for Delphi 7 Personal Edition

\d9 - packages for Delphi 2005

\d9per - modified packages for Delphi 2005 Personal Edition

\d10 - packages for Delphi/C++Builder 2006

\d11 - packages for RAD Studio 2007

\d12 - packages for RAD Studio 2009

\d14 - packages for RAD Studio 2010

\xml - Source xml files for the packages. All the packages are generated from these files.

\Resources - contains res, dcr and other resource files used at either run or design time

\run - contains units used at run-time

Depending on which distribution of JVCL you download, some folders and files might not be created on your system.

#### Theming

Several visual JVCL controls supports XP theming (more will likely be added subsequently). Theming is automatically activated for users of Delphi 7 (and above) and you don't need to do anything special in this case. For earlier versions of Delphi (5 and 6), you need to download Mike Lischke's ThemeManager package and configure the JVCL theming support manually. To activate JVCL theming, proceed as follows:

- Download ThemeManager from http://www.delphi-gems.com/ThemeManager.php.
- Open ThemeManager?.dpk (where "?" is the Delphi version) and change the compile options to "Explicit rebuild".
- (Re)build and install the ThemeManager package.
- For manual installation: Open jvcl.inc with a text editor and remove the dot in {.$DEFINE JVCLThemesEnabled}.
- (Re)build the jvcl packages.

If you want theming support in C++ Builder 5 and 6, you will need to manually create the appropriate DCP file for the installation to succeed instead of the steps two and three in the above list. Here are the steps for BCB5, thanks to Carmelo Viavattene :

- In the ThemeManager directory, copy ThemeManagerD5.dpk to ThemeManagerC5.dpk and ThemeManagerD5D.dpk to ThemeManagerC5D.dpk
- Do the same with the .res files
- With a text editor, open ThemeManagerC5.dpk and do the following replacements:

- package ThemeManagerD5; by package ThemeManagerC5;
- {$IMPLICITBUILD ON} by {$IMPLICITBUILD OFF}

- With a text editor, open ThemeManagerC5D.dpk and do the following replacements:

- package ThemeManagerD5D; by package ThemeManagerC5D;
- requires ThemeManagerD5 by requires ThemeManagerC5
- {$IMPLICITBUILD ON} by {$IMPLICITBUILD OFF}

- Open a command prompt and go in the folder where the newly created packages (dpk files) are located
- Run these commands, replacing $(ROOT) by the root folder of your BCB5 installation (c:\program files\CBuilder5 by default):

- $(ROOT)\bin\dcc32 ThemeManagerC5.dpk
- $(ROOT)\bin\dcc32 ThemeManagerC5D.dpk

- Copy the two newly created files to $(ROOT)\projects\bpl
- Copy the eight newly created OBJ files from $(ROOT)\projects\intermed to $(ROOT)\projects\lib
- Now in the ThemeManager source directory, edit TmSchema.hpp and do the following replacement:

- #include "tmschema.h" by #include "..\cbuilder\tmschema.h"

- Also edit UxTheme.hpp and do the following replacement:

- #include "uxtheme.h" by #include "..\cbuilder\uxtheme.h"

Theming should now be activated for those JVCL controls that supports it. Note that you still need to be running on Windows XP with a manifest file for your project to see any theming.

#### Localization

All strings that get displayed to the user are stored in resource strings. If you want the JVCL to display those strings in other languages, you should use DxGettext as this is the only localization method supported by the JVCL group. You must turn on the use of DxGettext in jvcl.inc and recompile the JVCL packages for the support to be complete. Please refer to the localization documentation for more details on this topic.

#### CLX support

CLX support was dropped in Version 3.33

#### Available distributions

The JVCL is available in three different distributions. These are:

- Minimum - only contains the files needed to install the components
- Medium - same as Minimum but also includes the demo folders
- Full - contains everything in the CVS repository as well as the latest release of JCL

Each of the "stand-alone" packages are also available as separate distributions (see USEJVCL below for a list of stand-alone packages). In case we get enough requests, we might also provide each package as a separate distribution.

#### New package layout

Previous versions of JVCL had one run-time and one design-time package for each version of supported compilers (i.e one pair for Delphi 5, another pair for Delphi 6 etc). The current JVCL, however, is split into a larger set of smaller packages, where each package contains logically related components. Each run-time package also has a matching design-time package with the registration code and any design-time editors required by the run-time package. The following packages are currently available:

Package | Description | Contains | Required JVCL packages (packages in parenthesisses are required by the design-time package)
--- | --- | --- | ---
JvCore | Contains the core units used by a large part of the JVCL | Core support units TJvJVCLAboutComponent TJvContextProvider TJvColorProvider TJvAppIniStore TJvAppRegistryStore TJvLookupAutoComplete | none
JvSystem | System related components | TJvSHFileOperation TJvChangeNotify TJvDragDrop TJvDropTarget TJvHidDeviceController TJvNTEventLog TJvScreenSaver TJvDeviceChanged TJvJoystick TJvSoundControl TJvKeyboardStates TJvDirectories TJvSystemColors TJvAppDdeCmd TJvPerfStat95 TJvSimpleXML TJvXMLDatabase TJvRas32 TJvCommStatus TJvFormStorage TJvSearchFiles TJvMRUList TJvMRUManager TJvShellHook TJvWindowHook TJvTimer TJvThread TJvThreadTimer TJvTimerList TJvAppInstances | JvCore
JvStdCtrls | "Standard" or enhanced standard controls | TJvMainMenu TJvPopupMenu TJvSystemPopup TJvCalculator TJvBrowseForFolderDialog TJvBitBtn TJvImgBtn TJvCheckBox TJvRadioButton TJvRadioGroup TJvUpDown TJvDomainUpDown TJvControlPanelButton TJvStartMenuButton TJvRecentMenuButton TJvFavoritesButton TJvEdit TJvMemo TJvRichEdit TJvCheckedMaskEdit TJvMaskEdit TJvHotKey TJvCalcEdit TJvComboEdit TJvFilenameEdit TJvDirectoryEdit TJvDateEdit TJvSpinEdit TJvIPAddress TJvImage TJvPageControl TJvProgressBar TJvGradientProgressBar TJvStatusBar TJvTabControl TJvToolBar 3. TJvControlBar TJvCoolBar TJvGroupBox TJvHeaderControl TJvPanel TJvBevel TJvLabel TJvStaticText TJvComboBox TJvListBox TJvCheckListBox TJvTreeView TJvListView TJvCheckTreeView TJvColorComboBox TJvFontComboBox TJvDateTimePicker TJvMonthCalendar TJvDrawGrid TJvStringGrid TJvScrollBox TJvTrackBar TJvxSlider TJvImageList | JvCore, JvSystem
JvCtrls | Visual controls | TJvTransparentButton TJvTransparentButton2 TJvArrowButton TJvCaptionButton TJvColorButton TJvHTButton TJvTransLED TJvSpacer TJvSwitch TJvSpeedBar TJvCaptionPanel TJvItemsPanel TJvMovableBevel TJvRollOut TJvFooter TJvGroupHeader TJvComponentPanel TJvBehaviorLabel TJvInstallLabel TJvHTLabel TJvWinampLabel TJvImageComboBox TJvImageListBox TJvHTListBox TJvHTComboBox TJvUninstallComboBox TJvUninstallListBox TJvDriveCombo TJvDriveList TJvFileListBox TJvDirectoryListBox TJvRegistryTreeView TJvPlaylist TJvScrollMax TJvaScrollText TJvContentScroller TJvPageScroller TJvScrollingWindow TJvScrollText TJvSplitter TJvxSplitter TJvSyncSplitter TJvClock TJvZoom TJvDice TJvHint | JvCore, JvStdCtrls
JvCmp | Non-visual components | TJvAlarms TJvConverter TJvDataEmbedded TJvCreateProcess TJvEnterAsTab TJvMergeManager TJvPageManager TJvPatchFile TJvProfiler TJvStrHolder TJvTimeLimit TJvWinHelp TJvTranslator TJvPrint TJvEasterEgg | JvCore, JvSystem (JvStdCtrls)
JvCustom | Custom controls and "advanced" components | TJvValidateEdit TJvTrayIcon TJvScheduledEvents TJvBalloonHint TJvEditor TJvHLEditor TJvHLEdPropDlg TJvGammaPanel TJvOutlookBar TJvLookout TJvExpress TJvLookOutButton TJvExpressButton TJvRadioControl TJvLinkLabel TJvInspector TJvInspectorBorlandPainter TJvInspectorDotNETPainter TJvThumbImage TJvTimeLine TJvTMTimeLine | JvCore, JvCtrls, JvSystem,
JvDlgs | Dialog components | TJvSelectDirectory TJvOpenDialog TJvSaveDialog TJvTipOfDay TJvFindReplace TJvDSADialog TJvPageSetupDialog TJvPageSetupTitledDialog TJvConnectNetwork TJvDisconnectNetwork TJvAddPrinterDialog TJvFindFilesDialog TJvFormatDriveDialog TJvColorDialog TJvOrganizeFavoritesDialog TJvComputerNameDialog TJvAppletDialog TJvChangeIconDialog TJvShellAboutDialog TJvRunDialog TJvObjectPropertiesDialog TJvNewLinkDialog TJvAddHardwareDialog TJvOpenWithDialog TJvDiskFullDialog TJvExitWindowsDialog TJvOutOfMemoryDialog TJvObjectPickerDialog TJvDualListDialog TJvImageDlg TJvLoginDialog TJvProgressDialog TJvProgressComponent TJvDiskPrompt TJvCopyError TJvDeleteError TJvRenameError | JvCore, JvSystem, JvStdCtrls
JvCrypt | Encryption and Compression components | TJvCabFile TJvZLibMultiple TJvGenetic TJvCaesarCipher TJvXorCipher TJvVignereCipher TJvSerialMaker | JvCore
JvMM | Multimedia and graphic components | TJvAnimate TJvAnimatedImage TJvBmpAnimator TJvGIFAnimator TJvGradient TJvGradientHeaderPanel TJvIconList TJvID3v1 and TJvID3v2 TJvImageRotate TJvImageTransform TJvImageWindow TJvImageSquare TJvPicClip TJvSlider TJvSpecialImage TJvSpecialProgress TJvStarfield TJvWaitingGradient TJvWaitingProgress TJvWavePlayer | JvCore, JvCmp, JvCtrls, JvSystem
JvHMI | HMI Components | TJvLED TJvSegmentedLEDDisplay TJvDialButton | JvCore
JvNet | Network and Internet technology components | TJvFtpGrabber TJvHttpGrabber TJvMultiHttpGrabber TJvMail TJvHtmlParser TJvStrToHtml TJvStringListToHtml TJvFormToHtml TJvRichEditToHtml TJvRgbToHtml | JvCore, (JvStdCtrls)
JvAppFrm | Application and Form related components | TJvAppEvents TJvAppAnimatedIcon TJvFormAnimatedIcon TJvApplicationHotKey TJvTransparentForm TJvFormAnimation TJvFormWallpaper TJvFormMagnet TJvFormAutoSize TJvGradientCaption | JvCore, JvSystem, JvStdCtrls, (JvCmp, JvMM, JvCtrls)
JvDB 5. | Generic DB access and DB controls | TJvCsvDataset TJvMemoryData TJvDBDatePickerEdit TJvDBProgressBar TJvDBRichEdit TJvDBSpinEdit TJvDBLookupList TJvDBLookupCombo TJvDBLookupEdit TJvDBRadioPanel TJvDBCombobox TJvDBTreeview TJvDBTreeviewCombo TJvDBLookupTreview TJvDBGrid TJvDBComboEdit TJvDBDateEdit TJvDBCalcEdit TJvDBStatusLabel TJvHTDBLabel TJvDBCheckBox | JvCore, JvStdCtrls,
JvBDE 5. | BDE specific components and controls | TJvDBFilter TJvDBIndexCombo TJvDatabaseItems TJvTableItems TJvDBMove TJvDBProgress TJvQBEQuery TJvDBSecurity TJvBDEMemoryTable TJvQuery TJvBDESQLScript | JvCore, JvDB, JvDlgs
JvInterpreter | Components and units related to JvInterpreter | TJvInterpreter TJvInterpreterFm | JvCore, JvCtrls, JvCustom
JvBands | Units for band object development | Band object wizard | JvCore
JvPlugin | JvPlugin related components | TJvPlugin TJvPluginManager Plugin wizard | JvCore
JvJans | Jans Delphi Components | TJvMarkupLabel TJvMarkupViewer TJvSAL TJvSticker TJvSALCore TJvSALMath TJvYearGrid TJvAirBrush TJvTracker TJvGridFilter TJvGridPrinter TJvJanTreeview TJvPaintFX TJvDrawImage TJvArrayButton TJvForthScript TJvTurtle TJvBitmapButton TJvSpeller TJvShapedButton TJvSimScope TJvSimIndicator TJvSimPID TJvSimPIDLinker TJvSimConnector TJvLogic TJvSimButton TJvSimLight TJvSimLogicBox TJvSimReverse TJvCSVBase TJvCSVEdit TJvCSVComboBox TJvCSVCheckBox TJvCSVNavigator | JvCore
JvGlobus | Globus Delphi Components | TJvgExportDBETable 5. TJvgDBNAvigator TJvgPrintCrossTable TJvgDBGrid 5. TJvgVertDBSGrid 5. TJvgSysInfo TJvgMaskEdit TJvgBevel TJvgBitBtn TJvgGraphicButton TJvgGraph TJvgTreeView TJvgCheckTreeView TJvgSplitter TJvgShadow TJvgShade TJvgButton TJvgImageGroup TJvgProgress TJvgTransparentMemo TJvgWinMask TJvgGroupBox TJvgBitmapImage TJvgListBox TJvgCheckListBox TJvgAskListBox TJvgScrollBox TJvgStringGrid TJvgSpeedButton TJvgWizardHeader TJvgCaption TJvgGridHeaderControl TJvgCheckBox TJvgRuler TJvgPageControl TJvgTabControl TJvgMailSlotServer TJvgMailSlotClient TJvgLabel TJvgFlyingText TJvgDigits TJvgStaticText TJvgHoleShape TJvgExportExcel TJvgExportHTML TJvgHelpPanel TJvgExportXML TJvgXMLSerializer TJvgLanguageLoader TJvgExceptionHandler TJvgJumpingComponent TJvgStringContainer TJvgSysRequirements TJvg3DColors TJvgHint TJvginspectorGrid TJvgReport TJvgReportParamsEditor TJvgLogicProducer TJvgSmallFontsDefence TJvgMultipleResources TJvgSingleInstance TJvgFixFont TJvgComponentDescription TJvgQRLabel 5. TJvgQRDBText 5. TJvgMyQRPreview 5. | JvCore, JvSystem, JvStdCtrls, (JvCtrls, JvCustom, JvDlgs, JvMM)
JvPrintPreview | Print Preview Components | TJvPreviewControl TJvPreviewRenderRichEdit TJvPreviewRenderStrings TJvPreviewRenderGraphics TJvPreviewRenderControl TJvPreviewPrinter | JvCore
JvPageComps | Page style components | TJvPageList TJvPageListTreeView TJvSettingsTreeView | JvCore
JvValidators | Validator and Error Indicator components | TJvValidators TJvValidationSummary TJvErrorIndicator | JvCore
JvUIB | UIB (Unified Interbase) Components | TJvUIBDatabase TJvUIBTransaction TJvUIBQuery TJvUIBBackup TJvUIBRestore | JvCore 4.
JvWizard | Wizard component and RouteMaps formerly known as "K Wizard" | TJvWizard TJvWizardRouteMapNodes TJvWizardRouteMapSteps | JvCore 4.
JvTimeFramework | Set of PIM components formerly known as UIL Time Framework 2.0 | TJvTFAlarm TJvTFScheduleManager TJvTFGlanceTextViewer TJvTFMonths TJvTFWeeks TJvTFDays TJvTFUniversalPrinter TJvTFDaysPrinter | JvCore 4.
JvManagedThreads | Thread components (for version 6 and newer only) | TJvMtManager TJvMtThread TJvMtThreadToVCL TJvMtVCLToThread TJvMtThreadToThread TJvMtSection TJvMtCountingSection TJvMtMonitorSection | JvCore
JvDotNetCtrls | DotNet style components (Do not require the .Net framework to be installed) | TJvDotNetCheckListBox TJvDotNetEdit TJvDotNetHotKey TJvDotNetListBox TJvDotNetListView TJvDotNetMaskEdit TJvDotNetMemo TJvDotNetRichEdit TJvDotNetScrollBox TJvDotNetTreeView TJvDotNetDBEdit 5. TJvDotNetDBListBox 5. TJvDotNetDBLookupListBox 5. TJvDotNetDBMemo 5. TJvDotNetDBRichEdit 5. |
JvDocking | Docking components | TJvDockServer TJvDockClient TJvDockDelphiStyle TJvDockVCStyle TJvDockVIDStyle TJvDockVSNetStyle | JvCore 4.
JvXPCtrls | XP/Office XP style controls (Do not require to run on XP to display correct look) | TJvXPStyleManager TJvXPBar TJvXPContainer TJvXPButton TJvXPToolButton TJvXPCheckBox TJvXPProgressBar |

1. Not available in C++ Builder 6
2. Not available in C++ Builder 5
3. Limited functionality in Delphi 5
4. If USEJVCL is defined (it is by default). If you change the definition of USEJVCL, you MUST regenerate the packages using the PackageGenerator available in $(JVCL)\devtools. The installer will do that for you.
5. Not available in Standard and Personal versions.

#### New components added

The following new components and libraries has been added since JVCL 2.10:

- The Globus Library
- Jans Delphi Components
- The UIB Interbase/Firebird Database Components
- Print Preview components
- Validator components
- K Wizard component and RouteMaps
- UIL Time Framework 2.0
- Managed Threads Components
- TJvErrorIndicator
- TJvXMLDatabase
- TJvMouseGesture
- TJvAVICapture
- TJvBlinkingLED
- TJvAppInstances (controls how often an application can be startet
- TJvImageList (can handle resources and external images)
- TJvColorProvider
- TJvSegmentedLED
- TJvComboListBox
- TJvSpellChecker
- DockPresident components
- Delphi eXperience Controls II
- Delphi eXperience DotNet Controls II
- UltimVCL
- TJvLookupAutoComplete (extends edit fields with autocomplete functionality)
- TJvDebugHandler (creates log files on exceptions with call stack)

#### Components deprecated, renamed, removed or changed

Below follows a list of components that have been removed, renamed or are deprecated since JVCL 2.10 (i.e they will most likely disappear in the near future).

##### Removed Components

> TJvBreatheSkin, TJvCommandEdit, TJvCoupler, TJvCPUUsage, TJvHighLighter, TJvMemoryInfos, TJvMousePositionner, TJvNagScreen, TJvPerforated, TJvPopupMemo, TJvAutoSave, TJvRegAuto, TJvCurrencyEdit, TJvxCurrencyEdit, TJvFloatEdit, TJvFloatEdit2, TJvButton

##### Renamed Components

> The following units and classes have been renamed in this version:

Previous | New
--- | ---
JvTMTL | JvTMTimeLine
JvAutoSizeCompo | JvFormAutoSize
JvGrdCpt | JvGradientCaption
JvPlacemnt | JvFormPlacement
JvVerInf | JvVersionInfo
JvUCB | JvUninstallCtrls
JvTimerLst | JvTimerList
JvSysComp | JvCreateProcess
JvObjStr | JvObjectStrings
JvMrgMngr | JvMergeManager
JvMouseTimerU | JvMouseTimer
JvFDualList | JvDualListForm
JvExcptDlg | JvExceptionForm
JvDBSecur | JvDBSecurity
JvDBRichEd | JvDBRichEdit
JvDBPrgrss | JvDBProgress
JvDBExcpt | JvDBExceptionForm
JvColorBtn | JvColorButton
JvCntScr | JvContentScroller
JvCmdEdit | JvCommandEdit
JvChPswDlg | JvCheckPasswordForm
JvOLBar | JvOutlookBar
JvSbSetup | JvSpeedbarSetupForm
JvRegTV | JvRegistryTreeview
JvPrgrss | JvProgressUtils
JvPluginMan | JvPluginManager
JvQbnddlg | JvQueryParamsForm
JvRadioCtl | JvRadioControl
JvRecentMenuBtn | JvRecentMenuButton
JvRemLog | JvRemoteLogin
JvSHFileOp | JvSHFileOperation
JvSplshWnd | JvSplashWindow
JvSQLS | JvSQLScript
JvStartMenuBtn | JvStartMenuButton
JvStrHlder | JvStringHolder
JvRichEd | JvRichEdit
JvControlPanel | JvControlPanelButton
JvClipMon | JvClipboardMonitor
JvClipView | JvClipboardViewer
JvDataConv | JvConverter
JvPageMngr | JvPageManager
JvBmpAnim | JvBmpAnimator
JvClipIcon | JvIconClipboardUtils
JvArrowBtn | JvArrowButton
JvMemDS | JvMemoryDataset
JvMagnet | JvFormMagnet
JvDlg | JvProgressForm
JvCurrEdit | JvBaseEdits
JvDBComb | JvDBCombobox
JvDBCtrl | JvDBControls
JvHLEdPropDlg | JvHLEditorPropertyForm
JvIcoList | JvIconList
JvPropAutoSave | JvAutoSave
JvTransBtn | JvTransparentButton
JvxLogin | JvLoginForm
JvxLoginDlg | JvDBLoginDialog
JvProps | JvPropsStorage
JvxAnimate | JvAnimatedImage
JvMRUList | JvMRUManager
JvMRU | JvMRUList
JvObjPickerComp | JvObjectPickerDialog
TJvControlPanel | TJvControlPanelButton
TJvStartMenuBtn | TJvStartMenuButton
TJvRecentMenuBtn | TJvRecentMenuButton
JvAppletProperty | JvAppletEditor
JvBehaviorLabelProperty | JvBehaviorLabelEditor
JvChNtfyProperty | JvChangeNotifyEditor
JvTimLstEd | JvTimerListForm
JvTipOfDayProp | JvTipOfDayEditor
JvStrLEdit | JvStringsForm
JvSelDSFrm | JvSelectDataSetForm
JvPresrDsn | JvFormPropertiesForm
JvPluginParams | JvPluginParamsForm
JvPictEdit | JvPictureEditForm
JvPgMngrEd | JvPageManagerForm
JvOutEdit | JvLookoutEditor
JvOLBEditor | JvOutlookBarForm
JvMinMaxEd | JvMinMaxForm
JvJVCLAboutProperty | JvJVCLAboutEditor
JvImagPrvw | JvImagePreviewForm
JvID3v2Define | JvID3v2DefineForm
JvIcoLEdit | JvIconListForm
JvHTHintEditor | JvHTHintForm
JvGradEdit | JvGradientCaptionForm
JvDirFrm | JvDirectoryListForm
JvSbEdit | JvSpeedbarForm
JvTimeLineEdit | JvTimeLineEditor
JvCheckItm | JvCheckedItemsForm
JvaDsgn | JvDesignerUtils
JvDateTimeDlg | JvDateTimeForm
JvCsvDataDsgn | JvCsvDataEditor
JvCsvDataDefStrDsgn | JvCsvDataForm
JvErrProvider | JvErrorIndicator
JvRadioControl | JvDialButton

##### Deprecated Components

> TJvControlPanelButton, TJvStartMenuButton, TJvFavoritesButton, TJvRecentMenuButton

##### Changed Components

> TJvComputerInfo has been changed from TComponent to TObject. This change was done to promote safety since there was a risk that the streaming of published properties could modify important registry values on the end-users computer. To continue using TJvComputerInfo, open the form where it is located and click the "Ignore All" button when Delphi/BCB reports that TJvComputerInfo cannot be found. Add a private variable of type TJvComputerInfo (with the same name as the former TJvComputerInfo component) to the form and create the class dynamically. You should now be able to use the class without any adverse side-effects. For more details, see the comments at the top of JvComputerInfo.pas.

#### Naming convention changed

To keep JVCL consistent, we have adopted a new naming standard. The naming standard in JVCL affects both classes, types and unit names. The following section explains the new naming convention enforced in JVCL:

General

> - All files have a "Jv" prefix (capital "J", lower case "v") and we use "Camel Casing" for the file name (JvLikeThisForExample.pas).
> - All files have an extension in all lower case letters.
> - All units are named using the full name of the contained component/control without the leading "T". If the unit contains several classes/components, it is either named after the component that will be installed, the most "significant" component or uses a name that describes the components in the unit as well as possible. For example, a unit with several database components could be named "JvDBControls.pas" whereas a unit containing a TJvEditor control would be named "JvEditor.pas".
> - All image file names are in ALL UPPER CASE (TJVALARM.BMP)
> - All include file names are in ALL LOWER CASE (jvcl.inc)

Using the word "Form" in filenames

> All forms (units with DFM's) are suffixed with the word "Form" regardless of whether they contain a dialog or a form (i.e JvDualListForm.pas). The word "Form" can also be used as a prefix if the component in the unit is acting upon a form without being one itself (i.e JvFormMagnet.pas)

Using the word "Dialog" in filenames

> The word "Dialog" in a unit name signifies that the unit contains a component that has no UI at designtime but shows a form or dialog at run time (i.e JvObjectPickerDialog.pas). At the moment, "Dlg" and "Dlgs" are accepted but their use is discouraged.

Using the words "Const" and "Consts" in filenames

> The words "Const" and "Consts" are only used in units that contains just type, resourcestring and const declarations and no code (i.e JvConsts.pas).

Using the words "Util" and "Utils" in filenames

> The word "Util" and "Utils" are only used in units that contains support routines and classes of more general use (i.e JvJVCLUtils.pas). Classes in util type units should never be installable.

Design time editors

> Units containing designtime editors should have the same base name as the component they are primarily used to edit and an "Editor" or "Editors" suffix, i.e a property editor unit for the TJvBehaviorLabel should be called either "JvBehaviorLabelEditor" or "JvBehaviorLabelEditors".

> The base name for the unit is controlled by the name of the component the editor(s) were meant for: if all editors are for the same component, we use the same rule as for a single editor (the plural form), if the unit contains generic editors, we name the unit either according to the editors "family" ("JvDBEditors" contains design editors for DB related components) or according to it's general data type (i.e "JvDateEditors" contains editors used to edit date related properties).

> It doesn't matter (name wise) if a unit contains property, component or any other types of editor. They are all named the same way. If a design editor is implemented in the same unit as a form, the unit is named with a "Form" suffix (see rule above for using the word "Form" in filenames). The reasoning behind this is simple: if a split of the unit is to be done in the future (which is likely), it is the design editor that will be moved to a new unit, not the form. The new unit for the editor will then get an appropriate name with a "Editor" suffix but the name of the form will not change.

> Adding design editors to form units is discouraged. We try to keep editors in their own unit, preferably one editor per unit. Editor units should not contain their own Register procedure. The Register procedure should only be present in specific "Reg" files for a package (see below). This minimizes confusion and clutter and maximizes reuse, loose coupling and simplifies maintenance and future restructuring.

Registration units

> Each design package have it's own registration unit with a Register procedure. The unit is named with the same base name as the package but with a "Reg" suffix (i.e the reg file for the "JvCore" design package is named "JvCoreReg.pas"). The reg file only contains registrations for the components and design editors. Design editors and other support code is not added to the reg file unless absolutely necessary.

> A matching dcr file is also included in the \resources folder. The dcr file always have the same base name as the reg file but with a dcr file extension (i.e the palette icons for components registered in JvCoreReg.pas is in \resources\JvCoreReg.dcr).

Palette images color coding

> All component icons have a common background and an upper case yellow "J" in a rectangle in the bottom right corner of the image. The background color of the rectangle identifies the type of component the icon represent. Currently, we use the following color codes:

> Blue - Visual components

> Green - Non-visual components

> Purple - Database components (visual and non-visual)

> Maroon - data provider components (implements one or more of the IJvDataProvider interfaces)

> Navy - data consumers (data provider aware components)

## Getting involved in JVCL development

If you want to help out making JVCL better or bigger or just plain cooler, there are several ways in which you can help out. Here are some of the things we need your help on:

- Donate components and other source code
- Donate time writing help
- Donate time writing demos
- Donate time fixing bugs

#### Donate components and other source code

JVCL accepts donations from developers as long as the components fulfill the requirements set up by the JEDI and JVCL teams. To read more about these requirements, visit the page http://jvcl.delphi-jedi.org/Contributing.htm

#### Donate time writing help

You can also donate your time by writing help for the components already in JVCL. We currently use Doc-o-Matic to create the finished help files but the actual help sources are plain text files in a simple to understand format. We can provide you with auto-generated templates with all classes, properties, types etc already inserted. The "only" thing left to do is fill in the actual help text for the help items. If you are interested in writing help, contact us.

####

#### Donate time writing demos

One of the best ways of getting to know a new component is to see the source code of a demo using it and although we have a lot of demos in JVCL, we still need more and some of the existing demos needs to be "beefed up". Many developers create test apps to try out a new component before putting it to use in their real projects so if you have such a demo or is interested in making more full blown demos for JVCL, contact us.

####

#### Donate time fixing bugs

If you want to help fix bugs in JVCL, go to Mantis and check the bug reports there. You can post replies as well as fixes directly in the bug report. One of the JVCL developers will pick up the report/fix and update the CVS repository if the fix is satisfactory. If you report and fix a lot of bugs, you might even get developer access to CVS so you can update the JVCL files directly.

###

## Getting in touch with JVCL developers and other users

You can get in touch with the JVCL team and/or other JVCL users in one of the following manners:

- Homepage. Our homepage is located at https://github.com/project-jedi/jvcl

- Newsgroups. You can access the JVCL newsgroups at news://news.delphi-jedi.org/jedi.jvcl (preferred). Another way to access the newsgroups is to use the web gateway http://newsportal.delphi-jedi.org. Thanks to Marco Cantú (author of the "Mastering Delphi" books), you can also access the newsgroups from the Web at http://delphi.newswhat.com/geoxml/forumlistgroups?area=JEDI.

- Mail lists. There are still some mail lists on Yahoo to discuss JVCL but these are gradually being closed down, so please do not use these. If you can't access the newsgroups, you can post messages to the mail lists on sourceforge. Go to http://sf.net/projects/jvcl and click the "Lists" link to get to the soureforge mail lists (deprecated).
- Bug reporting. To report bugs, suggest improvement or new features or donate a component, go to Mantis (our on-line bug tracker) and post/reply to the reports there. You'll find Mantis at http://issuetracker.delphi-jedi.org. Please make sure your problem hasn't already been reported and fixed before posting a new bug report!