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佈局。
JVCL軟件包https://github.com/project-jedi/jvcl/jvcl/blob/master/master/jvcl/jvcl/run/jvrollout.pas,基於TJvRollOut面板的高度可自定義可折疊面板
原始許可證: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源文件和這些項目的作者的許可,以獲取更多信息。