Difference between revisions of "JVCL Components"

From Free Pascal wiki
Jump to navigationJump to search
(→‎JvDB: Some more details on TJvDBLookupList and TJvDBLookupCombo)
 
(35 intermediate revisions by the same user not shown)
Line 14: Line 14:
  
 
=== JvStdCtrls ===
 
=== JvStdCtrls ===
 +
Depends on package ''JvCore''. <br />
 
Enhanced standard controls  
 
Enhanced standard controls  
 
* '''TJvCheckbox''': Has a property <code>LinkedControls</code>. Linked controls can be enabled/disabled according to the <code>Checked</code> state of the Checkbox.
 
* '''TJvCheckbox''': Has a property <code>LinkedControls</code>. Linked controls can be enabled/disabled according to the <code>Checked</code> state of the Checkbox.
 +
* '''TJvPanel''': an extended panel with hot-tracking effects and automatic placement of child components (similar to LCL's <code>ChildSizing</code> property). Can be dragged and resize at runtime. See example project ''JvPanelDemo''.
 
* '''JvCalcEdit''': a numeric edit control which opens a calculator dialog.
 
* '''JvCalcEdit''': a numeric edit control which opens a calculator dialog.
  
 
=== JvCtrls ===
 
=== JvCtrls ===
 +
Depends on packages ''JvCore'' and ''JvStdCtrls''. <br />
 
Visual controls
 
Visual controls
* '''TJvRollOut''': expandable panel with headerline.
+
* '''TJvBehaviorLabel''': a label with special display effects: Blinking, bouncing, scrolling, typing, appearing, "special", "code breaker". See demo ''examples/JvBehaviorLabel''.
* '''TJvMovableBevel''': a bevel which can be dragged and resized at runtime
+
* [[File:tjvmovablebevel.png]] '''TJvMovableBevel''': a bevel which can be dragged and resized at runtime
* '''TJvMovablePanel''': the same, but now for a panel. Note that this component does not belong to JVCL, it is a simple adaption of TJvMovableBevel to the panel case.
+
* [[File:tjvmovablepanel.png]] '''TJvMovablePanel''': the same, but now for a panel. Note that this component does not belong to JVCL, it is a simple adaption of TJvMovableBevel to the panel case.
* '''TJvRuler''': a ruler to indicate distances in centimeters, inches or pixels
+
* [[File:tjvruler.png]] '''TJvRuler''': a ruler to indicate distances in centimeters, inches or pixels
* '''TJvGroupHeader''': header with attached bevelled line.
+
* [[File:tjvgroupheader.png]] '''TJvGroupHeader''': header with attached bevelled line.
* '''TJvHtControls''' and related: a set of controls which can display HTML text
+
* [[File:tjvrollout.png]] '''TJvRollOut''': expandable panel with headerline.
 +
* [[File:tjvhint.png]] [[File:tjvhtlabel.png]] [[File:tjvhtlistbox.png]] [[File:tjvhtcombobox.png]] '''TJvHtLabel''', '''TJvHTCombobox''', '''TJvHTListbox''' and '''TJvHint''': a set of controls which can display HTML text
 
[[File:JvHTCcontrols.png]]
 
[[File:JvHTCcontrols.png]]
 +
* '''TJvComboListBox''': a listbox which can display a combobox overlaying the selected listbox item. Assign a TPopupMenu to the DropdownMenu property and it will be shown when the combo button is clicked. You can also handle the OnDropDown event for custom handling when the button is clicked, or example, displaying a drop down form. These features are demonstrated in the ''JvComboListBox'' example project.
 +
* '''TJvOfficeColorPanel''': a panel for color selection designed like the one used by Office 97.
 +
[[File:TJvOfficeColorPanel.png]]
 +
* '''TJvLookupAutoComplete''': adds autocompletion of TEdit by ListBox or StringList items. (In the original JVCL, this component is in the Core package.)
  
 
=== JvCustom ===
 
=== JvCustom ===
 +
Depends on package ''JvCore'' <br />
 
Custom components
 
Custom components
* '''TJvValidateEdit''': General purpose edit control for text and numbers (integer, float, currency). MaxValue, MinValue, HasMaxValue, HasMinValue - Value is corrected when Edit loses focus. See demo in ''JvValidateEdit''.
+
* [[File:tjvvalidateedit.png]] '''TJvValidateEdit''': General purpose edit control for text and numbers (integer, float, currency). MaxValue, MinValue, HasMaxValue, HasMinValue - Value is corrected when Edit loses focus. See demo in ''JvValidateEdit''.
* '''TJvTimeLine''': a one-dimensional calendar ("time-line") which can display various events and tasks. See demo ''JvTimeLine''.
+
* [[File:tjvtimeline.png]] '''TJvTimeLine''': a one-dimensional calendar ("time-line") which can display various events and tasks. See demo ''JvTimeLine''.
* '''TJvTMTimeLine''': another timeline component. See demo ''JvTMTimeLine''.
+
* [[File:tjvtmtimeline.png]] '''TJvTMTimeLine''': another timeline component. See demo ''JvTMTimeLine''.
* '''TJvThumbView''': displays a list of images as thumbnails
+
* [[File:tjvgammapanel.png]] '''TJvGammaPanel''': advanced color selection tool for foreground and background colors. See demo ''JvGammaPanel''.
* '''TJvOutlookBar''': an accordeon-like bar of containers for other controls as used by Outlook 97.
+
* [[File:tjvthumbview.png]] '''TJvThumbView''': displays a list of images as thumbnails
* '''TJvImageViewer''': displays a list of images as thumbnails, similar to TJvThumbView. See ''JvItemViewer'' demo.
+
* [[File:tjvoutlookbar.png]] '''TJvOutlookBar''': an accordeon-like bar of containers for other controls as used by Outlook 97.
* '''TJvImagesListViewer''': dispays all images of a TImageList. See ''JvItemViewer'' demo.
+
* [[File:tjvimagesviewer.png]] '''TJvImagesViewer''': displays a list of images as thumbnails, similar to TJvThumbView. See ''JvItemViewer'' demo.
* '''TJvOwnerDrawViewer''': presents arbitrary information in a grid-like view. See ''JvItemViewer'' demo.
+
* [[File:tjvimagelistviewer.png]] '''TJvImageListViewer''': dispays all images of a TImageList. See ''JvItemViewer'' demo.
 +
* [[File:tjvownerdrawviewer_palette.png]] '''TJvOwnerDrawViewer''': presents arbitrary information in a grid-like view. See ''JvItemViewer'' demo.
 
[[file:tjvownerdrawviewer.png]]
 
[[file:tjvownerdrawviewer.png]]
 +
* '''TJvChart''': <s>component for drawing time-series charts. Some bugs... See ''JvChartDemo'' project.</s> Removed: Incomplete, too many bugs.
  
 
=== JvCmp ===
 
=== JvCmp ===
 +
Depends on package ''JvCore''.<br />
 
Non-visual components
 
Non-visual components
 
* '''TJvStrHolder''', '''TJvMultiStringHolder''': a wrapper component making it easier to work with TStrings and TStringList at design time. Using TStrHolder component you can set TStrings properties and event handlers in form designer and hold a number of strings in your forms.
 
* '''TJvStrHolder''', '''TJvMultiStringHolder''': a wrapper component making it easier to work with TStrings and TStringList at design time. Using TStrHolder component you can set TStrings properties and event handlers in form designer and hold a number of strings in your forms.
Line 48: Line 60:
  
 
=== JvDB ===
 
=== JvDB ===
 +
Depends on packages ''JvCore'', ''JvStdCtrls'', and ''JvCtrls''<br />
 
Data-aware controls
 
Data-aware controls
 
* '''TJvSearchEdit''': a TEdit with incremental search capabilities within a field of a dataset.
 
* '''TJvSearchEdit''': a TEdit with incremental search capabilities within a field of a dataset.
Line 54: Line 67:
 
** can display pictures (OnGetImage/OnGetImageIndex events)
 
** can display pictures (OnGetImage/OnGetImageIndex events)
 
** configurable empty value (DisplayEmpty,EmptyItemColor,EmptyStrIsNull,EmptyValue)  
 
** configurable empty value (DisplayEmpty,EmptyItemColor,EmptyStrIsNull,EmptyValue)  
* '''TJvDBTreeView''': a treeview constructed from database records. Link the unique ID field to "MasterField", the ID field of the parent node to "DetailField", and the field with the node text to "ItemField". Optionally, the field "IconField" provides the image index for the ImageList.
+
* '''TJvDBTreeView''': a treeview constructed from database records. Link the unique ID field to "MasterField", the ID field of the parent node to "DetailField", and the field with the node text to "ItemField". Optionally, the field "IconField" provides the image index for the ImageList. "StartMasterValue" is the beginning level to start building the TreeView, 0 = start from the root itens, 1 = start from the second level, and so on. 
 
* '''TJvDBCalcEdit''': a numeric edit box which opens a calculator dialog.
 
* '''TJvDBCalcEdit''': a numeric edit box which opens a calculator dialog.
 
{{Note|The packages ''JvStdCtrlsLazR'' and ''JvCtrlsLazR'' must have been compiled before this package can be installed.}}
 
{{Note|The packages ''JvStdCtrlsLazR'' and ''JvCtrlsLazR'' must have been compiled before this package can be installed.}}
 +
 +
=== JvAppFrm ===
 +
Depends on package ''JvCore''<br />
 +
Components for applications and forms
 +
*'''JvAppAnimatedIcon''' and '''JvFormAnimatedIcon''': display an animated icon (created from an imagelist) in the taskbar and in the form's title bar, respectively.
 +
*'''JvAnimTitle''': provides an animated form title
 +
*'''JvFormWallpaper''': tiles the background of a form with an image.
 +
 +
=== JvHMI ===
 +
Depends on package ''JVCore''. <br />
 +
The packages JvHDMILazR (run time) and JvHDMILazD (design time) provide some components for designing a "human-machine-interface" (HMI).
 +
* '''JvLED''': an LED indicator. See demo ''examples/JvLED''.
 +
* '''JvDialButton''': a rotatory knob. See demo ''examples/JvDialButton''.
 +
 +
=== JvJans ===
 +
Depends on package ''JvCore''. <br />
 +
Named after the original author, Jan Verhoeven, who donated these components to the JEDI project. The following components have been ported:
 +
* [[JvSIM_components|'''TJvSIM components''']]: a set of components for simulation of digital and analog electronics.
 +
* [[File:tjvjanled.png]] '''JvJanLED''': an LED indicator component (not contained in original JVCL, ported from Jan Verhoeven's own repository).
 +
* [[File:tjvjantoggle.png]] '''JvJanToggle''': a toggle button with an on and off area (not contained in original JVCL, ported from Jan Verhoeven's own repository).
 +
* [[File:tjvmarkupviewer.png]] '''JvMarkupViewer''' and [[File:tjvmarkuplabel.png]] '''JvMarkupLabel''': display simple HTML-formatted text (font-related tags only). Similar to JvHTControls.
 +
* [[File:tjvgridfilter.png]] '''TvGridFilter''': a component for filtering rows in a column-oriented stringgrid. Call <tt>Filter(condition)</tt> to hide all rows meeting the specified condition string, e.g. <code>[Business]="Music"</code> removes all rows in which the strings in the column titled <code>Business</code> are equal to <code>Music</code>. Allowed operators are <code>=</code>, <code>&lt;&gt;</code>, <code>&lt;</code>, <code>&gt;</code>, or <code>like</code>. See demo in folder ''JvGridFilterDemo''.
 +
* [[File:tjvyeargrid.png]] '''JvYearGrid''': a year-calendar
 +
[[File:TJvYearGrid.png]]
 +
 +
=== JvMM ===
 +
Depends on package ''JvCore''. <br />
 +
The original JVCL package for Delphi contains a set of multimedia components, image and some general-purpose components.
 +
* [[File:tjvid3v1.png]] '''JvID3v1''': a non-visual component for displaying and editing of ID3v1 tags of mp3 files. See demo ''examples/JvID3v1''.
 +
* [[File:tjvid3v2.png]] '''JvID3v2''': a non-visual component for displaying and editing of ID3v2 tags of mp3 files. See demo ''examples/JvID3v2''.
 +
* [[File:tjvanimatedimage.png]] '''JvAnimatedImage''': animates a series of images take from a glyph containing all images in a horizontal or vertical stripe.
 +
* [[File:tjvbmpanimator.png]] '''JvBmpAnimator''': animates a series of images taken from a TImagelist. Unlike suggested by its name, it works with other image types as well in Lazarus. See demo ''examples/JvBmpAnimator''. Similar to JvAnimatedImage.
 +
* [[File:tjvimagetransform.png]] '''JvImageTransform''': image transition effects like in a simple slide show. See demo ''examples/JvImageTransform''.
 +
* [[File:tjvspecialimage.png]] '''JvSpecialImage''': an advanced image component with simple built-in image manipulation capabilities (flip, mirror, invert, fade-in, fade-out, brightness). Note that the Brightness property has been modified from the Delphi version to cover a more convenient scale from -100 to 100 (instead of 0 to 200). See demo ''examples/JvSpecialImage''.
 +
* [[File:tjvspecialprogress.png]] '''JvSpecialProgress''': an advanced progress bar with gradient and text display. See demo ''examples/JvSpecialProgress''.
 +
* [[File:tjvgradient.png]] '''JvGradient''': draws several kinds of gradients (horizontal, vertical, elliptic, pyramidic).
 +
* [[File:tjvgradientheaderpanel.png]] '''JvGradientHeaderPanel''': a header bar with a gradient background (drawn by JvGradient).
 +
* [[File:tjvfullcolorlabel.png]] '''JvFullColorLabel''': a label with attached color sample
 +
* [[File:tjvfullcolordialog.png]] '''JvFullColorDialog''' and [[File:tjvfullcolorcircledialog.png]] '''JvFullColorCircleDialog''': dialogs for color selection based on several color models. Use the [[File:tjvfullcolortrackbar.png]] '''JvFullColorTrackbar''' for one-dimensional, and a [[File:tjvfullcolorpanel.png]] '''JvFullColorPanel''' and a [[File:tjvfullcolorcircle.png]] '''JvFullColorCircle''' for two-dimensional color selection. There is also a swatch-like [[File:tjvfullcolorgroup.png]] '''JvFullColorGroup'''. See demos ''examples/JvFullColorDialog'' and ''examples/JvFullColorCircleDialog''. Similar to [[mbColorLib]], however, several color models are combined within the same control.
 +
[[file:TJvFullColorDialog.png]]
 +
* [[File:tjvpicclip.png]] '''JvPicClip''': similar to TImageList. Splices a large bitmap to a grid of <code>Cols x Rows</code> smaller images which can be retrieved as <code>Cells[ACol, ARow]</code>
  
 
=== JvPageComps ===
 
=== JvPageComps ===
 +
Depends on packages ''JvCore'' and ''JvStdCtrls'' <br />
 +
* '''TJvTabBar''': a panel of tabs like in a TTabControl. Fully configurable. Drawing is delegated to separate painter components, '''TJvModernTabBarPainter''' (used by default) and '''TJvTabBarXPPainter'''. See demo in folder ''examples/JvTabBar''.
 +
* '''TJvPageList''': a stack of pages like a TNotebook. Designed to cooperate with TJvTabBar and TJvPageListTreeView. See demo in folder ''examples/JvTabBar_PageList''.
 +
* '''TJvNotebookPageList''': a TNotebook descendant designed to cooperate with TJvTabBar. See demo in folder ''examples/JvTabBar_NotebookPages''. Note that this component is not contained in the original Delphi JVCL collection.
 
* '''TJvNavigationPane''': a navigation panel similar to MS Outlook. See demo in the folder ''examples/JvNavigationPane'' of the Lazarus JVCL installation.
 
* '''TJvNavigationPane''': a navigation panel similar to MS Outlook. See demo in the folder ''examples/JvNavigationPane'' of the Lazarus JVCL installation.
 
[[File:JvNavigationPane demo.png]]
 
[[File:JvNavigationPane demo.png]]
 +
 +
=== JvPascalInterpreter ===
 +
Scripting engine for Pascal.
 +
Depends on package ''JvCore''.
 +
 +
* '''TJvInterpreterProgram''': Non-visual component interpreting Pascal code. Add code to the <tt>Pas</tt> Strings, execute if by the <tt>Run</tt> method and get the result from the <tt>VResult</tt> variant. See the tutorials in folder ''example/JvInterpreterDemos''. There is also a (German) tutorial at [https://wiki.delphigl.com/index.php/Tutorial_Scripting_mit_JvInterpreterProgram].
 +
 +
=== JvRuntimeDesign ===
 +
Depends on package ''JvCore''.
 +
* A runtime '''form designer'''. See demo in folder ''example/JvDesigner'' of the JVCL installation. Note that the designer is not limited to the components shown on the demo's toolbar. Following the instructions in the header of the demo's main unit it is easy to register any other component.
 +
[[File:JvDesignerDemo.png]].
 +
 +
=== JvTimeFramework ===
 +
Depends on package ''JvCore''.
 +
Calendars and schedule planner, similar to [[Turbopower_Visual_PlanIt|TvPlanIt]]. Can compare schedules of several persons.
 +
* '''TJvTFScheduleManager''': administration of data, access to database via events.
 +
* '''TJvTFDays''', '''TJvTFWeeks''' or '''TJvTFMonths''' are day, week or month calendars, respectively, to display appointments.
 +
* '''TJvTFDaysPrinter''': prints the appointments shown by TJvTFDays
 +
* '''TJvTFGlanceTextViewer''': viewing parameters for TJvTFWeeks and TJvTFMonths
 +
See extended demo in ''examples/JvTimeFramework''
 +
 +
[[File:JvTimeFrameworkDemo.png]]
  
 
=== JvValidators ===
 
=== JvValidators ===
 +
Depends on package ''JvCore''. <br />
 
Various validator classes for input validataion. See demo in the folder ''examples/JvValidators'' of the Lazarus JVCL installation
 
Various validator classes for input validataion. See demo in the folder ''examples/JvValidators'' of the Lazarus JVCL installation
  
Line 68: Line 149:
 
* '''TJvErrorIndicator''': Shows error indicators next to edit-fields etc. similar to "missing fields" indicators in web forumlars.  
 
* '''TJvErrorIndicator''': Shows error indicators next to edit-fields etc. similar to "missing fields" indicators in web forumlars.  
 
* '''TJvValidators''': To validate user input. Rightclick on Field editor to define validation rules. Checks are performed when method "Validate" is called.
 
* '''TJvValidators''': To validate user input. Rightclick on Field editor to define validation rules. Checks are performed when method "Validate" is called.
 +
 +
=== JvWizard ===
 +
Depends on package ''JvCore''. <br />
 +
* A multiplage dialog as used, e.g., for installation programs. Use the component editor to add pages with title, subtitle, images etc. at designtime ("welcome page", "interior page"). Buttons to navigate to other pages are automatically added. Additional navigation tools can be provided by adding a <code>TJvWizardRouteMapSteps</code>, <code>TJvWizardRouteMapNodes</code>, or <code>TJvWizardRouteMapList</code> component. See demo ''JvWizard''.
 +
[[File:JvWizardDemo.png]]
  
 
=== JvXPCtrls ===
 
=== JvXPCtrls ===
 +
Depends on package ''JvCore'' and ''JvStdCtrls''. <br />
 
Several controls imitating the look and feel of Windows XP.  
 
Several controls imitating the look and feel of Windows XP.  
 
* '''JvXPButton''' and '''JvXPCheckbox''': a button and a checkbox in XP-style
 
* '''JvXPButton''' and '''JvXPCheckbox''': a button and a checkbox in XP-style
Line 75: Line 162:
 
* '''[[JvXPBar]]''': a container side-bar with collapsable panels. Similar to TJvRollOut-Panel, but with string items instead of controls. Collapsing/Expanding happens smooth and nicely animated.  
 
* '''[[JvXPBar]]''': a container side-bar with collapsable panels. Similar to TJvRollOut-Panel, but with string items instead of controls. Collapsing/Expanding happens smooth and nicely animated.  
 
[[File:JvXPBarDemo.png]]
 
[[File:JvXPBarDemo.png]]
 
=== JvRuntimeDesign ===
 
* A runtime '''form designer'''. See demo in folder ''example/JvDesigner'' of the JVCL installation.
 
[[File:JvDesignerDemo.png ]]
 
 
=== JvHMI ===
 
The packages JvHDMILazR (run time) and JvHDMILazD (design time) provide some components for designing a "human-machine-interface" (HMI):
 
* '''JvLED''': an LED indicator. See demo ''examples/JvLED''.
 
* '''JvDialButton''': a rotatory knob. See demo ''examples/JvDialButton''.
 
 
=== JvJans ===
 
Named after the original author, Jan Verhoeven, who donated these components to the JEDI project. The following components have been ported:
 
* [[JvSIM_components|'''TJvSIM components''']]: a set of components for simulation of digital and analog electronics.
 
* '''JvJanLED''': an LED indicator component (not contained in original JVCL, ported from Jan Verhoeven's own repository).
 
* '''JvJanToggle''': a toggle button with an on and off area (not contained in original JVCL, ported from Jan Verhoeven's own repository).
 
* '''JvMarkupViewer''' and '''JvMarkupLabel''': display simple HTML-formatted text (font-related tags only). Similar to JvHTControls.
 
* '''JvYearGrid''': a year-calendar
 
[[File:TJvYearGrid.png]]
 
 
=== JvMM ===
 
The original JVCL package for Delphi contains a set of multimedia components, image and some general-purpose components.
 
* '''JvID3v1''': a non-visual component for displaying and editing of ID3v1 tags of mp3 files. See demo ''examples/JvID3v1''.
 
* '''JvID3v2''': a non-visual component for displaying and editing of ID3v2 tags of mp3 files. See demo ''examples/JvID3v2''.
 
* '''JvAnimatedImage''': animates a series of images take from a glyph containing all images in a horizontal or vertical stripe.
 
* '''JvBmpAnimator''': animates a series of images taken from a TImagelist. Unlike suggested by its name, it works with other image types as well in Lazarus. See demo ''examples/JvBmpAnimator''. Similar to JvAnimatedImage.
 
* '''JvSpecialProgress''': an advanced progress bar with gradient and text display. See demo ''examples/JvSpecialProgress''.
 
* '''JvGradient''': draws several kinds of gradients (horizontal, vertical, elliptic, pyramidic).
 
* '''JvGradientHeaderPanel''': a header bar with a gradient background (drawn by JvGradient).
 
* '''JvFullColorLabel''': a label with attached color sample
 
* '''JvFullColorDialog''' and '''JvFullColorCircleDialog''': dialogs for color selection based on several color models. Use the '''JvFullColorTrackbar''' for one-dimensional, and a '''JvFullColorPanel''' and a '''JvFullColorCircle''' for two-dimensional color selection. There is also a swatch-like '''JvFullColorList'''. See demos ''examples/JvFullColorDialog'' and ''examples/JvFullColorCircleDialog''. Similar to [[mbColorLib]]
 
[[file:TJvFullColorDialog.png]]
 
<br />
 
 
=== JvAppFrm ===
 
Components for applications and forms
 
*'''JvAppAnimatedIcon''' and '''JvFormAnimatedIcon''': display an animated icon (created from an imagelist) in the taskbar and in the form's title bar, respectively.
 
*'''JvAnimTitle''': provides an animated form title
 
*'''JvFormWallpaper''': tiles the background of a form with an image.
 
<br />
 
  
 
== Download and installation ==
 
== Download and installation ==
Line 120: Line 168:
  
 
=== Installation ===
 
=== Installation ===
If you want to use all ported JVCL components compile all runtime packages (having an appended "R" at the package name) and all designtime packages (having an appended "D"), then install all designtime packages (except for JvCoreLazD, which needs not be installed).
+
* '''Released version''' distributed by the Online Package Manager: check the "jvcllaz" item in the Online Package manager, click the ''"Install"'' button and follow the instructions.
 
+
* '''Development version''' on Lazarus CCR (svn):
If you want to use only a few components find out in which package they are implemented. Always compile the JvCoreLazR and JvCoreLazD packages. Then compile the runtime and designtime package(s) which is/are of interest for you. Finally install the corresponding designtime package(s).
+
** If you want to install '''all JVCL packages''', load the package '''jvcl_all.lpk''' and select "Use" > "Install". In older Lazarus versions, there will be a warning ''"The package jvcl_all does not have any "Register" procedure which typically means it does not provide any IDE addon. Installing it will probably only increase the size of the IDE and may even make it unstable."''. You can ignore this and click on ''"Install it, I like the fat"''.
 
+
** If you want to install '''only a few packages''', you must find out in above summary which other packages are needed. Compile the needed runtime packages (having an appended "R" at the package name). Then "Use" > "Install" the required designtime packages (having an appended "D" as the package name). It is required to rebuild the IDE only after the last package.
The procedure is greatly simplified if you install a release version via the Online Package Manager. Here you only have to check the requested package. OPM will automatically find out which other packages are needed.
 

Latest revision as of 22:02, 30 April 2020

English (en) русский (ru)


About

JVCL is a library of more than 600 Delphi visual and non-visual components (https://github.com/project-jedi/jvcl). Although heavily Windows-centered, some of them have been ported to Lazarus. This page intends to give a summary of the JVCL components available for Lazarus. Some of the info snippets were taken from http://wiki.delphi-jedi.org/wiki/JVCL_Component_Overview.

Packages

Due to the large number of components the original Delphi version is split into a variety of packages. The Lazarus port follows this convention because the user can install only the functionality needed.

For each package, a runtime and designtime version is available. Runtime packages can be identified with an appended R, designtime packages with an appended D. In the requirements for a project always use the runtime package.

JvCore

Provides basic functionality needed by all other packages.

JvStdCtrls

Depends on package JvCore.
Enhanced standard controls

  • TJvCheckbox: Has a property LinkedControls. Linked controls can be enabled/disabled according to the Checked state of the Checkbox.
  • TJvPanel: an extended panel with hot-tracking effects and automatic placement of child components (similar to LCL's ChildSizing property). Can be dragged and resize at runtime. See example project JvPanelDemo.
  • JvCalcEdit: a numeric edit control which opens a calculator dialog.

JvCtrls

Depends on packages JvCore and JvStdCtrls.
Visual controls

  • TJvBehaviorLabel: a label with special display effects: Blinking, bouncing, scrolling, typing, appearing, "special", "code breaker". See demo examples/JvBehaviorLabel.
  • tjvmovablebevel.png TJvMovableBevel: a bevel which can be dragged and resized at runtime
  • tjvmovablepanel.png TJvMovablePanel: the same, but now for a panel. Note that this component does not belong to JVCL, it is a simple adaption of TJvMovableBevel to the panel case.
  • tjvruler.png TJvRuler: a ruler to indicate distances in centimeters, inches or pixels
  • tjvgroupheader.png TJvGroupHeader: header with attached bevelled line.
  • tjvrollout.png TJvRollOut: expandable panel with headerline.
  • tjvhint.png tjvhtlabel.png tjvhtlistbox.png tjvhtcombobox.png TJvHtLabel, TJvHTCombobox, TJvHTListbox and TJvHint: a set of controls which can display HTML text

JvHTCcontrols.png

  • TJvComboListBox: a listbox which can display a combobox overlaying the selected listbox item. Assign a TPopupMenu to the DropdownMenu property and it will be shown when the combo button is clicked. You can also handle the OnDropDown event for custom handling when the button is clicked, or example, displaying a drop down form. These features are demonstrated in the JvComboListBox example project.
  • TJvOfficeColorPanel: a panel for color selection designed like the one used by Office 97.

TJvOfficeColorPanel.png

  • TJvLookupAutoComplete: adds autocompletion of TEdit by ListBox or StringList items. (In the original JVCL, this component is in the Core package.)

JvCustom

Depends on package JvCore
Custom components

  • tjvvalidateedit.png TJvValidateEdit: General purpose edit control for text and numbers (integer, float, currency). MaxValue, MinValue, HasMaxValue, HasMinValue - Value is corrected when Edit loses focus. See demo in JvValidateEdit.
  • tjvtimeline.png TJvTimeLine: a one-dimensional calendar ("time-line") which can display various events and tasks. See demo JvTimeLine.
  • tjvtmtimeline.png TJvTMTimeLine: another timeline component. See demo JvTMTimeLine.
  • tjvgammapanel.png TJvGammaPanel: advanced color selection tool for foreground and background colors. See demo JvGammaPanel.
  • tjvthumbview.png TJvThumbView: displays a list of images as thumbnails
  • tjvoutlookbar.png TJvOutlookBar: an accordeon-like bar of containers for other controls as used by Outlook 97.
  • tjvimagesviewer.png TJvImagesViewer: displays a list of images as thumbnails, similar to TJvThumbView. See JvItemViewer demo.
  • tjvimagelistviewer.png TJvImageListViewer: dispays all images of a TImageList. See JvItemViewer demo.
  • tjvownerdrawviewer palette.png TJvOwnerDrawViewer: presents arbitrary information in a grid-like view. See JvItemViewer demo.

tjvownerdrawviewer.png

  • TJvChart: component for drawing time-series charts. Some bugs... See JvChartDemo project. Removed: Incomplete, too many bugs.

JvCmp

Depends on package JvCore.
Non-visual components

  • TJvStrHolder, TJvMultiStringHolder: a wrapper component making it easier to work with TStrings and TStringList at design time. Using TStrHolder component you can set TStrings properties and event handlers in form designer and hold a number of strings in your forms.
  • TJvSpellChecker: a spell-checker class with sample dictionaries for English and Dutch. See demo in folder examples/JvSpellChecker of the JVCL installation.

JvSpellChecker.png

  • TJvProfiler: --- to be written ---

JvDB

Depends on packages JvCore, JvStdCtrls, and JvCtrls
Data-aware controls

  • TJvSearchEdit: a TEdit with incremental search capabilities within a field of a dataset.
  • TJvDBLookupList and TJbDBLookupCombo: lookup controls with additional features:
    • can display more than one column (the LookupDisplay property can contain a list of columns separated by a semicolon, the column width is calculated based on Field.DisplayWidth)
    • can display pictures (OnGetImage/OnGetImageIndex events)
    • configurable empty value (DisplayEmpty,EmptyItemColor,EmptyStrIsNull,EmptyValue)
  • TJvDBTreeView: a treeview constructed from database records. Link the unique ID field to "MasterField", the ID field of the parent node to "DetailField", and the field with the node text to "ItemField". Optionally, the field "IconField" provides the image index for the ImageList. "StartMasterValue" is the beginning level to start building the TreeView, 0 = start from the root itens, 1 = start from the second level, and so on.
  • TJvDBCalcEdit: a numeric edit box which opens a calculator dialog.
Light bulb  Note: The packages JvStdCtrlsLazR and JvCtrlsLazR must have been compiled before this package can be installed.

JvAppFrm

Depends on package JvCore
Components for applications and forms

  • JvAppAnimatedIcon and JvFormAnimatedIcon: display an animated icon (created from an imagelist) in the taskbar and in the form's title bar, respectively.
  • JvAnimTitle: provides an animated form title
  • JvFormWallpaper: tiles the background of a form with an image.

JvHMI

Depends on package JVCore.
The packages JvHDMILazR (run time) and JvHDMILazD (design time) provide some components for designing a "human-machine-interface" (HMI).

  • JvLED: an LED indicator. See demo examples/JvLED.
  • JvDialButton: a rotatory knob. See demo examples/JvDialButton.

JvJans

Depends on package JvCore.
Named after the original author, Jan Verhoeven, who donated these components to the JEDI project. The following components have been ported:

  • TJvSIM components: a set of components for simulation of digital and analog electronics.
  • tjvjanled.png JvJanLED: an LED indicator component (not contained in original JVCL, ported from Jan Verhoeven's own repository).
  • tjvjantoggle.png JvJanToggle: a toggle button with an on and off area (not contained in original JVCL, ported from Jan Verhoeven's own repository).
  • tjvmarkupviewer.png JvMarkupViewer and tjvmarkuplabel.png JvMarkupLabel: display simple HTML-formatted text (font-related tags only). Similar to JvHTControls.
  • tjvgridfilter.png TvGridFilter: a component for filtering rows in a column-oriented stringgrid. Call Filter(condition) to hide all rows meeting the specified condition string, e.g. [Business]="Music" removes all rows in which the strings in the column titled Business are equal to Music. Allowed operators are =, <>, <, >, or like. See demo in folder JvGridFilterDemo.
  • tjvyeargrid.png JvYearGrid: a year-calendar

TJvYearGrid.png

JvMM

Depends on package JvCore.
The original JVCL package for Delphi contains a set of multimedia components, image and some general-purpose components.

  • tjvid3v1.png JvID3v1: a non-visual component for displaying and editing of ID3v1 tags of mp3 files. See demo examples/JvID3v1.
  • tjvid3v2.png JvID3v2: a non-visual component for displaying and editing of ID3v2 tags of mp3 files. See demo examples/JvID3v2.
  • tjvanimatedimage.png JvAnimatedImage: animates a series of images take from a glyph containing all images in a horizontal or vertical stripe.
  • tjvbmpanimator.png JvBmpAnimator: animates a series of images taken from a TImagelist. Unlike suggested by its name, it works with other image types as well in Lazarus. See demo examples/JvBmpAnimator. Similar to JvAnimatedImage.
  • tjvimagetransform.png JvImageTransform: image transition effects like in a simple slide show. See demo examples/JvImageTransform.
  • tjvspecialimage.png JvSpecialImage: an advanced image component with simple built-in image manipulation capabilities (flip, mirror, invert, fade-in, fade-out, brightness). Note that the Brightness property has been modified from the Delphi version to cover a more convenient scale from -100 to 100 (instead of 0 to 200). See demo examples/JvSpecialImage.
  • tjvspecialprogress.png JvSpecialProgress: an advanced progress bar with gradient and text display. See demo examples/JvSpecialProgress.
  • tjvgradient.png JvGradient: draws several kinds of gradients (horizontal, vertical, elliptic, pyramidic).
  • tjvgradientheaderpanel.png JvGradientHeaderPanel: a header bar with a gradient background (drawn by JvGradient).
  • tjvfullcolorlabel.png JvFullColorLabel: a label with attached color sample
  • tjvfullcolordialog.png JvFullColorDialog and tjvfullcolorcircledialog.png JvFullColorCircleDialog: dialogs for color selection based on several color models. Use the tjvfullcolortrackbar.png JvFullColorTrackbar for one-dimensional, and a tjvfullcolorpanel.png JvFullColorPanel and a tjvfullcolorcircle.png JvFullColorCircle for two-dimensional color selection. There is also a swatch-like tjvfullcolorgroup.png JvFullColorGroup. See demos examples/JvFullColorDialog and examples/JvFullColorCircleDialog. Similar to mbColorLib, however, several color models are combined within the same control.

TJvFullColorDialog.png

  • tjvpicclip.png JvPicClip: similar to TImageList. Splices a large bitmap to a grid of Cols x Rows smaller images which can be retrieved as Cells[ACol, ARow]

JvPageComps

Depends on packages JvCore and JvStdCtrls

  • TJvTabBar: a panel of tabs like in a TTabControl. Fully configurable. Drawing is delegated to separate painter components, TJvModernTabBarPainter (used by default) and TJvTabBarXPPainter. See demo in folder examples/JvTabBar.
  • TJvPageList: a stack of pages like a TNotebook. Designed to cooperate with TJvTabBar and TJvPageListTreeView. See demo in folder examples/JvTabBar_PageList.
  • TJvNotebookPageList: a TNotebook descendant designed to cooperate with TJvTabBar. See demo in folder examples/JvTabBar_NotebookPages. Note that this component is not contained in the original Delphi JVCL collection.
  • TJvNavigationPane: a navigation panel similar to MS Outlook. See demo in the folder examples/JvNavigationPane of the Lazarus JVCL installation.

JvNavigationPane demo.png

JvPascalInterpreter

Scripting engine for Pascal. Depends on package JvCore.

  • TJvInterpreterProgram: Non-visual component interpreting Pascal code. Add code to the Pas Strings, execute if by the Run method and get the result from the VResult variant. See the tutorials in folder example/JvInterpreterDemos. There is also a (German) tutorial at [1].

JvRuntimeDesign

Depends on package JvCore.

  • A runtime form designer. See demo in folder example/JvDesigner of the JVCL installation. Note that the designer is not limited to the components shown on the demo's toolbar. Following the instructions in the header of the demo's main unit it is easy to register any other component.

JvDesignerDemo.png.

JvTimeFramework

Depends on package JvCore. Calendars and schedule planner, similar to TvPlanIt. Can compare schedules of several persons.

  • TJvTFScheduleManager: administration of data, access to database via events.
  • TJvTFDays, TJvTFWeeks or TJvTFMonths are day, week or month calendars, respectively, to display appointments.
  • TJvTFDaysPrinter: prints the appointments shown by TJvTFDays
  • TJvTFGlanceTextViewer: viewing parameters for TJvTFWeeks and TJvTFMonths

See extended demo in examples/JvTimeFramework

JvTimeFrameworkDemo.png

JvValidators

Depends on package JvCore.
Various validator classes for input validataion. See demo in the folder examples/JvValidators of the Lazarus JVCL installation

JvValidationDemo.png

  • TJvErrorIndicator: Shows error indicators next to edit-fields etc. similar to "missing fields" indicators in web forumlars.
  • TJvValidators: To validate user input. Rightclick on Field editor to define validation rules. Checks are performed when method "Validate" is called.

JvWizard

Depends on package JvCore.

  • A multiplage dialog as used, e.g., for installation programs. Use the component editor to add pages with title, subtitle, images etc. at designtime ("welcome page", "interior page"). Buttons to navigate to other pages are automatically added. Additional navigation tools can be provided by adding a TJvWizardRouteMapSteps, TJvWizardRouteMapNodes, or TJvWizardRouteMapList component. See demo JvWizard.

JvWizardDemo.png

JvXPCtrls

Depends on package JvCore and JvStdCtrls.
Several controls imitating the look and feel of Windows XP.

  • JvXPButton and JvXPCheckbox: a button and a checkbox in XP-style
  • TJvXPProgressBar: Draws a progressbar in XP-style. The color of the the background and of the blocks is configurable. Doesn't support Marquee-style.
  • JvXPBar: a container side-bar with collapsable panels. Similar to TJvRollOut-Panel, but with string items instead of controls. Collapsing/Expanding happens smooth and nicely animated.

JvXPBarDemo.png

Download and installation

Download

The developers version of the Lazarus port is available via svn from https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/jvcllaz/. The current release version can be downloaded from https://sourceforge.net/projects/lazarus-ccr/files/jvcllaz/; it is also offered by the Lazarus Online Package Manager.

Installation

  • Released version distributed by the Online Package Manager: check the "jvcllaz" item in the Online Package manager, click the "Install" button and follow the instructions.
  • Development version on Lazarus CCR (svn):
    • If you want to install all JVCL packages, load the package jvcl_all.lpk and select "Use" > "Install". In older Lazarus versions, there will be a warning "The package jvcl_all does not have any "Register" procedure which typically means it does not provide any IDE addon. Installing it will probably only increase the size of the IDE and may even make it unstable.". You can ignore this and click on "Install it, I like the fat".
    • If you want to install only a few packages, you must find out in above summary which other packages are needed. Compile the needed runtime packages (having an appended "R" at the package name). Then "Use" > "Install" the required designtime packages (having an appended "D" as the package name). It is required to rebuild the IDE only after the last package.