Коллекция компонентов VCL/LCL для Delphi 2009 - 11.0 Александрия и Лазарь
Jppack - это небольшая коллекция компонентов VCL для компонентов Delphi и LCL для Lazarus и Codetyphon.
Поддерживаемые версии Delphi: 2009 , 2010 , XE , XE2 , XE3 , XE4 , XE5 , XE6 , XE7 , XE8 , 10,0 Сиэтл , 10,1 Берлин , 10,2 Токио , 10,3 Рио , 10,4 Сидней , 11,0 Александрия .
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úlio Maurício Antunes Piao. Источники доступны по адресу https://sourceforge.net/projects/tcycomponents/ В исходных файлах, в которых я использую функции, написанные Júlio, я добавил соответствующую информацию со ссылкой на его страницу.
После долгих и ожесточенных сражений с различными кнопками из разных пакетов компонентов для Delphi (коммерческий и бесплатный) я наконец -то нашел те, которые правильно отображают файлы PNG - tpngbitbtn и tpngspeedbutton из пакета pngcomponents . У меня никогда не было проблем с ними, в отличие от многих, многих других. По этой причине, в реализации моих кнопок я решил полагаться на код из этого пакета.
Первоначальным автором пакета PNGComponents является Мартидж Сали ( www.thany.org ). Проект в настоящее время поддерживается Уве Раабе. Источники доступны по адресу https://github.com/uweraabe/pngcomponents
В папке 3-й части вы можете найти zip-файл с PngComponents ver. 1.4.1. Это последняя версия PNGComponents , доступных при написании этого документа, и он отлично работает с JPPACK .
2020.08.31 - Версия от GitHub тоже работает хорошо.
Каждый визуальный компонент в пакете JPPACK поддерживает привязку внешних компонентов, используя свойство AnchoredControls .
Вы можете закрепить внешние компоненты на любой край. При изменении размера или положения основного компонента положение компонентов привязки будет автоматически обновлено.

Большинство компонентов в пакете JPPACK имеют свойство TagExt . Здесь вы можете сохранить одно целочисленное значение ( IntValue ), string ( StrValue ), номер поплавки ( RealValue ), Pointer ( 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 ).
Эта панель отлично подходит для создания базовой компоновки пользовательского интерфейса.
Высоко настраиваемая складная панель на основе панели 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 , но при поддержке подкапления.

Эта кнопка очень похожа на TJppBasicPngButton , но она основана на TGraphicControl , поэтому она не занимается фокусом (у нее нет целенаправленного состояния).
TCustomComboBox потомки.
Дополнительные свойства:
AnchoredControlsBoundLabel - внутренняя этикетка.Flash - опции мигания. Чтобы включить мигание, вызовите метод FlashBackground в коде.ShowLabel - Show / Hide Bound Label.TagExt TCustomComboBoxEx Потомки.
Исправлена ошибка высоты предмета в старых версиях Delphi.

Дополнительные свойства:
AnchoredControlsBoundLabel - внутренняя этикетка.Flash - опции мигания. Чтобы включить мигание, вызовите метод FlashBackground в коде.ShowLabel - Show / Hide Bound Label.TagExtItemIndexВ настоящее время только для Delphi .
Высоко настраиваемый Combobox на основе TFlatComboBox
https://github.com/jackdp/flatstyle/blob/master/source/tflatcomboboxunit.pas

Высоко настраиваемый Combobox отображает список предопределенных и/или пользовательских цветов.




TJppColorComboBox имеет 4 встроенных компонента: одна метка и 3 кнопки для изменения, копирования и вставки цвета.
Цвета могут отображаться в трех форматах: RGB Int (например, 051,102,255), HEX RGB (например, #3366FF) и BGR HEX (например, $ 00FF6633). Если вам нужно отобразить цвет в другом формате, вы можете сделать это в обработчике событий OnGetColorStrValue .
В дополнение к стандартным элементам (отображение цвета) вы также можете добавить разделители и элементы Changecolor .
Каждый цвет, выбранный пользователем, но еще не в списке цветов, может быть автоматически добавлен в конец или верхнюю часть списка. Благодаря этому пользователь вашего приложения имеет доступ к истории ранее выбранных цветов.
Больше информации ...
Высоко настраиваемый Listbox , отображающий список предопределенных и/или пользовательских цветов.


Это очень похоже на 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
Запускается при изменении текущей позиции. Вы можете выполнить некоторые дополнительные действия здесь.
Tagext
В настоящее время только для Delphi .
Легкий компонент HTML HINT для Delphi (в 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/install/jvclinstall/helpers/hthint.pas
Лицензия: MPL 1.1
Лицензия на мои модификации: без лицензии (общественный домен)
Tjpphtmlhint не является полнофункциональным HTML-компонентом. Это легкий и очень простой компонент с поддержкой только нескольких метров HTML, кроме того, с немного необычным синтаксисом.
Поддерживаемые теги:
B - <b>bold text</b>
Я - <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 Entines: см. Функцию ReplaceHtmlEntities в файле JPP.HtmlHint.pas .
TCustomLabel Потомок.
Дополнительные свойства: AnchoredControls, Tagext.
На основе TJppLabel .
Дополнительные свойства: тень для включенного и отключенного состояния, отключенный цвет подписи, граница (цвет, размер, стиль), прокладка.

TCustomLabel Потомок.
Метка с дополнительными шрифтами ( TFont ) для 5 состояний: нормальный , посещаемый нормальный , горячий , посещаемый и отключен .
После нажатия он может открыть URL -адрес в браузере по умолчанию, выполнить файл с ShellExecute или выполнить действие из TactionList .
Больше информации ...
Компонент метки, состоящий из 3 частей:
Caption недвижимости)RightCaption )Основано на TpegtoplineLabel из Pegtop Common Components, написанных 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 - Show / Hide Bound Label.TagExt - расширенный тег. В настоящее время только для Delphi .
Похоже на TJppEdit , но также имеет возможность определять пограничные цвета.
Методы рисования границы, основанные на TFlatEdit из пакета Flatstyle https://sourceforge.net/projects/flatstyle/

Потомок TCustomMemo .
Дополнительные свойства:
AnchoredControlsAppearance - Здесь вы можете установить фон и цвет шрифта для четырех состояний: нормальный, горячий, сфокусированный, отключенный.BoundLabel - внутренняя этикеткаFlash - FlashColor , FlashCount , FlashInterval . Чтобы включить мигание, вызовите метод FlashBackground . Эта функция может использоваться для указания пользователя неправильного значения.ShowLabel - Show / Hide Bound Label.Text - Легкий доступ к Lines.TextTagExt - расширенный тег. Похоже на TJppMemo , но также имеет возможность определять пограничные цвета.
Методы рисования границы, основанные на TFlatMemo из пакета Flatstyle https://sourceforge.net/projects/flatstyle/

Стандартный TCheckBox с поддержкой TagExt и AnchoredControls .
Стандартная TRadioButton с поддержкой TagExt и AnchoredControls .
Стандартный TDateTimePicker с поддержкой BoundLabel , TagExt и AnchoredControls .
Только окна
Lazarus и Delphi X2 или более новее.
Высоко настраиваемый селектор стиля GDI+ хэтч с BoundLabel и AnchoredControls .

Высоко настраиваемая комбинированная коробка со списком стилей кистей.

Текущий стиль можно прочитать/установить с помощью Selected свойства.
Название дисплея в стиле кисти можно изменить в обработчике событий OnGetDisplayName .
Tjppbrushstylecombobox имеет встроенную метку ( BoundLabel ).
Высоко настраиваемая комбинированная коробка со списком стилей ручки.

Текущий стиль можно прочитать/установить с помощью Selected свойства.
Название отображения в стиле ручки можно изменить в обработчике событий OnGetDisplayName .
TJPPPENSTYLECOMBOBOX имеет встроенную метку ( BoundLabel ).
Стандартный компонент TTimer с несколькими дополнительными свойствами и методами:
RepeatCountLimit свойство. Здесь вы можете установить, сколько раз можно достичь интервал времени, указанный в Interval свойстве. Значение 0 означает отсутствие предела.Counter собственность. Каждый раз, когда истекает интервал времени, указанный в Interval свойстве, свойство Counter увеличивается на 1. Когда Counter достигает значения RepeatCountLimit , таймер останавливается и запускается обработчик событий OnRepeatCountLimitReached (если назначен).ClearCounterOnStart Property. Если устанавливается на 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. Может быть связан с внешним компонентом TIMAGE .
В отличие от 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 , вам, вероятно, придется изменить имя PngComponents на PngComponentsD в файле jppack.dpk .
В папке Packages вы можете найти установки пакеты для всех версий Delphi от Delphi 2009 до 10.4 Sydney . Перейдите в подпапку с именем вашей версии Delphi (например, Delphi_XE7 для версии xe7) и откройте файл JPPack.dproj или JPPack.dpk . В менеджере проекта щелкните правой кнопкой мыши файл JPPack.bpl , затем выберите Install всплывающее меню». Через короткое время сообщение должно отображать информацию о правильной установке пакета и со списком недавно установленных компонентов. Все компоненты вы можете найти на странице JPPACK в палитре инструментов .
Вы также можете собрать пакет для Win64 Target.
После установки пакета лучше всего добавить папку source в путь библиотеки :
Tools меню» -> Options .Environment Options -> Delphi Options -> Library .; (полуколон) и путь к 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 ) в IDE Typhon. Нажмите кнопку Compile package (2-ND-кнопку на панели инструментов), затем нажмите кнопку 3-й кнопки, выберите Install и перестроить IDE». Все компоненты вы можете найти на странице Jppacklcl в палитре компонентов .
Лицензия на мою работу: общественное достояние. Вы можете делать с моим кодом, что бы вы ни хотите, без каких -либо ограничений.
Но в некоторых подразделениях я использую код из других проектов с открытым исходным кодом, поэтому вам следует посмотреть на исходные файлы PAS и лицензию авторов этих проектов для получения дополнительной информации.