คอลเลกชันของส่วนประกอบ VCL/LCL สำหรับ Delphi 2009 - 11.0 Alexandria และ Lazarus
JPPACK เป็นคอลเล็กชั่นส่วนประกอบ VCL ขนาดเล็กสำหรับส่วนประกอบ Delphi และ LCL สำหรับ Lazarus และ Codetyphon
รุ่น Delphi ที่รองรับ: 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 : เวอร์ชัน 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) Codetyphon : ทดสอบบน Codetyphon 7.7 R2202141933 ด้วย FPC 3.3.1 R2202141933

ส่วนประกอบเหล่านี้ถูกสร้างขึ้นภายในไม่กี่ปีที่ผ่านมาพวกเขาได้รับการปรับเปลี่ยนซ้ำปรับปรุงและขยายด้วยฟังก์ชั่นที่จำเป็นในการดำเนินโครงการเฉพาะ โดยทั่วไปมีความวุ่นวายเล็ก ๆ น้อย ๆ แต่ฉันคิดว่าทุกอย่างทำงานได้ดี (ฉันหวังว่า!)
ฉันไม่มีความเชี่ยวชาญในการเขียนส่วนประกอบ VCL และช่วยตัวเองโดยการวิเคราะห์ซอร์สโค้ด (และใช้ชิ้นส่วน) ของส่วนประกอบ Delphi ฟรีต่างๆโดยเฉพาะอย่างยิ่งส่วนประกอบ Cindy และ PNGComponents
ฟังก์ชั่นและขั้นตอนบางอย่างที่เกี่ยวข้องกับการประมวลผลกราฟิกถูกนำมาจาก ส่วนประกอบของซินดี้ กิจวัตรที่เกี่ยวข้องกับการไล่ระดับสีเกือบทั้งหมดนำมาจากแพ็คเกจนี้ (ไฟล์ VCL.cyGraphics.pas )
ผู้เขียน Cindy Component S คือJúlioMaurício Antunes Piao แหล่งข้อมูลมีอยู่ที่ https://sourceforge.net/projects/tcycyponents/ ในไฟล์ต้นฉบับที่ฉันใช้ฟังก์ชั่นที่เขียนโดยJúlioฉันได้เพิ่มข้อมูลที่เกี่ยวข้องกับลิงค์ไปยังหน้าของเขา
หลังจาก การต่อสู้ที่ยาวนานและดุเดือด ด้วยปุ่มต่าง ๆ จากแพ็คเกจที่แตกต่างกันของส่วนประกอบสำหรับ Delphi (เชิงพาณิชย์และฟรี) ในที่สุดฉันก็พบปุ่มที่แสดงไฟล์ PNG อย่างถูกต้อง - TPNGBITBTN และ TPNGSpeedButton จากแพ็คเกจ PNGCOMPONENTS ฉันไม่เคยมีปัญหากับพวกเขาไม่เหมือนคนอื่น ๆ อีกมากมาย ด้วยเหตุนี้ในการใช้ปุ่มของฉันฉันจึงตัดสินใจพึ่งพารหัสจากแพ็คเกจนี้
ผู้เขียนต้นฉบับของแพ็คเกจ PNGComponents คือ Martijn Saly ( www.thany.org ) ปัจจุบันโครงการได้รับการดูแลโดย Uwe Raabe แหล่งข้อมูลมีอยู่ที่ https://github.com/uweraabe/pngComponents
ในโฟลเดอร์ที่ 3 ของบุคคลคุณสามารถค้นหาไฟล์ zip ด้วย pngcomponents ver 1.4.1. นี่เป็นเวอร์ชันล่าสุดของ PNGComponents ที่มีอยู่เมื่อเขียนเอกสารนี้และทำงานได้ดีกับ JPPACK
2020.08.31 - เวอร์ชันจาก GitHub ก็ใช้งานได้ดีเช่นกัน
แต่ละองค์ประกอบภาพในแพ็คเกจ JPPACK รองรับการยึดส่วนประกอบภายนอกโดยใช้คุณสมบัติ AnchoredControls
คุณสามารถยึดส่วนประกอบภายนอกกับขอบใด ๆ เมื่อคุณเปลี่ยนขนาดหรือตำแหน่งของส่วนประกอบหลักตำแหน่งของส่วนประกอบที่ยึดจะได้รับการอัปเดตโดยอัตโนมัติ

ส่วนประกอบส่วนใหญ่ในแพ็คเกจ jppack มีคุณสมบัติ TagExt ที่นี่คุณสามารถจัดเก็บค่าจำนวนเต็มหนึ่งค่า ( IntValue ), สตริง ( StrValue ), หมายเลขลอย ( RealValue ), ตัวชี้ ( PointerValue ) และวันที่ ( DateValue ) ค่าสามค่าแรกนั้นใช้ได้จาก ผู้ตรวจสอบวัตถุ และในรหัสสองครั้งสุดท้าย - เฉพาะในรหัส
ค่าเริ่มต้น:
| คุณสมบัติ | ค่าเริ่มต้น |
|---|---|
TagExt.IntValue | 0 |
TagExt.StrValue | '' (สตริงเปล่า) |
TagExt.RealValue | 0 |
TagExt.PointerValue | nil |
TagExt.DateValue | Now |
แผงควบคุมที่ปรับแต่งได้สูง TCustomPanel DESCENDANT มันถูกเขียนบนพื้นฐานของหนึ่งในแผงที่รวมอยู่ในแพ็คเกจ Cindy Components (แต่ฉันจำไม่ได้ว่าอันไหน)

แผงแบ่งออกเป็นสองส่วน - บนและล่าง สำหรับแต่ละคนคุณสามารถกำหนดสี (การไล่ระดับสีหรือของแข็ง) แยกกัน
เส้นขอบแผงทั้งหมดได้รับการกำหนดค่าแยกต่างหาก คุณสามารถตั้งค่าสีความหนาสไตล์การมองเห็นที่แตกต่างกันสำหรับแต่ละเส้นขอบ
แผงควบคุมมีการสนับสนุนในตัวสำหรับคอลเลกชันของคำอธิบายภาพไม่ จำกัด คำบรรยายแต่ละฉบับมี Font: TFont และสามารถอยู่ตรงกลางหรืออยู่ในตำแหน่งที่สัมพันธ์กับมุมของแผง
ยิ่งไปกว่านั้น TJppPanel ยังมีการสนับสนุนในตัวสำหรับคอลเลกชันของเส้นแนวนอนไม่ จำกัด เส้นแนวตั้งและแถบแนวนอน
ข้อมูลเพิ่มเติม ...
TJppPanel เวอร์ชันที่ถูกตัดทอน มันไม่มีคอลเลกชันในตัวของคำอธิบายภาพแนวตั้งเส้นแนวนอนและแถบแนวนอน
TJppBasicPanel เวอร์ชันที่ถูกตัดทอน มันมีการไล่ระดับสีเพียงหนึ่งเส้นขอบทั้งหมดมีสีเท่ากัน ( Appearance.BorderColor ) แต่เส้นขอบแต่ละเส้นสามารถซ่อน/แสดงได้ ( Appearance : DrawTopBorder , DrawBottomBorder , DrawLeftBorder , DrawRightBorder )
แผงนี้เหมาะสำหรับการสร้างเค้าโครง UI ขั้นพื้นฐาน
พาเนลยุบที่ปรับแต่งได้สูงขึ้นอยู่กับแผง TJvRollOut จากแพ็คเกจ jvcl https://github.com/project-jedi/jvcl/blob/master/jvcl/run/jvrollout.pas
ใบอนุญาตดั้งเดิม: MPL 1.1
การดัดแปลงของฉัน: โดเมนสาธารณะ

คุณสามารถใส่แผงควบคุมชั้นนำลงบน ScrollBox เพื่อจำลอง CategoryPanelGroup จาก Delphi
ทายาท TCustomPanel
แผงมาตรฐานพร้อมการรองรับการยึดส่วนประกอบ
ปัจจุบัน สำหรับ Delphi เท่านั้น
TJppPngButton เป็นปุ่ม TPngBitBtn เพิ่มเติมจากแพ็คเกจ PNGCOMPONENTS

ปุ่มสามารถอยู่ในหนึ่งใน ห้ารัฐ : ปกติ ร้อน ลง (กด) โฟกัส และ ปิดการใช้งาน สำหรับแต่ละสถานะคุณสามารถตั้งค่าพารามิเตอร์การแสดงผลทั้งหมด: การไล่ระดับสีบนและด้านล่าง/สีทึบ (คล้ายกับ TJppPanel ), สีขอบ, สไตล์และความกว้าง, พารามิเตอร์ตัวอักษร (สี, ชื่อ, ขนาด, สไตล์)
หากคุณต้องการให้ปุ่มแสดงในสีของระบบให้ตั้ง Appearance.DefaultDrawing คุณสมบัติคุณสมบัติ defaultDrawing เป็น True (สีที่กำหนดเองทั้งหมดที่กำหนดไว้ใน Appearance.<STATES> จะถูกละเว้น)
จำนวนสีทั้งหมดสำหรับสถานะปุ่มทั้งหมดมีขนาดใหญ่มากดังนั้นฉันจึงตัดสินใจที่จะจัดการสีที่แสดงโดยใช้โทนสีพร้อมใช้งานได้ง่ายขึ้น (แผนที่สี)
ฉันได้สร้างโทนสีที่แตกต่างกัน 36 ชุดสำหรับ TJppPngButton หากต้องการเปลี่ยนรูปแบบสีที่ใช้งานอยู่ให้เลือกหนึ่งในแผนการที่มีอยู่ในคุณสมบัติ ColorMapType ใน ตัวตรวจสอบวัตถุ
โทนสีสามารถแก้ไขได้ด้วยโปรแกรม TJppPngButton Color Maps Designer ซึ่งตั้งอยู่ในที่เก็บในไดเรกทอรี demos
ข้อมูลเพิ่มเติม ...
ปัจจุบัน สำหรับ Delphi เท่านั้น
ปุ่มนี้เป็นรุ่นที่ถูกตัดทอนเล็กน้อยของ TJppPngButton มันมีการไล่ระดับสีเพียงครั้งเดียวสำหรับแต่ละสถานะปุ่มและไม่รองรับโทนสี
ปัจจุบัน สำหรับ Delphi เท่านั้น
คล้ายกับ TJppBasicPngButton แต่ด้วยการสนับสนุน subcaption

ปุ่มนี้คล้ายกับ TJppBasicPngButton แต่มันขึ้นอยู่กับ TGraphicControl ดังนั้นจึงไม่ได้โฟกัส (ไม่มีสถานะ โฟกัส )
TCustomComboBox DESCENDANT
คุณสมบัติเพิ่มเติม:
AnchoredControlsBoundLabel - ฉลากภายในFlash - ตัวเลือกการกระพริบ หากต้องการเปิดการกระพริบให้โทรหาวิธี FlashBackground ในรหัสShowLabel - แสดง / ซ่อนฉลากที่ถูกผูกไว้TagExt TCustomComboBoxEx DESCENDANT
แก้ไขข้อผิดพลาดความสูงของรายการในเวอร์ชัน Delphi รุ่นเก่า

คุณสมบัติเพิ่มเติม:
AnchoredControlsBoundLabel - ฉลากภายในFlash - ตัวเลือกการกระพริบ หากต้องการเปิดการกระพริบให้โทรหาวิธี FlashBackground ในรหัสShowLabel - แสดง / ซ่อนฉลากที่ถูกผูกไว้TagExtItemIndexปัจจุบัน สำหรับ Delphi เท่านั้น
combobox ที่ปรับแต่งได้สูงขึ้นอยู่กับ TFlatComboBox
https://github.com/jackdp/flatstyle/blob/master/source/tflatcomboboxunit.pas

combobox ที่ปรับแต่งได้สูงแสดงรายการสีที่กำหนดไว้ล่วงหน้าและ/หรือผู้ใช้ที่กำหนดไว้




TJppColorComboBox มี 4 ส่วนประกอบในตัว: หนึ่งป้ายและปุ่ม 3 ปุ่มที่จะเปลี่ยนคัดลอกและวางสี
สีสามารถแสดงในสามรูปแบบ: RGB Int (เช่น 051,102,255), RGB Hex (เช่น #3366FF) และ BGR Hex (เช่น $ 00FF6633) หากคุณต้องการแสดงสีในรูปแบบที่แตกต่างกันคุณสามารถทำได้ในตัวจัดการเหตุการณ์ OnGetColorStrValue
นอกเหนือจากรายการมาตรฐาน (การแสดงสี) คุณยังสามารถเพิ่มตัวคั่นและรายการ changecolor
แต่ละสีที่ผู้ใช้เลือก แต่ยังไม่ได้อยู่ในรายการสีสามารถเพิ่มได้โดยอัตโนมัติในตอนท้ายหรือด้านบนของรายการ ด้วยความขอบคุณผู้ใช้แอปพลิเคชันของคุณสามารถเข้าถึง ประวัติ ของสีที่เลือกไว้ก่อนหน้านี้
ข้อมูลเพิ่มเติม ...
กล่องรายการ ที่ปรับแต่งได้สูงแสดงรายการสีที่กำหนดไว้ล่วงหน้าและ/หรือผู้ใช้ที่กำหนดไว้


มันคล้ายกับ 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
แถบความคืบหน้าแบบปรับแต่งได้สูงขึ้นอยู่กับ JVSpecialProgress จากแพ็คเกจ JVCL แต่มีการดัดแปลงหลายอย่างของฉัน https://github.com/project-jedi/jvcl/blob/master/jvcl/run/jvspecialprogress.pas

การดัดแปลงของฉัน:
รูปร่าง
ที่นี่คุณสามารถปรับเปลี่ยนพารามิเตอร์จำนวนมากที่เกี่ยวข้องกับการปรากฏตัวของการควบคุม: พื้นหลังและสีแถบความคืบหน้า (ของแข็งหรือการไล่ระดับสี), สีและขนาดเส้นขอบ, แบบอักษร (สำหรับสถานะปกติและปิดการใช้งาน), การจัดตำแหน่งข้อความ (ด้านบนซ้าย, กึ่งกลางด้านบนขวา, ซ้าย, กลาง ... ), คำนำหน้าและ postfix, ข้อความเงาข้อความและอื่น ๆ ซึ่งแตกต่างจากแถบความคืบหน้ามาตรฐาน TJPPProgressBar ยังช่วยให้คุณสามารถตั้งค่าสีที่แสดงเมื่อส่วนประกอบถูกปิดใช้งาน
Endmarker - รูปสี่เหลี่ยมผืนผ้าที่ปลายแถบความคืบหน้า
TextDisplayMode - ตำแหน่ง, เปอร์เซ็นต์, ตำแหน่งในพิกเซล, คำบรรยายหรือไม่มี
ขั้นตอน: กลางและสุดท้าย - คุณสามารถแก้ไขสีได้ที่นี่
ProgressBarvisible - ที่นี่คุณสามารถบล็อกแถบความคืบหน้าจากการแสดงและแสดงข้อความเท่านั้น
anchoredControls
คุณสามารถตรึงการควบคุมภายนอกหนึ่งครั้ง (เช่น tbutton, tedit) กับแต่ละขอบของส่วนประกอบ
BoundLabel - ฉลากภายใน
UpdatePositionIfDisabled - ที่นี่คุณสามารถตัดสินใจได้ว่าจะอัปเดตแถบความคืบหน้าหรือไม่เมื่อส่วนประกอบถูกปิดใช้งาน
onprogresschanged
ทริกเกอร์เมื่อตำแหน่งปัจจุบันเปลี่ยนไป คุณสามารถดำเนินการเพิ่มเติมได้ที่นี่
งีบหลับ
ปัจจุบัน สำหรับ Delphi เท่านั้น
ส่วนประกอบคำใบ้ HTML ที่มีน้ำหนักเบาสำหรับ Delphi (ใน Lazarus มันรวบรวม แต่ไม่ทำงาน)

ส่วนประกอบนี้ถูกสร้างขึ้นโดยการรวมสองหน่วย Pascal:
tflathintunit.pas จากแพ็คเกจแฟลต
https://github.com/jackdp/flatstyle/blob/master/source/tflathintunit.pas
ใบอนุญาต: ฟรี (ไม่มีข้อมูลเพิ่มเติม)
hthint.pas จากแพ็คเกจ jvcl https://github.com/project-jedi/jvcl/blob/master/jvcl/install/jvclinstall/helpers/hthint.pas
ใบอนุญาต: MPL 1.1
ใบอนุญาตสำหรับการแก้ไขของฉัน: ไม่มีใบอนุญาต (โดเมนสาธารณะ)
TJPPHTMLHINT ไม่ใช่ส่วนประกอบ HTML ที่มีคุณสมบัติเต็มรูปแบบ นี่คือส่วนประกอบที่มีน้ำหนักเบาและ ง่ายมาก พร้อมรองรับแท็ก HTML เพียงไม่กี่ตัวนอกจากนี้ยังมีไวยากรณ์ที่ผิดปกติเล็กน้อย
แท็กที่รองรับ:
B - <b>bold text</b>
ฉัน - <i>italic</i>
คุณ - <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 หรือ Appearance.LightModeColors Palette
ตัวอย่าง: <c:mclDarkBlue><bg:mclLightGray>dark blue text on light gray background</bg></c>
เอนทิตี HTML: ดูฟังก์ ReplaceHtmlEntities ในไฟล์ JPP.HtmlHint.pas
TCustomLabel DESCENDANT
คุณสมบัติเพิ่มเติม: AnchoredControls, Tagext
ขึ้นอยู่กับ TJppLabel
คุณสมบัติเพิ่มเติม: เงาสำหรับสถานะที่เปิดใช้งานและปิดใช้งานสีคำบรรยายภาพปิดใช้งานเส้นขอบ (สีขนาดสไตล์) การขยาย

TCustomLabel DESCENDANT
ฉลากด้วยฟอนต์เพิ่มเติม ( TFont ) สำหรับ 5 สถานะ: ปกติ , เยี่ยมชม-ปกติ , ร้อน , เข้าชม และ ปิดการใช้งาน
หลังจากคลิกแล้วมันสามารถเปิด URL ในเบราว์เซอร์เริ่มต้นดำเนินการไฟล์ด้วย ShellExecute หรือดำเนินการจาก TactionList
ข้อมูลเพิ่มเติม ...
ส่วนประกอบฉลากประกอบด้วย 3 ส่วน:
Caption ภาพ)RightCaption )ขึ้นอยู่กับ tpegtoplinelabel จาก ส่วนประกอบทั่วไปของ Pegtop ที่เขียนโดย Jens Gruschel (http://www.pegtop.net/delphi/components/common/index.htm)



การดัดแปลงของฉัน:
Annex เปลี่ยนชื่อเป็น RightCaptionJpp RightCaption มีตัวอักษรพื้นหลังและสีของตัวเอง RightCaption สามารถวางตำแหน่งในแนวตั้งได้โดย RightCaptionPosDeltaY เส้นสามารถวางตำแหน่งในแนวตั้งโดย LinePosDeltaY ความยาวของเส้นสามารถแก้ไขได้โดย LineSizeDeltaX1 และ LineSizeDeltaX2 หาก AutoHeight = True ความสูงของส่วนประกอบจะถูกคำนวณและนำไปใช้โดยอัตโนมัติ
องค์ประกอบฉลากอย่างง่ายประกอบด้วย 2 คำอธิบาย: ซ้าย ( Caption คุณสมบัติ) และขวา (คุณสมบัติ RightCaption ของคุณสมบัติ)

ช่องว่างระหว่างคำอธิบายภาพสามารถแก้ไขได้โดยใช้คุณสมบัติ Spacing ขึ้นอยู่กับ tjppdoublelinelabel
ส่วนประกอบแก้ไขที่ได้มาจาก TCustomEdit

คุณสมบัติเพิ่มเติม:
AnchoredControlsAppearance - ที่นี่คุณสามารถตั้งค่าพื้นหลังและสีแบบอักษรสำหรับสี่สถานะ: ปกติร้อนโฟกัสโฟกัสปิดใช้งานBoundLabel - ฉลากภายในFlash - FlashColor , FlashCount , FlashInterval หากต้องการเปิดการกระพริบให้โทรหาวิธี FlashBackground ฟังก์ชั่นนี้สามารถใช้เพื่อระบุผู้ใช้ของค่าที่ไม่ถูกต้องShowLabel - แสดง / ซ่อนฉลากที่ถูกผูกไว้TagExt - แท็กขยาย ปัจจุบัน สำหรับ Delphi เท่านั้น
คล้ายกับ TJppEdit แต่ยังมีความสามารถในการกำหนดสีของเส้นขอบ
วิธีการวาดเส้นขอบขึ้นอยู่กับ TFlatEdit จากแพ็คเกจ แฟลต https://sourceforge.net/projects/flatstyle/

TCustomMemo Descendant
คุณสมบัติเพิ่มเติม:
AnchoredControlsAppearance - ที่นี่คุณสามารถตั้งค่าพื้นหลังและสีแบบอักษรสำหรับสี่สถานะ: ปกติร้อนโฟกัสโฟกัสปิดใช้งานBoundLabel - ฉลากภายในFlash - FlashColor , FlashCount , FlashInterval หากต้องการเปิดการกระพริบให้โทรหาวิธี FlashBackground ฟังก์ชั่นนี้สามารถใช้เพื่อระบุผู้ใช้ของค่าที่ไม่ถูกต้องShowLabel - แสดง / ซ่อนฉลากที่ถูกผูกไว้Text - ง่ายต่อการเข้าถึง Lines.TextTagExt - แท็กขยาย คล้ายกับ TJppMemo แต่ยังมีความสามารถในการกำหนดสีของเส้นขอบ
วิธีการวาดเส้นขอบขึ้นอยู่กับ TFlatMemo จากแพ็คเกจ แฟลต https://sourceforge.net/projects/flatstyle/

TCheckBox มาตรฐานที่รองรับ TagExt และ AnchoredControls
TRadioButton มาตรฐานที่รองรับ TagExt และ AnchoredControls
TDateTimePicker มาตรฐานที่มีการรองรับ BoundLabel , TagExt และ AnchoredControls
Windows เท่านั้น
Lazarus และ Delphi X2 หรือใหม่กว่า
ตัวเลือกสไตล์ GDI+ Hatch ที่ปรับแต่งได้สูงพร้อม BoundLabel และ AnchoredControls

กล่องคอมโบที่ปรับแต่งได้สูงพร้อมรายการสไตล์แปรง

สไตล์ปัจจุบันสามารถอ่าน/ตั้งค่าได้โดยใช้คุณสมบัติ Selected
ชื่อการแสดงผลสไตล์แปรงสามารถเปลี่ยนได้ในตัวจัดการเหตุการณ์ OnGetDisplayName
TJPPBRUSHSTYLECOMBOBOX มีฉลากในตัว ( BoundLabel )
กล่องคอมโบที่ปรับแต่งได้สูงพร้อมรายการสไตล์ปากกา

สไตล์ปัจจุบันสามารถอ่าน/ตั้งค่าได้โดยใช้คุณสมบัติ Selected
ชื่อการแสดงผลสไตล์ปากกาสามารถเปลี่ยนได้ในตัวจัดการเหตุการณ์ OnGetDisplayName
TJPPPENSTYLECOMBOBOX มีฉลากในตัว ( BoundLabel )
องค์ประกอบ TTimer มาตรฐานที่มีคุณสมบัติและวิธีการเพิ่มเติมสองสามอย่าง:
RepeatCountLimit คุณสมบัติ ที่นี่คุณสามารถตั้งค่าช่วงเวลาที่ระบุไว้ในคุณสมบัติ Interval กี่ครั้ง ค่า 0 หมายถึงไม่มีขีด จำกัดCounter ทรัพย์สิน ทุกครั้งที่ช่วงเวลาที่ระบุในคุณสมบัติ Interval จะหมดอายุคุณสมบัติ Counter จะเพิ่มขึ้นโดย 1 เมื่อ Counter ถึงค่าของ RepeatCountLimit ตัวจับเวลาจะหยุดลงและตัวจัดการเหตุการณ์ OnRepeatCountLimitReached จะถูกเรียกใช้ (ถ้าได้รับมอบหมาย)ClearCounterOnStart หากตั้งค่าเป็น True แล้ววิธี Start จะรีเซ็ต CounterStart ชุด Enabled เป็น True หาก ClearCounterOnStart ถูกตั้งค่าเป็น True Start จะตั้งค่าคุณสมบัติ Counter เป็น 0Stop ตั้งค่า Enabled เป็น FalseOnRepeatCountLimitReached เหตุการณ์ - ถูกไล่ออกเมื่อ 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 ถูกบีบอัด
สามารถเพิ่มรูปภาพ PNG ใน ตัวตรวจสอบวัตถุ หรือในรหัสโดยใช้ AddPngImage , AddImageFromFile หรือ Items.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 คุณต้องติดตั้งแพ็คเกจต่อไปนี้ก่อน:
หากคุณติดตั้ง ส่วนประกอบ PNG โดยใช้ GetIt Package Manager คุณอาจต้องเปลี่ยนชื่อ PngComponents เป็น PngComponentsD ในไฟล์ jppack.dpk
ในโฟลเดอร์แพ็คเกจคุณสามารถค้นหาแพ็คเกจการติดตั้งสำหรับ Delphi ทั้งหมดจาก Delphi 2009 ถึง 10.4 ซิดนีย์ ไปที่โฟลเดอร์ย่อยด้วยชื่อ Delphi เวอร์ชันของคุณ (เช่น Delphi_XE7 สำหรับรุ่น XE7) และเปิดไฟล์ JPPack.dproj หรือ JPPack.dpk ใน ตัวจัดการโครงการ คลิกขวาที่ไฟล์ JPPack.bpl จากนั้นเลือก Install ในเมนูป๊อปอัป หลังจากเวลาสั้น ๆ ข้อความควรปรากฏข้อมูลเกี่ยวกับการติดตั้งแพ็คเกจที่ถูกต้องและด้วยรายการส่วนประกอบที่ติดตั้งใหม่ ส่วนประกอบทั้งหมดที่คุณสามารถค้นหาหน้า JPPACK ใน จานเครื่องมือ
นอกจากนี้คุณยังสามารถรวบรวมแพ็คเกจสำหรับเป้าหมาย Win64
หลังจากติดตั้งแพ็คเกจแล้วควรเพิ่มโฟลเดอร์ source ไปยัง เส้นทางไลบรารี :
Tools เมนู -> OptionsEnvironment Options -> Delphi Options -> Library; (Semicolon) และเส้นทางไปยังไดเรกทอรี source ก่อนอื่นให้ติดตั้งแพ็คเกจ jplib จาก https://github.com/jackdp/jplib
บน Windows ให้ติดตั้ง IgDiplusMod จาก https://github.com/jackdp/igdiplusmod
เปิดไฟล์แพ็คเกจ ( packagesLazarusjppacklcl.lpk ) ใน Lazarus IDE คลิกปุ่ม Compile จากนั้น Use -> Install และสร้าง IDE ใหม่ ส่วนประกอบทั้งหมดที่คุณสามารถค้นหาได้ในหน้า JPPACKLCL ใน จานสี
ติดตั้งแพ็คเกจ jplib จาก https://github.com/jackdp/jplib
บน Windows ให้ติดตั้ง IgDiplusMod จาก https://github.com/jackdp/igdiplusmod
เปิดไฟล์แพ็คเกจ ( packagesCodeTyphonjppacklcl.ctpkg ) ใน typhon ide คลิกปุ่ม Compile package (ปุ่ม 2-ND บนแถบเครื่องมือ) จากนั้นคลิกปุ่ม 3-RD เลือก Install และสร้าง IDE ใหม่ ส่วนประกอบทั้งหมดที่คุณสามารถค้นหาได้ในหน้า JPPACKLCL ใน จานสี
ใบอนุญาตสำหรับงานของฉัน: โดเมนสาธารณะ คุณสามารถทำได้กับรหัสของฉันสิ่งที่คุณต้องการโดยไม่มีข้อ จำกัด ใด ๆ
แต่ในบางหน่วยฉันใช้รหัสจากโครงการโอเพ่นซอร์สอื่น ๆ ดังนั้นคุณควรดูไฟล์ต้นฉบับ PAS และใบอนุญาตของผู้เขียนโครงการเหล่านี้สำหรับข้อมูลเพิ่มเติม