Une collection de composants VCL / LCL pour Delphi 2009 - 11.0 Alexandrie et Lazarus
JPPACK est une petite collection de composants VCL pour les composants Delphi et LCL pour Lazarus et Codetyphon.
Versions de Delphi prises en charge: 2009 , 2010 , XE , XE2 , XE3 , XE4 , XE5 , XE6 , XE7 , XE8 , 10.0 Seattle , 10.1 Berlin , 10.2 Tokyo , 10.3 Rio , 10.4 Sydney , 11.0 Alexandria .
Lazarus : version FPC requise 3.0.4 3.2.0 ou plus récent (testé sur Lazarus 2.0.10 + FPC 3.2.0, Lazarus 2.2.0 + FPC 3.2.2 et Lazarus 2.2.2 + FPC 3.2.2). CodeTyPhon : Testé sur CodeTyphon 7.7 R2202141933 avec FPC 3.3.1 R2202141933

Ces composants ont été créés dans quelques années, ils ont été modifiés à plusieurs reprises, améliorés et étendus avec les fonctions nécessaires à la mise en œuvre de projets spécifiques. Généralement, il y a un petit chaos, mais je pense que tout fonctionne bien (j'espère!).
Je ne suis pas un expert en rédaction de composants VCL et je me suis aidé en analysant les codes source (et en utilisant des fragments) de divers composants de Delphi libres, en particulier les composants Cindy et PNGComponents.
Certaines des fonctions et procédures liées au traitement graphique ont été tirées des composants de Cindy . Les routines liées au gradient ont été presque entièrement tirées de ce package (fichier VCL.cyGraphics.pas ).
L'auteur de la composante Cindy S est Júlio Maurício Antunes Piao. Les sources sont disponibles sur https://sourceforge.net/projects/tcycomponents/ Dans les fichiers source dans lesquels j'utilise des fonctions écrites par Júlio, j'ai ajouté des informations pertinentes avec un lien vers sa page.
Après des batailles longues et féroces avec divers boutons de différents packages de composants pour Delphi (commercial et gratuit), j'en ai finalement trouvé qui affiche correctement les fichiers PNG - TPNGBitBtn et TPNGSpeedButton du package PngComponents . Je n'ai jamais eu de problèmes avec eux, contrairement à beaucoup, beaucoup d'autres. Pour cette raison, dans l'implémentation de mes boutons, j'ai décidé de compter sur le code de ce package.
L'auteur original du package PngComponents est Martijn Saly ( www.thany.org ). Le projet est actuellement maintenu par Uwe Raabe. Des sources sont disponibles sur https://github.com/uweraabe/pngcomponents
Dans le dossier 3e-parti, vous pouvez trouver le fichier zip avec le PNGComponents ver. 1.4.1. Il s'agit de la dernière version des PNGComponents disponibles lors de la rédaction de ce document et cela fonctionne bien avec le JPPACK .
2020.08.31 - La version de GitHub fonctionne bien aussi.
Chaque composant visuel du package JPPACK prend en charge l'ancrage des composants externes à l'aide de la propriété AnchoredControls .
Vous pouvez ancre des composants externes à n'importe quel bord. Lorsque vous modifiez la taille ou la position du composant principal, la position des composants ancrés sera automatiquement mise à jour.

La plupart des composants du package JPPACK ont la propriété TagExt . Ici, vous pouvez stocker une valeur entière ( IntValue ), String ( StrValue ), Float Number ( RealValue ), Pointer ( PointerValue ) et Date ( DateValue ). Les trois premières valeurs sont disponibles à partir de l' inspecteur d'objet et dans le code, les deux derniers - uniquement dans le code.
Valeurs par défaut:
| Propriété | Valeur par défaut |
|---|---|
TagExt.IntValue | 0 |
TagExt.StrValue | '' (chaîne vide) |
TagExt.RealValue | 0 |
TagExt.PointerValue | nil |
TagExt.DateValue | Now |
Un panneau hautement personnalisable. TCustomPanel descendant. Il a été écrit sur la base de l'un des panneaux inclus dans le package Cindy Composants (mais je ne me souviens pas exactement lequel).

Le panneau est divisé en deux parties - supérieur et inférieur. Pour chacun d'eux, vous pouvez définir les couleurs (gradient ou solide) séparément.
Toutes les bordures du panneau sont configurées séparément. Vous pouvez définir différentes couleurs, épaisseur, style, visibilité pour chaque bordure.
Le panneau a un support intégré pour la collection illimitée de légendes. Chaque légende a sa propre Font: TFont , et peut être centrée ou positionnée par rapport aux coins du panel.
De plus, le TJppPanel a une prise en charge intégrée pour la collection illimitée de lignes horizontales, de lignes verticales et de barres horizontales.
Plus d'informations ...
Une version tronquée du TJppPanel . Il n'a pas de collections intégrées de légendes, de lignes verticales, de lignes horizontales et de barres horizontales.
Une version tronquée du TJppBasicPanel . Il n'a DrawRightBorder DrawTopBorder gradient, toutes DrawBottomBorder frontières ont la DrawLeftBorder couleur Appearance Appearance.BorderColor .
Ce panneau est idéal pour créer une disposition de base de l'interface utilisateur.
Panneau pliable hautement personnalisable basé sur le panneau TJvRollOut du package JVCL https://github.com/project-jedi/jvcl/blob/master/jvcl/run/jvrollout.pas
Licence originale: MPL 1.1
Mes modifications: domaine public

Vous pouvez mettre des panneaux les plus alignés sur la ScrollBox pour simuler CategoryPanelGroup de Delphi.
Descendant de TCustomPanel
Panneau standard avec support d'ancrage des composants.
Actuellement uniquement pour Delphi .
TJppPngButton est un bouton TPngBitBtn étendu du package PngComponents .

Le bouton peut être dans l'un des cinq états : normal , chaud , vers le bas (appuyé), focalisé et désactivé . Pour chaque état, vous pouvez définir toute une gamme de paramètres d'affichage: gradient supérieur et inférieur / couleur solide (de la même manière que TJppPanel ), couleur de bordure, style et largeur, paramètres de police (couleur, nom, taille, style).
Si vous souhaitez que le bouton soit affiché dans les couleurs du système, définissez Appearance.DefaultDrawing la propriété.DefaultDrawing sur True (toutes les couleurs personnalisées définies dans l' Appearance.<STATES> seront alors ignorées).
Le nombre de toutes les couleurs pour tous les états de bouton est vraiment important, j'ai donc décidé de faciliter la gestion des couleurs affichées en utilisant des schémas de couleurs prêts à l'emploi (cartes de couleurs).
J'ai créé 36 schémas de couleurs différents pour TJppPngButton . Pour modifier le schéma de couleurs actif, sélectionnez l'un des schémas disponibles dans la propriété ColorMapType dans l' inspecteur d'objets .
Les schémas de couleurs peuvent être modifiés avec le programme TJppPngButton Color Maps Designer , qui est situé dans le référentiel dans le répertoire demos .
Plus d'informations ...
Actuellement uniquement pour Delphi .
Ce bouton est une version légèrement tronquée du TJppPngButton . Il n'a qu'un seul gradient pour chaque état de bouton et ne prend pas en charge les schémas de couleurs.
Actuellement uniquement pour Delphi .
Semblable à TJppBasicPngButton mais avec le soutien de la sous-caption.

Ce bouton est très similaire à TJppBasicPngButton , mais il est basé sur TGraphicControl , il ne prend donc pas l'attention (il n'a pas d'état ciblé ).
Descendant TCustomComboBox .
Propriétés supplémentaires:
AnchoredControlsBoundLabel - Étiquette interne.Flash - Options de clignotement. Pour activer le clignotement, appelez la méthode FlashBackground dans le code.ShowLabel - Afficher / masquer l'étiquette liée.TagExt TCustomComboBoxEx Descendant.
Correction d'un bug de hauteur de l'élément dans les anciennes versions Delphi.

Propriétés supplémentaires:
AnchoredControlsBoundLabel - Étiquette interne.Flash - Options de clignotement. Pour activer le clignotement, appelez la méthode FlashBackground dans le code.ShowLabel - Afficher / masquer l'étiquette liée.TagExtItemIndex publiéActuellement uniquement pour Delphi .
Combobox hautement personnalisable basé sur le TFlatComboBox
https://github.com/jackdp/flatstyle/blob/master/source/tflatcomboboxunit.pas

Un ComboBox hautement personnalisable affichant une liste de couleurs prédéfinies et / ou définies par l'utilisateur.




Le TJppColorComboBox possède 4 composants intégrés: une étiquette et 3 boutons pour modifier, copier et coller la couleur.
Les couleurs peuvent être affichées en trois formats: RVB INT (par exemple 051,102 255), RVB Hex (par exemple # 3366FF) et BGR Hex (par exemple 00FF6633). Si vous avez besoin d'afficher la couleur dans un format différent, vous pouvez le faire dans le gestionnaire d'événements OnGetColorStrValue .
En plus des éléments standard (affichage de la couleur), vous pouvez également ajouter des séparateurs et des éléments ChangeColor .
Chaque couleur sélectionnée par l'utilisateur, mais pas encore dans la liste des couleurs, peut être automatiquement ajoutée à la fin ou au sommet de la liste. Grâce à cela, l'utilisateur de votre application a accès à l' historique des couleurs précédemment sélectionnées.
Plus d'informations ...
Une boîte de liste hautement personnalisable affichant une liste de couleurs prédéfinies et / ou définies par l'utilisateur.


Il est très similaire à TJppColorComboBox , mais il n'a pas de composants intégrés.
TJPPColorswatch est un composant affichant la couleur et sa valeur (code) en deux formats.

Il se compose de trois parties: un rectangle affichant la couleur (à gauche) et deux rectangles avec les codes de la couleur sélectionnée. Chaque pièce peut être masquée, vous pouvez donc, par exemple, afficher uniquement un rectangle avec une couleur ou uniquement le code couleur au format sélectionné.
Formats de couleurs disponibles:
| Format | Exemple |
|---|---|
ctBgr | 128,064,032 |
ctCmyk | 075,050,000,050 |
ctCppHex | 0x00804020 |
ctHslCss | 220,60%,31% |
ctHslWin | 146,144,075 |
ctHtml | #204080 |
ctPascalHex | $00804020 |
ctPascalInt | 8405024 |
ctRgb | 032,064,128 |
ctRgbPercent | 13%,25%,50% |
Si vous souhaitez afficher le code couleur dans un autre format, vous pouvez le faire dans le gestionnaire d'événements OnGetTopColorStrValue (pour le code couleur supérieur) et OnGetBottomColorStrValue (pour le bas).
TJPPColorswatchEx est une version étendue du TJPPColorswatch . Il a une étiquette intégrée ( BoundLabel ) et trois boutons: ButtonChangeColor , ButtonCopyColor et ButtonPasteColor .
BoundLabel est une étiquette standard ( TCustomLabel descendant) et peut être affichée à gauche, à droite, au-dessus ou en dessous du composant. Les boutons sont hérités de la classe TJppBasicSpeedButton , vous pouvez donc définir librement les couleurs pour tous les états de bouton (normal, chaud, en bas, désactivé) et l'icône PNG.
Une barre de progression hautement personnalisable basée sur JVSpecialProgress du package JVCL, mais avec beaucoup de mes modifications. https://github.com/project-jedi/jvcl/blob/master/jvcl/run/jvspecialprogress.pas

Mes modifications:
Apparence
Ici, vous pouvez modifier de nombreux paramètres liés à l'apparence de la couleur de contrôle: arrière-plan et de la barre de progression (solide ou gradient), couleur et taille de bordure, polices (pour l'état normal et handicapé), alignement du texte (haut-gauche, ombre supérieur, haut-droit, gauche, centre ...), préfixe et post-fixe, ombre de texte et plus. Contrairement à la barre de progression standard, TJPPProgressBar vous permet également de définir les couleurs affichées lorsque le composant est désactivé.
ENDRARKER - Un rectangle dessiné à la fin de la barre de progrès.
TextDisplayMode - position, pourcentage, position dans les pixels, légende ou aucun.
Étapes: Middle and Final - Vous pouvez effectuer des corrections de couleurs ici.
ProgressBarVisible - Ici, vous pouvez empêcher la barre de progrès de l'affichage et d'afficher uniquement le texte.
Contraintes ancrées
Vous pouvez épingler un contrôle externe (par exemple TBUTTON, TEDIT) à chaque bord d'un composant.
BoundLabel - étiquette interne
UpdatePositionIfDisabled - Ici, vous pouvez décider de mettre à jour la barre de progression lorsque le composant est désactivé.
Surprogress
Déclenché lorsque la position actuelle change. Vous pouvez effectuer des actions supplémentaires ici.
Tagext
Actuellement uniquement pour Delphi .
Un indice HTML léger pour Delphi (à Lazarus, il compile mais ne fonctionne pas).

Ce composant a été créé en combinant deux unités Pascal:
Tflathintunit.pas du package Flatstyle
https://github.com/jackdp/flatstyle/blob/master/source/tfrathintunit.pas
Licence: GRATUIT (pas d'informations supplémentaires)
Hthint.pas du package jvcl https://github.com/project-jedi/jvcl/blob/master/jvcl/install/jvclinstall/helpers/hthint.pas
Licence: MPL 1.1
Licence pour mes modifications: pas de licence (domaine public)
TJPPHTMLHINT n'est pas un composant HTML complet. Il s'agit d'un composant léger et très simple avec la prise en charge de quelques balises HTML, en plus, avec une syntaxe légèrement inhabituelle.
Tags pris en charge:
B - <b>bold text</b>
I - <i>italic</i>
U - <u>underline</u>
S - <s>strike out</s>
C : Couleur - Couleur du texte, par exemple: <c:clRed>text</cl> , <cl:Red>text</c> , <c:#FF0000>text</c> , <c:255,0,0>RGB color</c>
BG : Couleur - Couleur d'arrière-plan, par exemple. <bg:clYellow>yellow background</bg>
IND : X - Indentation de la position actuelle. eg. <ind:10>
Aind : X - Indentation absolue, par exemple. <aind:20>
FS : X - Taille de la police, par exemple. <fs:12>some text</fs> , <fs:+4>text</fs>
FN : Nom - Nom de la police, par exemple. <fn:Verdana>text</fn> , <fn:Courier New>text</fn> , <fn:default>restore default font</fn>
Metacolors (ou couleurs de mode): couleurs tirées de l' Appearance.DarkModeColors ou Appearance.LightModeColors
Exemple: <c:mclDarkBlue><bg:mclLightGray>dark blue text on light gray background</bg></c>
Entités HTML: Voir Fonction ReplaceHtmlEntities dans le fichier JPP.HtmlHint.pas .
TCustomLabel Descendant.
Propriétés supplémentaires: AnchoredControls, Tagext.
Basé sur TJppLabel .
Propriétés supplémentaires: ombre pour l'état activé et désactivé, Couleur de légende désactivée, bordure (couleur, taille, style), rembourrage.

TCustomLabel Descendant.
Étiquetez avec des polices supplémentaires ( TFont ) pour 5 états: normal , normal visité , chaud , hurlé et handicapé .
Après avoir cliqué, il peut ouvrir l'URL dans le navigateur par défaut, exécuter un fichier avec ShellExecute ou effectuer une action de TactionList .
Plus d'informations ...
Un composant d'étiquette composé de 3 parties:
Caption de la propriété)RightCaption )Basé sur TPEGTOPLINELABEL à partir de composants communs PegTop écrits par Jens Gruschel (http://www.pegtop.net/delphi/components/common/index.htm).



Mes modifications:
Annex renommée à RightCaptionJpp La RightCaption a sa propre police, son fond et sa couleur de bordure. La RightCaption peut être positionnée verticalement par RightCaptionPosDeltaY . La ligne peut être positionnée verticalement par LinePosDeltaY . La longueur de la ligne peut être modifiée par LineSizeDeltaX1 et LineSizeDeltaX2 . Si AutoHeight = True , la hauteur du composant sera calculée et appliquée automatiquement.
Un composant d'étiquette simple composé de 2 légendes: gauche ( Caption de la propriété) et droite (propriété RightCaption ).

L'espace entre les légendes peut être modifié à l'aide de la propriété Spacing . Basé sur TJPPDoubleLineLabel .
Un composant d'édition dérivé de TCustomEdit .

Propriétés supplémentaires:
AnchoredControlsAppearance - Ici, vous pouvez définir l'arrière-plan et la couleur de la police pour quatre états: normal, chaud, concentré, handicapé.BoundLabel - étiquette interneFlash - FlashColor , FlashCount , FlashInterval . Pour activer le clignotement, appelez la méthode FlashBackground . Cette fonction peut être utilisée pour indiquer l'utilisateur d'une valeur incorrecte.ShowLabel - Afficher / masquer l'étiquette liée.TagExt - étiquette étendue. Actuellement uniquement pour Delphi .
Semblable à TJppEdit , mais a également la capacité de définir les couleurs de la bordure.
Méthodes de dessin de bordure basées sur TFlatEdit du package Flatstyle https://sourceforge.net/projects/flatstyle/

Descendant de TCustomMemo .
Propriétés supplémentaires:
AnchoredControlsAppearance - Ici, vous pouvez définir l'arrière-plan et la couleur de la police pour quatre états: normal, chaud, concentré, handicapé.BoundLabel - étiquette interneFlash - FlashColor , FlashCount , FlashInterval . Pour activer le clignotement, appelez la méthode FlashBackground . Cette fonction peut être utilisée pour indiquer l'utilisateur d'une valeur incorrecte.ShowLabel - Afficher / masquer l'étiquette liée.Text - Accès facile aux Lines.TextTagExt - étiquette étendue. Semblable à TJppMemo , mais a également la capacité de définir les couleurs de la bordure.
Méthodes de dessin de bordure basées sur TFlatMemo du package Flatstyle https://sourceforge.net/projects/flatstyle/

Un TCheckBox standard avec le support TagExt et AnchoredControls .
Un TRadioButton standard avec le support TagExt et AnchoredControls .
Un TDateTimePicker standard avec le support BoundLabel , TagExt et AnchoredControls .
Windows uniquement
Lazarus et Delphi X2 ou plus récents.
Sélecteur de style GDI + HORS HORT-COMPOSSIBLE avec BoundLabel et AnchoredControls .

Une boîte combinée hautement personnalisable avec une liste de styles de pinceau.

Le style actuel peut être lu / défini à l'aide de la propriété Selected .
Le nom d'affichage du style Brush peut être modifié dans le gestionnaire d'événements OnGetDisplayName .
Le TJPPBrushstylecombobox a une étiquette intégrée ( BoundLabel ).
Une boîte combinée hautement personnalisable avec une liste de styles de stylo.

Le style actuel peut être lu / défini à l'aide de la propriété Selected .
Le nom d'affichage de style stylo peut être modifié dans le gestionnaire d'événements OnGetDisplayName .
Le TJPPPenstylecombobox a une étiquette intégrée ( BoundLabel ).
Un composant TTimer standard avec quelques propriétés et méthodes supplémentaires:
RepeatCountLimit . Ici, vous pouvez définir le nombre de fois que l'intervalle de temps spécifié dans la propriété Interval peut être atteint. La valeur 0 signifie aucune limite.Counter de biens. Chaque fois que l'intervalle de temps spécifié dans la propriété Interval expire, la propriété Counter est incrémentée de 1. Lorsque le Counter atteint la valeur de RepeatCountLimit , le temporisateur est arrêté et que le gestionnaire d'événements OnRepeatCountLimitReached est déclenché (s'il est attribué).ClearCounterOnStart . Si c'est défini sur True , la méthode Start réinitialise le Counter .Start . Sets Enabled sur True . Si ClearCounterOnStart est défini sur True , le Start définit la propriété Counter sur 0 .Stop . Définit le False Enabled .OnRepeatCountLimitReached - licencié lorsque le Counter atteint la valeur de RepeatCountLimit . Exemple: affichage du compteur toutes les secondes. Affichez le message après 10 secondes et éteignez la Timer .
procedure TForm1.FormCreate (Sender: TObject);
begin
JppTimer1.Interval := 1000 ;
JppTimer1.RepeatCountLimit := 10 ; // JppTimer1 will stop automatically after 10 seconds.
JppTimer1.Start;
end ;
procedure TForm1.JppTimer1Timer (Sender: TObject);
begin
Label1.Caption := JppTimer1.Counter.ToString;
end ;
procedure TForm1.JppTimer1RepeatCountLimitReached (Sender: TObject);
begin
ShowMessage( ' 10 seconds elapsed! ' );
end ; Un composant non visuel qui peut stocker n'importe quel nombre d'images PNG. Peut être associé à un composant Timage externe.
Contrairement à TimageList , chaque image peut avoir une taille différente. Les images sont stockées en interne sous forme de PNG, pas les bitmaps, ce qui réduit la taille du fichier DFM. Bien sûr, en supposant que les images PNG sont compressées.
Des images PNG peuvent être ajoutées dans l' inspecteur d'objet ou dans le code à l'aide de AddPngImage , AddImageFromFile ou Items.Insert Méthodes:
...
var
Png: TPngImage;
begin
Png := TPngImage.Create;
try
Png.LoadFromFile( ' C:image.png ' );
JppPngCollection.AddPngImage(Png);
// OR
// JppPngCollection.AddPngImageFromFile('C:image.png');
finally
Png.Free;
end ;
end ; La méthode AddPngImage ajoute une copie de l'image PNG, vous êtes donc responsable de la libération de l'objet Png dans l'exemple ci-dessus.
Pour récupérer une image PNG à partir d'une collection, vous pouvez utiliser les méthodes: GetPngImage , GetPngImageByName ou Items[Index].PngImage .
Il existe des propriétés supplémentaires associées à chaque image PNG dans la collection:
Name : string;
Description: string;
Tag: integer;
Enabled: BooleanEt lire uniquement les propriétés:
Width: integer;
Height: integer; Important! Les objets TPNGIMage sont créés automatiquement lors de la création d'éléments de collecte. Si vous souhaitez vérifier si un élément de la collection a une image PNG attribuée, vous ne pouvez pas le faire en comparant à NIL . Vous devez utiliser la méthode TPngImage.Empty :
// Improperly
if JppPngCollection.Items[ 0 ].PngImage <> nil then ... // <-- Always returns True // Properly
if not JppPngCollection.Items[ 0 ].PngImage.Empty then ... // OK, image assigned TJppStorageCtrl est un composant non visuel qui vous permet de stocker des informations de différents types dans la collection. Chaque élément de la collecte stocke les données suivantes:
Les éléments sont accessibles à partir de l' inspecteur d'objet à l'aide de la propriété StorageCollection . Les valeurs de chaque élément de la collection, à l'exception des pointeurs, peuvent également être définies dans l' inspecteur d'objets . Les valeurs du pointeur ne peuvent être définies que dans le code et elles sont initialisées par défaut à nil .
Pour accéder aux éléments de collection dans le code, vous pouvez utiliser la propriété Items , par exemple:
JppStorageCtrl.Items[ 0 ].IntValue1 := 1 ;
JppStorageCtrl.Items[ 0 ].PointerValue1 := SomePointer; Mais, puisque Items sont définis comme la propriété par défaut , vous pouvez l'écrire simplement:
JppStorageCtrl[ 0 ].IntValue1 := 1 ;
JppStorageCtrl[ 0 ].PointerValue1 := SomePointer;Ce composant peut être utile si vous souhaitez avoir accès à certaines données globales et que vous ne souhaitez pas créer de variables globales.
J'utilise parfois ce composant dans les premiers stades des applications d'écriture. Dans les étapes ultérieures, une manière définitivement meilleure de stocker et de gérer les données est de concevoir des enregistrements spécialisés, des classes, des tableaux, des conteneurs génériques / pointeurs, etc.
Un composant non visuel qui vous permet de stocker la collecte de chaînes avec des données supplémentaires. Chaque élément de la collection a les propriétés suivantes:
ItemName: string;
Value : string;
Enabled: Boolean;
Tag: integer;Avant d'installer le package JPPACK , vous devez d'abord installer les packages suivants:
Si vous avez installé les composants PNG à l'aide du Getit Package Manager , vous devrez probablement modifier le nom PngComponents sur PngComponentsD dans le fichier jppack.dpk .
Dans le dossier Packages, vous pouvez trouver des packages d'installation pour toutes les versions Delphi de Delphi 2009 à 10.4 Sydney . Accédez au sous-dossier avec le nom de votre version Delphi (par exemple Delphi_XE7 pour la version XE7) et ouvrez le fichier JPPack.dproj ou JPPack.dpk . Dans le chef de projet , cliquez avec le bouton droit sur le fichier JPPack.bpl , puis sélectionnez Install dans le menu contextuel. Après un court laps de temps, un message devrait apparaître afficher des informations sur l'installation correcte du package et avec la liste des composants nouvellement installés. Tous les composants que vous pouvez trouver sur la page JPPACK dans la palette d'outils .
Vous pouvez également compiler le package pour la cible Win64 .
Après avoir installé le package, il est préférable d'ajouter le dossier source au chemin de la bibliothèque :
Tools de menu -> Options .Environment Options -> Delphi Options -> Library .; (Semicolon) et le chemin du répertoire source . Tout d'abord, installez le package JPLIB à partir de https://github.com/jackdp/jplib
Sur Windows, installez également l' Igdiplusmod à partir de https://github.com/jackdp/igdiplusmod
Ouvrez le fichier de package ( packagesLazarusjppacklcl.lpk ) dans l'ide Lazarus. Cliquez sur le bouton Compile puis Use -> Install et reconstruisez IDE. Tous les composants que vous pouvez trouver sur la page Jppacklcl dans la palette de composants .
Installez le package JPLIB à partir de https://github.com/jackdp/jplib
Sur Windows, installez également l' Igdiplusmod à partir de https://github.com/jackdp/igdiplusmod
Ouvrez le fichier de package ( packagesCodeTyphonjppacklcl.ctpkg ) dans le Typhon IDE. Cliquez sur Bouton Compile package (bouton 2-ND dans la barre d'outils) puis cliquez sur le bouton 3-RD, sélectionnez Install et reconstruire IDE. Tous les composants que vous pouvez trouver sur la page Jppacklcl dans la palette de composants .
La licence pour mon travail: Domaine public. Vous pouvez faire avec mon code ce que vous voulez sans aucune limitation.
Mais, dans certaines unités, j'utilise du code à partir d'autres projets open source, vous devez donc consulter les fichiers source PAS et la licence des auteurs de ces projets pour plus d'informations.