Delphi 2009-11.0 Alexandria和Lazarus的VCL/LCL组件集合
Jppack是Delphi和Lazarus和CodeTyphon的Delphi和LCL组件的一小部分。
支持的Delphi版本: 2009,2010 , XE , XE2 , XE3 , XE4 , XE5 , XE6 , XE7 , XE7 , XE8,10.0西雅图, 10.1柏林, 10.2东京,10.3 Rio , 10.4 Sydney,Sydney,Sydney , 11.0 Alexandria 。
拉撒路:必需的FPC版本3.0.4 3.2.0或更新(在Lazarus 2.0.10 + FPC 3.2.0,Lazarus 2.2.0 + FPC 3.2.2和Lazarus 2.2.2 + FPC 3.2.2)中进行了测试。 CodeThon :在Codetyphon上测试7.7 R2202141933,带有FPC 3.3.1 R2202141933

这些组件是在几年内创建的,它们反复修改,改进并扩展到实施特定项目所需的功能。通常,有一个很小的混乱,但我认为一切都很好(我希望!)。
我不是编写VCL组件的专家,也不是通过分析各种免费Delphi组件的源代码(以及使用片段)(尤其是Cindy组件和PNGCOMPOPENENT的)来帮助自己。
与图形处理相关的一些功能和过程是从Cindy组件中获取的。与梯度相关的例程几乎完全来自此软件包( VCL.cyGraphics.pas文件)。
Cindy组件的作者是JúlioMaurícioAntunesPiao。这些来源可从https://sourceforge.net/projects/tcycomponents/中获得,在我使用Júlio撰写的函数的源文件中,我添加了与他的页面链接的相关信息。
经过长时间而激烈的战斗,带有来自Delphi(商业和免费)组件的各种组件的各种按钮,我终于找到了正确显示PNG文件的ppngbitbtn和tpngspeedbutton 。与许多其他许多人不同,我从来没有遇到过问题。因此,在实现我的按钮时,我决定依靠此软件包中的代码。
PNGCOMPONENTS包的原始作者是Martijn Saly( www.thany.org )。该项目目前由Uwe Raabe维护。来源可从https://github.com/uweraabe/pngcomponents获得
在第三方文件夹中,您可以使用pngcomponents ver找到zip文件。 1.4.1。这是撰写此文档时可用的PNGCOMPORENTS的最新版本,并且可以与Jppack一起使用。
2020.08.31- github的版本也运行良好。
JPPACK软件包中的每个视觉组件都使用AnchoredControls属性支持锚定外部组件。
您可以将外部组件固定到任何边缘。当您更改主组件的大小或位置时,将自动更新锚固组件的位置。

JPPACK软件包中的大多数组件具有TagExt属性。在这里,您可以存储一个整数值( IntValue ),字符串( StrValue ),float号码( RealValue ),指针( PointerValue )和Date( DateValue )。前三个值可从对象检查器和代码中获得最后两个值 - 仅在代码中。
默认值:
| 财产 | 默认值 |
|---|---|
TagExt.IntValue | 0 |
TagExt.StrValue | '' (空字符串) |
TagExt.RealValue | 0 |
TagExt.PointerValue | nil |
TagExt.DateValue | Now |
一个高度可定制的面板。 TCustomPanel后代。它是根据Cindy组件包中包含的一个面板编写的(但我不记得确切地说是哪一个)。

面板分为两部分 - 上和下部。对于每个人,您可以分别定义颜色(梯度或实心)。
所有面板边框均分别配置。您可以为每个边界设置不同的颜色,厚度,样式,可见性。
该小组对无限的标题集有内置的支持。每个字幕都有自己的属性Font: TFont ,可以相对于面板的角落以中心或定位。
此外, TJppPanel对水平线,垂直线和水平条的无限集合具有内置的支持。
更多信息...
TJppPanel的截断版本。它没有内置的字幕,垂直线,水平线和水平条。
TJppBasicPanel的截断版本。它只有一个梯度,所有边界都具有相同的颜色( Appearance.BorderColor ),但是每个边框都可以隐藏/显示( Appearance : DrawTopBorder , DrawBottomBorder , DrawLeftBorder , DrawRightBorder )。
该面板非常适合创建基本的UI布局。
Highly customizable collapsible panel based on the TJvRollOut panel from the JVCL package https://github.com/project-jedi/jvcl/blob/master/jvcl/run/JvRollOut.pas
原始许可证:MPL 1.1
我的修改:公共领域

您可以在ScrollBox上放置顶级面板,以模拟Delphi的CategoryPanelGroup 。
TCustomPanel后代
带有组件锚固支持的标准面板。
目前仅适用于Delphi 。
TJppPngButton是PNGCOMPONENTS软件包中的扩展TPngBitBtn按钮。

该按钮可以在五个状态之一中:正常,热,下(按下),集中和禁用。对于每个状态,您可以设置整个显示参数:上和底部渐变/纯色(类似于TJppPanel ),边框颜色,样式和宽度,字体参数(颜色,名称,大小,样式)。
如果要以系统颜色显示该按钮,请设置属性Appearance.DefaultDrawing True (在Appearance.<STATES>
所有按钮状态的所有颜色的数量确实很大,因此我决定更轻松地使用现成的配色方案(颜色地图)来管理显示的颜色。
我为TJppPngButton创建了36种不同的配色方案。要更改活动配色方案,请选择对象检查员中ColorMapType属性中可用的一种方案。
可以使用位于demos目录中的存储库中的TJppPngButton Color Maps Designer程序编辑配色方案。
更多信息...
目前仅适用于Delphi 。
此按钮是TJppPngButton的略微截断版本。它只有一个针对每个按钮状态的梯度,并且不支持配色方案。
目前仅适用于Delphi 。
类似于TJppBasicPngButton ,但在支持亚caption中。

此按钮与TJppBasicPngButton非常相似,但它基于TGraphicControl ,因此它不接受焦点(它没有重点状态)。
TCustomComboBox后代。
其他属性:
AnchoredControlsBoundLabel - 内部标签。Flash - 闪烁选项。要打开闪烁,请调用代码中的FlashBackground方法。ShowLabel show / hide绑定标签。TagExt TCustomComboBoxEx后代。
固定项目高度错误在较旧的Delphi版本中。

其他属性:
AnchoredControlsBoundLabel - 内部标签。Flash - 闪烁选项。要打开闪烁,请调用代码中的FlashBackground方法。ShowLabel show / hide绑定标签。TagExtItemIndex目前仅适用于Delphi 。
基于TFlatComboBox的高度可定制的组合
https://github.com/jackdp/flatstyle/blob/master/source/tflatcomboboxunit.pas

高度可自定义的组合,显示预定义和/或用户定义的颜色列表。




TJppColorComboBox具有4个内置组件:一个标签和3个按钮,可更改,复制和粘贴颜色。
颜色可以以三种格式显示: RGB INT (例如051,102,255), RGB十六进制(例如#3366FF)和BGR HEX (例如$ 00FF6633)。如果您需要以不同的格式显示颜色,则可以在OnGetColorStrValue事件处理程序中执行此操作。
除了标准项目(显示颜色)外,您还可以添加分离器和变元物品。
用户选择的每种颜色(但尚未在颜色列表中)可以自动添加到列表的末端或顶部。因此,您的应用程序的用户可以访问先前选择的颜色的历史记录。
更多信息...
一个高度可自定义的列表框,显示预定义和/或用户定义的颜色的列表。


它与TJppColorComboBox非常相似,但没有内置组件。
Tjppcolorswatch是一种以两种格式显示颜色及其值(代码)的组件。

它由三个部分组成:一个矩形显示颜色(左侧)和两个矩形,并带有所选颜色的代码。每个部分都可以隐藏,因此您可以仅显示带有颜色的矩形或仅以所选格式的颜色代码。
可用的颜色格式:
| 格式 | 例子 |
|---|---|
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% |
如果要以其他格式显示颜色代码,则可以在OnGetTopColorStrValue事件处理程序(对于上颜色代码)和OnGetBottomColorStrValue (对于底部)中。
TjppcolorsWatchex是TJPPCOLORSWATCH的扩展版本。它具有内置标签( BoundLabel )和三个按钮: ButtonChangeColor , ButtonCopyColor和ButtonPasteColor 。
BoundLabel是标准标签( TCustomLabel后代),可以显示在组件的左,右,上方或下方。这些按钮是从TJppBasicSpeedButton类继承的,因此您可以自由设置所有按钮状态(正常,热,下,残疾)和PNG图标的颜色。
一个基于JVCL软件包的JVSpecialProgress的高度可定制的进度栏,但我的许多修改。 https://github.com/project-jedi/jvcl/blob/master/jvcl/run/jvspecialprogress.pas

我的修改:
外貌
在这里,您可以修改与控件外观相关的许多参数:背景和进度条形颜色(固体或梯度),边框颜色和大小,字体(对于正常和残疾状态),文本对齐(左上角,顶部,上位数,顶部,右上角,左,中心...),前缀和后缀和后缀,文本阴影等。与标准进度栏不同,TJPPProgressbar还允许您在禁用组件时设置显示的颜色。
Endmarker-在进度栏末端绘制的矩形。
TextDisplayMode-位置,百分比,位于像素,字幕或无。
阶段:中间和最后 - 您可以在此处进行颜色更正。
ProgressBarvisible-在这里您可以阻止进度栏显示并仅显示文本。
锚固
您可以将一个外部控制(例如Tbutton,TEDIT)固定到组件的每个边缘。
边框 - 内部标签
updatePositionIfdisabled-在此处,您可以决定是否在禁用组件时更新进度栏。
OnProgresschanged
当当前位置更改时触发。您可以在此处执行一些其他操作。
Tagext
目前仅适用于Delphi 。
Delphi的轻量级HTML提示组件(在Lazarus中它编译但行不通)。

该组件是通过组合两个Pascal单元来创建的:
tflathintunit.pas来自FlatStyle包装
https://github.com/jackdp/flatstyle/blob/master/source/tflathintunit.pas
许可证:免费(无其他信息)
hthint.pas来自JVCL软件包https://github.com/project-jedi/jvcl/blob/master/jvcl/jvcl/install/jvclinstall/jvclinstall/helpers/helpers/hthint.pas
许可证:MPL 1.1
我的修改许可证:没有许可证(公共领域)
TJPPHTMLHINT不是功能齐全的HTML组件。此外,这是一个轻巧且非常简单的组件,仅支持几个HTML标签,此外,语法略有不寻常。
支持标签:
B - <b>bold text</b>
i - <i>italic</i>
U - <u>underline</u>
S - <s>strike out</s>
c :颜色 - 文本颜色,例如: <c:clRed>text</cl> , <cl:Red>text</c> , <c:#FF0000>text</c> , <c:255,0,0>RGB color</c>
BG :颜色 - 背景颜色,例如。 <bg:clYellow>yellow background</bg>
IND :X-从当前位置到凹痕。 eg. <ind:10>
aind :x-绝对凹痕,例如。 <aind:20>
FS :X-字体大小,例如。 <fs:12>some text</fs> , <fs:+4>text</fs>
fn :名称 - 字体名称,例如。 <fn:Verdana>text</fn> , <fn:Courier New>text</fn> , <fn:default>restore default font</fn>
Metacolors(或模式色):从Appearance.DarkModeColors中获取的颜色。DarkModeColors或Appearance.LightModeColors调色板
示例: <c:mclDarkBlue><bg:mclLightGray>dark blue text on light gray background</bg></c>
HTML实体:请参阅JPP.HtmlHint.pas文件中的功能ReplaceHtmlEntities 。
TCustomLabel后代。
其他属性:锚定孔,tagext。
基于TJppLabel 。
其他属性:启用和残疾状态的阴影,残疾人字幕颜色,边框(颜色,大小,样式),填充。

TCustomLabel后代。
标签具有5个状态的其他字体( TFont ):正常,访问正常,热,访问和残疾人。
单击后,它可以打开默认浏览器中的URL,使用ShellExecute执行文件或从TactionList执行操作。
更多信息...
由3个部分组成的标签组件:
Caption )RightCaption )基于Jens Gruschel(http://www.pegtop.net/delphi/delphi/delphi/components/common/common/index.htm)撰写的PEGTOP共同组件的Tpegtoplinelabel 。



我的修改:
Annex重命名为RightCaptionJpp RightCaption具有自己的字体,背景和边框颜色。 RightCaption可以通过RightCaptionPosDeltaY垂直定位。该线可以通过LinePosDeltaY垂直放置。线的长度可以通过LineSizeDeltaX1和LineSizeDeltaX2进行修改。如果AutoHeight = True ,则将自动计算和应用组件的高度。
一个简单的标签组件,由2个字幕组成:左(属性Caption )和右(属性RightCaption )。

字幕之间的空间可以使用Spacing属性进行修改。基于tjppdoublinelabel 。
从TCustomEdit得出的编辑组件。

其他属性:
AnchoredControlsAppearance - 在这里,您可以为四个状态设置背景和字体颜色:普通,热,专注,残疾。BoundLabel - 内部标签Flash FlashColor , FlashCount , FlashInterval 。要打开闪烁,请调用FlashBackground方法。此功能可用于指示不正确值的用户。ShowLabel show / hide绑定标签。TagExt扩展标签。目前仅适用于Delphi 。
类似于TJppEdit ,但也具有定义边框颜色的能力。
基于FlatStyle软件包的TFlatEdit图方法https://sourceforge.net/projects/flatstyle/

TCustomMemo后代。
其他属性:
AnchoredControlsAppearance - 在这里,您可以为四个状态设置背景和字体颜色:普通,热,专注,残疾。BoundLabel - 内部标签Flash FlashColor , FlashCount , FlashInterval 。要打开闪烁,请调用FlashBackground方法。此功能可用于指示不正确值的用户。ShowLabel show / hide绑定标签。Text - 轻松访问Lines.TextTagExt扩展标签。类似于TJppMemo ,但也具有定义边框颜色的能力。
基于TFlatMemo的边界图方法https://sourceforge.net/projects/flatstyle/

带有TagExt和AnchoredControls支持的标准TCheckBox 。
带有TagExt和AnchoredControls支撑的标准TRadioButton 。
带有BoundLabel , TagExt和AnchoredControls支持的标准TDateTimePicker 。
仅Windows
Lazarus和Delphi X2或更新。
具有BoundLabel和AnchoredControls高度可定制的GDI+舱口式选择器。

一个具有刷子样式列表的高度可定制的组合盒。

当前样式可以使用Selected属性读取/设置。
刷子样式显示名称可以在OnGetDisplayName事件处理程序中更改。
Tjppbrushstylecombox具有内置标签( BoundLabel )。
一个高度可定制的组合盒,上面有笔款列表。

当前样式可以使用Selected属性读取/设置。
Pen样式显示名称可以在OnGetDisplayName事件处理程序中更改。
Tjpppenstylecombox具有内置标签( BoundLabel )。
具有一些其他属性和方法的标准TTimer组件:
RepeatCountLimit财产。在这里,您可以设置可以达到Interval属性中指定的时间间隔的次数。值0表示无限。Counter财产。每次Interval属性中指定的时间间隔到期时, Counter属性都会增加1。当Counter达到RepeatCountLimit的值时,定时器将停止,并触发OnRepeatCountLimitReached事件处理程序(如果分配)。ClearCounterOnStart属性。如果设置为True ,则Start方法将重置Counter 。Start方法。设置Enabled到True 。如果将ClearCounterOnStart设置为True则Start将Counter属性设置为0 。Stop方法。将Enabled设置为False 。OnRepeatCountLimitReached活动 - 当Counter达到RepeatCountLimit的价值时被解雇。示例:每秒钟显示一次计数器。在10秒后显示消息,然后关闭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 ;可以存储任意数量的PNG图像的非视觉组件。可以与外部对照组件相关联。
与Timagelist不同,每个图像的尺寸都不同。图像在内部存储为PNG,而不是位图,该图像降低了DFM文件的大小。当然,假设PNG图像被压缩。
可以使用AddPngImage , AddImageFromFile或Items.Insert方法中的对象检查器或代码中添加PNG图像:insert方法:
...
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 ; AddPngImage方法添加了PNG图像的副本,因此您负责在上面的示例中释放Png对象。
要从集合中检索PNG图像,您可以使用以下方法: GetPngImage , GetPngImageByName或Items[Index].PngImage 。
集合中的每个PNG图像还有其他属性:
Name : string;
Description: string;
Tag: integer;
Enabled: Boolean并仅阅读属性:
Width: integer;
Height: integer;重要的!创建集合项目时会自动创建tpngimage对象。如果要检查集合的任何项目是否已分配了PNG图像,则无法通过与NIL进行比较来完成。您必须使用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是一种非视觉组件,可让您存储集合中不同类型的信息。该集合的每个项目都存储以下数据:
使用StorageCollection属性可以从对象检查器中获得项目。除指针以外的每个项目的值也可以在对象检查器中设置。指针值只能在代码中设置,并且默认情况下将其初始化为nil 。
要在代码中使用收集项目,您可以使用Items属性,例如:
JppStorageCtrl.Items[ 0 ].IntValue1 := 1 ;
JppStorageCtrl.Items[ 0 ].PointerValue1 := SomePointer;但是,由于Items被设置为默认属性,因此您可以简单地编写:
JppStorageCtrl[ 0 ].IntValue1 := 1 ;
JppStorageCtrl[ 0 ].PointerValue1 := SomePointer;如果您想访问某些全局数据,并且不想创建全局变量,则此组件可能会很有用。
我有时会在编写应用程序的早期阶段使用此组件。在以后的阶段,存储和管理数据的一种更好的方法是设计专业记录,类,数组,通用/指针容器等。
一种非视觉组件,可让您存储带有其他数据的字符串集合。该集合的每个项目都有以下属性:
ItemName: string;
Value : string;
Enabled: Boolean;
Tag: integer;在安装JPPACK软件包之前,您必须首先安装以下软件包:
如果您使用GetIT软件包管理器安装了PNG组件,则可能必须将名称PngComponents更改为JPPACK.DPK文件中的PngComponentsD 。
在包装夹中,您可以找到从Delphi 2009到10.4悉尼的所有Delphi版本的安装软件包。转到带有Delphi版本的名称(例如XE7版本的Delphi_XE7 )的子文件夹,然后打开文件JPPack.dproj或JPPack.dpk 。在项目管理器中,右键单击JPPack.bpl文件,然后在弹出菜单中选择Install 。短时间后,应出现一条消息,显示有关软件包的正确安装以及新安装的组件列表的信息。您可以在工具调色板中找到所有组件。
您还可以为Win64目标编译包装。
安装软件包后,最好将source文件夹添加到库路径:
Tools - > Options 。Environment Options - > Delphi Options - > Library 。; (分号)和通往source目录的路径。首先,从https://github.com/jackdp/jplib安装JPLIB软件包
在Windows上,还可以从https://github.com/jackdp/igdiplusmod安装igdiplusmod
在Lazarus IDE中打开软件包文件( packagesLazarusjppacklcl.lpk )。单击按钮Compile然后Use - > Install和重建IDE。您可以在组件调色板中找到所有组件。
从https://github.com/jackdp/jplib安装JPLIB软件包
在Windows上,还可以从https://github.com/jackdp/igdiplusmod安装igdiplusmod
打开typhon IDE中的打开软件包文件( packagesCodeTyphonjppacklcl.ctpkg )。单击按钮Compile package (工具栏上的2-nd按钮),然后单击3五按钮,选择Install和“重建IDE”。您可以在组件调色板中找到所有组件。
我的工作许可证:公共领域。您可以随心所欲地使用我的代码,而无需任何限制。
但是,在某些单元中,我使用其他开源项目中的代码,因此您应该查看PAS源文件和这些项目的作者的许可,以获取更多信息。