Eye-Candy Controls/ru: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Eye-Candy Controls/ru
| Old | New | Line | |
|---|---|---|---|
| 1 | + | **Eye Candy Controls** (сокращенно ECControls или EC-Controls) - набор визуальных элементов управления, написанных для Lazarus. Их дизайн основан на Themes, поэтому они выглядят очень нативными везде, независимо от того, какой виджет вы используете. | |
| 2 | + | ||
| 3 | + | Каждый релиз аннонсируется на форуме Lazarus в разделе Third Party Announcements(Сторонние объявления). | |
| 4 | + | ||
| 5 | + | Всегда есть прикрепленные файлы `README.txt` (список всех известных проблем) и `CHANGELOG.txt` (список всех изменений из предыдущего выпуска). | |
| 6 | + | ||
| 7 | + | Лицензия | |
| 8 | + | ||
| 9 | + | GNU Lesser General Public License 2.0 с исключением ссылок (a.k.a. Модифицированный LGPL). Каждый файл EC-Controls содержит заголовок лицензии. Кроме того, файлы `COPYING.modifiedLGPL.txt` и `COPYING.LGPL.txt` связаны с каждым архивом. | |
| 10 | + | ||
| 11 | + | Авторство | |
| 12 | + | ||
| 13 | + | Все компоненты написаны [Blaazen](https://forum.lazarus.freepascal.org/index.php?action=profile;u=39483). Уведомление об авторском праве и настоящее имя упоминаются в заголовке каждого блока. Вы можете связаться с автором на форуме Lazarus (псевдоним: Blaazen) в любой теме о EC-Controls (email author). Если вы авторизованы на форуме, вы можете получить адрес автора электронной почты или отправить ему личное сообщение. | |
| 14 | + | ||
| 15 | + | Credits: Выравнивание составных компонентов (TECSpinEdit, TECSpinPosition, TECEditBtn, TECColorBtn, TECComboBtn, TECColorCombo) основано на идее Flávio, опубликованной в списке рассылки [1](http://lists.lazarus.freepascal.org/pipermail/lazarus/2013-March/079971.html) | |
| 16 | + | ||
| 17 | + | Класс [[TBaseScrollControl]] основан на [TScrollingControl](https://github.com/theo222/lazarus-thumbviewer/blob/master/scrollingcontrol.pas) от Theo. | |
| 18 | + | ||
| 19 | + | Загрузка | |
| 20 | + | ||
| 21 | + | - Последний релиз: 0.9.44 на 1 июня 2020 (включая demo); UltraShare не работает. Этот выпуск был протестирован с Lazarus 2.1 | |
| 22 | + | - Предыдущий релиз: 0.9.30 на 1 марта 2018 (включая demo); UltraShare не работает. Этот выпуск был протестирован с Lazarus 1.9 и 1.8 | |
| 23 | + | - Предыдущий релиз: 0.9.24.6 на 24 октября 2017 (без demo); TECGrid - *Release candidate*; UltraShare не работает. | |
| 24 | + | - Предыдущий релиз: 0.9.20 на 31 июля 2017 (без demo) | |
| 25 | + | - Предыдущий релиз: 0.9.6 на 24 мая 2016 (включая demo) | |
| 26 | + | - SourceForge: <https://sourceforge.net/projects/eccontrols/> | |
| 27 | + | - UltraShare: <http://ultrashare.net/hosting/fl/8c275ee97f> (прямая ссылка на 0.9.6, выпущенный 24.05.2016; включая demo) | |
| 28 | + | - UltraShare: <http://ultrashare.net/hosting/fl/a8838060fb> (прямая ссылка на 0.9.4.16, выпущенный 9.04.2016; без demos) | |
| 29 | + | - UltraShare: <http://ultrashare.net/hosting/fl/f523032cb4> (прямая ссылка на 0.9.4.14, выпущенный 6.04.2016; без demo) | |
| 30 | + | ||
| 31 | + | UltraShare - альтернатива, потому что SourceForge заблокирован в некоторых странах. О новых выпусках всегда объявляется в разделе Third Party на форуме Lazarus. | |
| 32 | + | ||
| 33 | + | Установка в Lazarus | |
| 34 | + | ||
| 35 | + | Открываем меню `Package => Open package File (*.lpk) ...` и выбираем файл `eccontrols.lpk`. Щелкаем `Compile` (ждем, пока закончится компиляция), затем выбираем `Use >> Install`. Lazarus спросит "Do you want to rebuild Lazarus now?"(Хотите пересобрать Lazarus сейчас?). Жмем `Yes`, чтобы установить пакет. | |
| 36 | + | ||
| 37 | + | ## Компоненты | |
| 38 | + | ||
| 39 | + | EC-Controls устанавливаются на вкладку EC-C палитры компонентов Lazarus. | |
| 40 | + | ||
| 41 | + | <figure> | |
| 42 | + | <img src="ecpalette2.png" title="ecpalette2.png" /> | |
| 43 | + | <figcaption>ecpalette2.png</figcaption> | |
| 44 | + | </figure> | |
| 45 | + | ||
| 46 | + | Новые изображения (начиная с версии 0.9.24.6). Файлы ресурсов (* .lrs) также содержат изображения _150 и _200 для настольных компьютеров с высоким разрешением. | |
| 47 | + | ||
| 48 | + | <figure> | |
| 49 | + | <img src="eccpalette4.png" title="eccpalette4.png" /> | |
| 50 | + | <figcaption>eccpalette4.png</figcaption> | |
| 51 | + | </figure> | |
| 52 | + | ||
| 53 | + | Компоненты ниже перечислены в порядке их появления на палитре компонентов. Все скриншоты взяты из KDE4 или Plasma5 (Lazarus + Qt). | |
| 54 | + | ||
| 55 | + | ### Визуальные | |
| 56 | + | ||
| 57 | + | #### TECBevel | |
| 58 | + | ||
| 59 | + | Альтернатива [[TBevel]]. | |
| 60 | + | ||
| 61 | + | <figure> | |
| 62 | + | <img src="tecbevel.png" title="tecbevel.png" /> | |
| 63 | + | <figcaption>tecbevel.png</figcaption> | |
| 64 | + | </figure> | |
| 65 | + | ||
| 66 | + | [[TECBevel]] может рисовать непрямоугольные формы или непрямые линии. | |
| 67 | + | ||
| 68 | + | #### TECLink | |
| 69 | + | ||
| 70 | + | [[TECLink]] предоставляет веб-ссылку. Эти же ссылки хорошо известны из веб-браузеров. | |
| 71 | + | ||
| 72 | + | <figure> | |
| 73 | + | <img src="teclink.png" title="teclink.png" /> | |
| 74 | + | <figcaption>teclink.png</figcaption> | |
| 75 | + | </figure> | |
| 76 | + | ||
| 77 | + | Метка, которая меняет свой вид при наведении на нее курсора мыши (по умолчанию становится подчеркнутой и синей). | |
| 78 | + | ||
| 79 | + | Она может открывать URL-адрес в браузере по умолчанию, почтовом клиенте по умолчанию, файл в связанном приложении или просто запускать событие OnClick. | |
| 80 | + | ||
| 81 | + | #### TECImageMenu | |
| 82 | + | ||
| 83 | + | Вертикальное меню с изображениями. Подобный компонент часто используется в приложениях KDE4 и Outlook97. | |
| 84 | + | ||
| 85 | + | <figure> | |
| 86 | + | <img src="tecimagemenu.png" title="tecimagemenu.png" /> | |
| 87 | + | <figcaption>tecimagemenu.png</figcaption> | |
| 88 | + | </figure> | |
| 89 | + | ||
| 90 | + | [[TECImageMenu]] может находиться в фокусе, и к нему можно перейти с помощью клавиши Tab (когда `TabStop = True`, что по умолчанию). Может управляться мышью, клавиатурой или кодом. | |
| 91 | + | ||
| 92 | + | Мышь | |
| 93 | + | ||
| 94 | + | - Щелчок левой кнопкой мыши по пункту меню эквивалентен нажатию по нему. | |
| 95 | + | - Щелчок средней или правой кнопкой мыши выбирает элемент, но не нажимает его. | |
| 96 | + | - Колесико мыши перемещает выделение и не нажимает его. | |
| 97 | + | ||
| 98 | + | Клавиатура | |
| 99 | + | ||
| 100 | + | - Пробел и Enter: нажимает выбранный пункт меню. | |
| 101 | + | - Arrow Up, Arrow Down, Page Up, Page Down, Home и End: перемещают выделение, но не нажимают на пункт меню. | |
| 102 | + | - Быстрые клавиши (Alt + Key) выбирают и нажимают соответствующий пункт (нет необходимости фокусировать меню) .. | |
| 103 | + | ||
| 104 | + | #### TECSpinBtns | |
| 105 | + | ||
| 106 | + | Продвинутая альтернатива [[TUpDown]]. | |
| 107 | + | ||
| 108 | + | <figure> | |
| 109 | + | <img src="tecspinbtns.png" title="tecspinbtns.png" /> | |
| 110 | + | <figcaption>tecspinbtns.png</figcaption> | |
| 111 | + | </figure> | |
| 112 | + | ||
| 113 | + | [[TECSpinBtns]] основан на переменных двойной точности. | |
| 114 | + | ||
| 115 | + | TECSpinBtns не имеет фокуса. Управляется мышью или кодом. | |
| 116 | + | ||
| 117 | + | Мышь | |
| 118 | + | ||
| 119 | + | TECSpinBtns состоит из 9 маленьких кнопок. | |
| 120 | + | ||
| 121 | + | - Щелчок левой кнопкой мыши(ЛКМ) на BtnMin, BtnBigDec, BtnDec, BtnMiddle, BtnMenu, BtnInc, BtnBigInc и BtnMax задает `Value` к `Min`, уменьшает `Value` на величину `PageSize`, уменьшает `Value` на величину `Increment`, задает `Value` к `Middle`, запускает событие `OnMenuClick`, увеличивает `Value` на величину `Increment`, увеличивает `Value` на величину `PageSize` и задает `Value` к `Max` соответственно. | |
| 122 | + | - Щелчок средней кнопкой мыши(СКМ) задает `Value` к `Middle` или запускает событие `OnMenuClick` - зависит от свойства `MenuControl`. Для перетаскивания также могут быть использованы другие кнопки мыши, зависит от свойства `DragControl`. Перетаскивание в основном зависит от свойств: `DragOrientation`, `MouseIncrementX`, `MouseIncrementY`, `MouseStepPixelsX`, `MouseStepPixelsY` и `Reversed`. | |
| 123 | + | ||
| 124 | + | Программно | |
| 125 | + | ||
| 126 | + | Просто присвоив любое значение с плавающей точкой свойству `Value`: | |
| 127 | + | ||
| 128 | + | ``` pascal | |
| 129 | + | Value := 10.5; | |
| 130 | + | ``` | |
| 131 | + | ||
| 132 | + | Если значение выходит за пределы диапазона (меньше `Min` или больше `Max`), тогда `Value` будет равно `Min` или `Max`. | |
| 133 | + | ||
| 134 | + | Приоритет отрисовки: | |
| 135 | + | ||
| 136 | + | 1. Наивысший приоритет имеет событие `OnDrawGlyph`. | |
| 137 | + | 2. Второй - `Caption`. Он должен быть коротким (один или два символа). | |
| 138 | + | 3. Третий - изображение из `Images`. Изображения должны быть присвоены, а `ImageIndex` должен быть больше или равен нулю, и меньше, чем `Images.Count` | |
| 139 | + | 4. Если `OnDrawGlyph` не назначен, `Caption` является пустой строкой, а `ImageIndex` равен -1, тогда используется встроенный глиф. Есть пять наборов стилей, их можно выбрать с помощью свойства `GlyphStyle`. | |
| 140 | + | ||
| 141 | + | #### TECSpinEdit | |
| 142 | + | ||
| 143 | + | Продвинутая альтернатива TSpinEdit и TFloatSpinEdit. Это [[TEdit]], соединенный с TECSpinBtns. | |
| 144 | + | ||
| 145 | + | <figure> | |
| 146 | + | <img src="tecspinedit.png" title="tecspinedit.png" /> | |
| 147 | + | <figcaption>tecspinedit.png</figcaption> | |
| 148 | + | </figure> | |
| 149 | + | ||
| 150 | + | [[TECSpinEdit]] может иметь фокус, и к нему можно перейти с помощью клавиши Tab (когда `TabStop = True`, что по умолчанию). Может управляться мышью, клавиатурой или кодом. | |
| 151 | + | ||
| 152 | + | Мышь | |
| 153 | + | ||
| 154 | + | См. [[Eye-Candy Controls/ru|TECSpinBtns]]. | |
| 155 | + | ||
| 156 | + | Клавиатура | |
| 157 | + | ||
| 158 | + | (строка редактирования должна быть в фокусе) | |
| 159 | + | ||
| 160 | + | Текстовое значение можно ввести непосредственно в строку редактирования. Если введенное значение меньше `TECSpinBtnsPlus.MinInEdit` или больше `TECSpinBtnsPlus.MaxInEdit`, тогда значение будет изменено, чтобы соответствовать этим границам. Изменение значения выполняется в событии `OnEditingDone`. | |
| 161 | + | ||
| 162 | + | - Arrow Up/Down "щелкают" по BtnInc/BtnDec*. | |
| 163 | + | - PgUp/PgDn "щелкают" по BtnBigInc/BtnBigDec*. | |
| 164 | + | - Ctrl + Home/End "щелкают" по BtnMax/BtnMin*. | |
| 165 | + | - Ctrl + Space "щелкают" по BtnMiddle. | |
| 166 | + | - Ctrl + Enter "щелкают" по BtnMenu. | |
| 167 | + | ||
| 168 | + | *) справедливо для `Reversed = False`. `Reversed = True` делает наоборот. | |
| 169 | + | ||
| 170 | + | Программно | |
| 171 | + | ||
| 172 | + | Простое присвоение любого значения с плавающей точкой свойству `Value`: | |
| 173 | + | ||
| 174 | + | `Value := 10.5;` | |
| 175 | + | ||
| 176 | + | Если значение выходит за пределы диапазона (меньше `Min` или больше `Max`), тогда `Value` будет соответственно `Min` или `Max`. | |
| 177 | + | ||
| 178 | + | #### TECSwitch | |
| 179 | + | ||
| 180 | + | Альтернатива TCheckBox. Аналогичный компонент существует в GTk3. | |
| 181 | + | ||
| 182 | + | <figure> | |
| 183 | + | <img src="tecswitch.png" title="tecswitch.png" /> | |
| 184 | + | <figcaption>tecswitch.png</figcaption> | |
| 185 | + | </figure> | |
| 186 | + | ||
| 187 | + | [[TECSwitch]] может иметь фокус, и к нему можно перейти с помощью клавиши Tab (когда `TabStop = True`, что по умолчанию). Может управляться мышью, клавиатурой или кодом. | |
| 188 | + | ||
| 189 | + | Мышь | |
| 190 | + | ||
| 191 | + | - Щелчок левой кнопкой мыши(ЛКМ) на области переключателя (вне кнопки) изменит `State`*. | |
| 192 | + | - Щелчок левой кнопкой мыши(ЛКМ) и удержание ее нажатой на кнопке захватит курсор мыши, и кнопку можно будет перемещать, даже если курсор мыши покинет область переключателя. | |
| 193 | + | ||
| 194 | + | Клавиатура | |
| 195 | + | ||
| 196 | + | - Пробел или Enter изменяют `State`* (только если переключатель в фокусе). | |
| 197 | + | - Быстрые клавиши (Alt + Key) изменяют `State`* (нет необходимости перемещать фокус на переключатель). | |
| 198 | + | ||
| 199 | + | Программно | |
| 200 | + | ||
| 201 | + | Простое присвоение любого значения свойствам `State`* или `Checked`: | |
| 202 | + | ||
| 203 | + | `Checked := True; //False`\ | |
| 204 | + | `State := cbChecked; //cbGrayed, cbUnchecked` | |
| 205 | + | ||
| 206 | + | *) Свойство `State` всегда изменяет значение от `checked` к `unchecked`, от `grayed` к `unchecked` или от `unchecked` к `checked`. | |
| 207 | + | ||
| 208 | + | #### TECSpeedBtn | |
| 209 | + | ||
| 210 | + | Кнопка с некоторыми расширенными функциями и встроенными глифами. Альтернатива TSpeedButton и TToggleBox. | |
| 211 | + | ||
| 212 | + | <figure> | |
| 213 | + | <img src="tecspeedbtn.png" title="tecspeedbtn.png" /> | |
| 214 | + | <figcaption>tecspeedbtn.png</figcaption> | |
| 215 | + | </figure> | |
| 216 | + | ||
| 217 | + | [[TECSpeedBtn]] не имеет фокуса. | |
| 218 | + | ||
| 219 | + | Особенности и отличия от [[TSpeedButton]]: | |
| 220 | + | ||
| 221 | + | - TSpeedButton имеет свойство `Glyph: TBitmap`. TECSpeedBtn вместо этого имеет свойства `ImageIndex: Integer` и `Images: `[[TImageList]]. | |
| 222 | + | - TECSpeedBtn имеет свойство `Delay` и встроенный таймер. Поэтому она может работать как кнопка задержки (Delay\>0) или как переключатель (Delay\<0). | |
| 223 | + | - TECSpeedBtn имеет более 80 встроенных глифов (нарисованных с помощью помощника [[TCanvas]]). Глифы могут быть разными для состояния checked и unchecked. | |
| 224 | + | - Подобно TSpeedButton, TECSpeedBtn имеет свойства `GroupIndex`, `Checked` и `AllowAllUp`, поэтому кнопки можно сгруппировать в радиогруппу. | |
| 225 | + | - TECSpeedBtn не может получать фокус, но может быть нажата быстрой клавишей (Alt + \[подчеркнутая клавиша\]). | |
| 226 | + | - TECSpeedBtn также может быть связана с [[TAction]]. | |
| 227 | + | ||
| 228 | + | Приоритеты отрисовки: | |
| 229 | + | ||
| 230 | + | 1. Наивысший приоритет имеет событие `OnDrawGlyph`. | |
| 231 | + | 2. Второй - `Caption` и изображение из `Images`. Изображения должны быть присвоены, и хотя бы одно из `ImageIndex` и `ImageIndexChecked` должно быть больше или равно нулю и меньше, чем `Images.Count`. | |
| 232 | + | 3. Когда событие `OnDrawGlyph` не назначено и оба свойства `ImageIndex` и `ImageIndexChecked` имеют значение -1, то используется встроенный глиф (свойства `GlyphDesign` и `GlyphDesignChecked`). Если `ImageIndex` корректен, `Image` и `ImageIndexChecked` имеет значение -1 или только `GlyphDesign` является некоторым глифом, а `GlyphDesignChecked` имеет значение `egdNone`, то `ImageIndex` или `GlyphDesign` также используются для состояния проверки (и наоборот). | |
| 233 | + | ||
| 234 | + | #### TECBitBtn | |
| 235 | + | ||
| 236 | + | То же, что и TECSpeedBtn, но производное от TCustomControl, поэтому может иметь фокус. Альтернатива TBitBtn и TToggleBox. | |
| 237 | + | ||
| 238 | + | <figure> | |
| 239 | + | <img src="tecbitbtn.png" title="tecbitbtn.png" /> | |
| 240 | + | <figcaption>tecbitbtn.png</figcaption> | |
| 241 | + | </figure> | |
| 242 | + | ||
| 243 | + | #### TECEditBtn | |
| 244 | + | ||
| 245 | + | Альтернатива [[TEditButton]]. Это [[TEdit]], объединенное с [[TECSpeedBtn]]. | |
| 246 | + | ||
| 247 | + | <figure> | |
| 248 | + | <img src="teceditbtn.png" title="teceditbtn.png" /> | |
| 249 | + | <figcaption>teceditbtn.png</figcaption> | |
| 250 | + | </figure> | |
| 251 | + | ||
| 252 | + | #### TECColorBtn | |
| 253 | + | ||
| 254 | + | Визуальный компонент для выбора цвета. При редактировании строки отображается цветовой код в различных форматах, а соответствующая кнопка запускает диалог выбора цвета. | |
| 255 | + | ||
| 256 | + | <figure> | |
| 257 | + | <img src="teccolorbtn.png" title="teccolorbtn.png" /> | |
| 258 | + | <figcaption>teccolorbtn.png</figcaption> | |
| 259 | + | </figure> | |
| 260 | + | ||
| 261 | + | Цвет глифа на кнопке соответствует цвету в строке редактирования. | |
| 262 | + | ||
| 263 | + | Свойство `Text` не является публикуемым (прим.перев: не видно в редакторе свойств). Если текст изменен с помощью кода, необходимо вызвать `EditingDone` для подтверждения изменения. | |
| 264 | + | ||
| 265 | + | #### TECComboBtn | |
| 266 | + | ||
| 267 | + | Поле со списком совмещенный с кнопкой. Это [[TComboBox]], соединенный с [[TECSpeedBtn]]. | |
| 268 | + | ||
| 269 | + | <figure> | |
| 270 | + | <img src="teccombobtn.png" title="teccombobtn.png" /> | |
| 271 | + | <figcaption>teccombobtn.png</figcaption> | |
| 272 | + | </figure> | |
| 273 | + | ||
| 274 | + | #### TECColorCombo | |
| 275 | + | ||
| 276 | + | Визуальный компонент для выбора цвета. Поле со списком содержит цвета в различных форматах, а соответствующая кнопка вызывает диалоговое окно цвета. | |
| 277 | + | ||
| 278 | + | <figure> | |
| 279 | + | <img src="teccolorcombo.png" title="teccolorcombo.png" /> | |
| 280 | + | <figcaption>teccolorcombo.png</figcaption> | |
| 281 | + | </figure> | |
| 282 | + | ||
| 283 | + | Цвет глифа на кнопке соответствует цвету, выбранному в поле со списком. | |
| 284 | + | ||
| 285 | + | Свойство `Text` не является публикуемым (прим.перев.: не видно в редакторе свойств). Если текст изменяется с помощью кода, необходимо вызвать `Validate` для подтверждения изменения. | |
| 286 | + | ||
| 287 | + | #### TECHeader | |
| 288 | + | ||
| 289 | + | Альтернатива [[THeader]]. | |
| 290 | + | ||
| 291 | + | <figure> | |
| 292 | + | <img src="techeader.png" title="techeader.png" /> | |
| 293 | + | <figcaption>techeader.png</figcaption> | |
| 294 | + | </figure> | |
| 295 | + | ||
| 296 | + | Основная особенность - возможность выравнивания столбцов по левому и правому краю одновременно. Этот компонент разработан для TECCheckListBox. | |
| 297 | + | ||
| 298 | + | #### TECCheckListBox | |
| 299 | + | ||
| 300 | + | Альтернатива [[TCheckListBox]]. | |
| 301 | + | ||
| 302 | + | <figure> | |
| 303 | + | <img src="tecchecklistbox.png" title="tecchecklistbox.png" /> | |
| 304 | + | <figcaption>tecchecklistbox.png</figcaption> | |
| 305 | + | </figure> | |
| 306 | + | ||
| 307 | + | Может иметь несколько столбцов с возможностью их пометки. | |
| 308 | + | ||
| 309 | + | В настоящее время свойство `Sorted` не поддерживается. | |
| 310 | + | ||
| 311 | + | #### TECSlider | |
| 312 | + | ||
| 313 | + | Продвинутая альтернатива [[TTrackBar]]. | |
| 314 | + | ||
| 315 | + | <figure> | |
| 316 | + | <img src="tecslider.png" title="tecslider.png" /> | |
| 317 | + | <figcaption>tecslider.png</figcaption> | |
| 318 | + | </figure> | |
| 319 | + | ||
| 320 | + | TECSlider может иметь фокус, и к нему можно перейти с помощью клавиши Tab (когда `TabStop = True`, что по умолчанию). | |
| 321 | + | ||
| 322 | + | TECSlider основан на переменных с двойной точностью. TECSlider можно управлять с помощью мыши, клавиатуры или кода. | |
| 323 | + | ||
| 324 | + | Мышь | |
| 325 | + | ||
| 326 | + | - Щелчок левой кнопкой мыши (ЛКМ) на области Slider (вне ползунка) переместит ползунок на величину `PageSize` (или меньше, если курсор мыши ближе). | |
| 327 | + | - Двойной щелчок ЛКМ или щелчок средней кнопкой (колесиком) мыши сразу переместит ползунок в позицию курсора мыши (или к Min/Max значению, если щелчок осуществляется за пределами области канавки и шкалы). | |
| 328 | + | - Щелчок ЛКМ на ползунке и удержание ее нажатой включит режим удержания мышью, что позволит перемещать ползунок, даже если курсор мыши покинет пределы слайдера. | |
| 329 | + | - Колесико мыши перемещает ползунок вверх/вниз независимо от свойства `Reversed`. В случае горизонтального расположения слайдера прокручивание ползунка вверх/вниз будет равносильно перемещению влево/вправо, независимо от свойства `Reversed`. | |
| 330 | + | ||
| 331 | + | Приращение составляет: | |
| 332 | + | ||
| 333 | + | - колесико мыши: `Increment`*`Mouse.WheelScrollLines` | |
| 334 | + | - Ctrl + колесико мыши: `Increment`. | |
| 335 | + | ||
| 336 | + | Клавиатура | |
| 337 | + | ||
| 338 | + | - Пробел: перемещает ползунок в середину канавки слайдера или в `ProgressMiddlePos` в случае `ProgressFromMiddle = True` | |
| 339 | + | - 0-9: перемещает ползунок в положение, которое является целочисленным множителем `PageSize` (т.е. 0, 10, ..., 90 для `PageSize = 10`). | |
| 340 | + | - PgUp: уменьшает `Position` на величину `PageSize` | |
| 341 | + | - PgUp: увеличивает `Position` на величину `PageSize` | |
| 342 | + | - Home: перемещает ползунок к `Min` | |
| 343 | + | - End: перемещает ползунок к `Max` | |
| 344 | + | - +: увеличивает `Position` на величину `Increment` | |
| 345 | + | - -: уменьшает `Position` на величину `Increment` | |
| 346 | + | - Ctrl + ArrowUp: уменьшает* `Position` на величину `Increment` | |
| 347 | + | - Ctrl + ArrowLeft: уменьшает* `Position` на величину `Increment` | |
| 348 | + | - Ctrl + ArrowDown: увеличивает* `Position` на величину `Increment` | |
| 349 | + | - Ctrl + ArrowRight: увеличивает* `Position` на величину `Increment` | |
| 350 | + | ||
| 351 | + | *) справедливо для `Reversed = False`. Если `Reversed = True`, работает наоборот. | |
| 352 | + | ||
| 353 | + | Программно | |
| 354 | + | ||
| 355 | + | Это можно сделать, просто присвоив свойству `Position` любое значение с плавающей точкой: | |
| 356 | + | ||
| 357 | + | `Position := 10.5; ` | |
| 358 | + | ||
| 359 | + | Если значение выходит за пределы допустимого диапазона (меньше `Min` или больше `Max`), тогда `Position` будет `Min` или `Max` соответственно. | |
| 360 | + | ||
| 361 | + | #### TECProgressBar | |
| 362 | + | ||
| 363 | + | Продвинутая альтернатива [[TProgressBar]]. | |
| 364 | + | ||
| 365 | + | <figure> | |
| 366 | + | <img src="tecprogressbar.png" title="tecprogressbar.png" /> | |
| 367 | + | <figcaption>tecprogressbar.png</figcaption> | |
| 368 | + | </figure> | |
| 369 | + | ||
| 370 | + | TECProgressBar основан на переменных с двойной точностью. TECProgressBar не может иметь фокус. Управлять им можно только с помощью кода. | |
| 371 | + | ||
| 372 | + | #### TECPositionBar | |
| 373 | + | ||
| 374 | + | Альтернатива [[TTrackBar]] или [[TScrollBar]]. Подобные компоненты используются в [Blender](https://www.blender.org) (программа для 3D-графики). | |
| 375 | + | ||
| 376 | + | <figure> | |
| 377 | + | <img src="tecpositionbar.png" title="tecpositionbar.png" /> | |
| 378 | + | <figcaption>tecpositionbar.png</figcaption> | |
| 379 | + | </figure> | |
| 380 | + | ||
| 381 | + | [[TECPositionBar]] не может иметь фокус и базируется на переменных с двойной точностью. TECPositionBar можно контролировать с помощью мыши или кода. | |
| 382 | + | ||
| 383 | + | Мышь | |
| 384 | + | ||
| 385 | + | - Щелчок левой кнопкой мыши(ЛКМ) сразу же устанавливает позицию в положение курсора мыши (или в положение Min/Max, если щелчок произведен вне области канавки или шкалы). | |
| 386 | + | - Щелчок средней кнопкой мыши(СКМ): перемещает позицию полоски прогрессбара в середину канавки или в позицию `ProgressMiddlePos` в случае `ProgressFromMiddle = True` | |
| 387 | + | - Щелчок левой кнопкой мыши(ЛКМ) в конце шкалы и удержание ЛКМ нажатой захватывает курсор мыши, что позволяет изменять позицию шкалы даже если курсор мыши покидает область компонента. | |
| 388 | + | - Перетаскивание позиции полоски прогрессбара мышью осуществляется на величину `MouseDragPixels` (нажатие только ЛКМ) или на величину `MouseDragPixelsFine` (Ctrl + ЛКМ). По умолчанию это значения 1 и 10, т.е. позиция полоски прогрессбара изменится на 1 пиксел, когда курсор мыши переместится на 1 пиксел (или на 10 пикселей в случае перетаскивания с нажатой клавишей Ctrl). | |
| 389 | + | - Колесико мыши перемещает ползунок вверх/вниз независимо от свойства `Reversed`. В случае горизонтального расположения слайдера прокрутка вверх/вниз перемещает ползунок влуво/вправо, опять же, независимо от свойства `Reversed`. | |
| 390 | + | ||
| 391 | + | Приращение составляет: | |
| 392 | + | ||
| 393 | + | - Колесико мыши: `MouseDragPixels`*`Mouse.WheelScrollLines` | |
| 394 | + | - Ctrl + колесико мыши: (`MouseDragPixels`/`MouseDragPixelsFine`)*`Mouse.WheelScrollLines` | |
| 395 | + | ||
| 396 | + | Программно | |
| 397 | + | ||
| 398 | + | Это можно сделать, просто присвоив любое значение с плавающей токой свойству `PositionSimply`: | |
| 399 | + | ||
| 400 | + | `Position := 10.5; ` | |
| 401 | + | ||
| 402 | + | Если значение выходит за пределы допустимого диапазона (меньше `Min` или больше `Max`), тогда `Position` будет `Min` или `Max` соответственно. | |
| 403 | + | ||
| 404 | + | #### TECSpinPosition | |
| 405 | + | ||
| 406 | + | Альтернатива [[TTrackBar]] или [[TScrollBar]]. Подобные компоненты используются в [Krita](https://krita.org/en) (программное обеспечение для 2D-графики). | |
| 407 | + | ||
| 408 | + | <figure> | |
| 409 | + | <img src="tecspinposition.png" title="tecspinposition.png" /> | |
| 410 | + | <figcaption>tecspinposition.png</figcaption> | |
| 411 | + | </figure> | |
| 412 | + | ||
| 413 | + | #### TECRuler | |
| 414 | + | ||
| 415 | + | Продвинутая линейка. | |
| 416 | + | ||
| 417 | + | <figure> | |
| 418 | + | <img src="tecruler.png" title="tecruler.png" /> | |
| 419 | + | <figcaption>tecruler.png</figcaption> | |
| 420 | + | </figure> | |
| 421 | + | ||
| 422 | + | [[TECRuler]] не меет фокуса. Она просто отображает масштаб. По желанию может иметь фиксированный или подвижный указатель. | |
| 423 | + | ||
| 424 | + | #### TECRadioGroup | |
| 425 | + | ||
| 426 | + | Альтернатива TRadioGroup. | |
| 427 | + | ||
| 428 | + | <figure> | |
| 429 | + | <img src="tecradiogroup.png" title="tecradiogroup.png" /> | |
| 430 | + | <figcaption>tecradiogroup.png</figcaption> | |
| 431 | + | </figure> | |
| 432 | + | ||
| 433 | + | [[TECRadioGroup]] может иметь фокус,и к ней можно перейти с помощью клавиши Tab (когда `TabStop = True`, что не по умолчанию). Может управляться мышью, клавиатурой или кодом. | |
| 434 | + | ||
| 435 | + | Мышь | |
| 436 | + | ||
| 437 | + | - Щелчок левой кнопкой мыши(ЛКМ) по любому пункту (вне кнопки) изменяет ее свойство `Checked` на `True` (или на `False`, если этот пункт уже имеет значение `checked`*). | |
| 438 | + | - Щелчок ЛКМ на TECRadioGroup вне пунктов приводит только к получению компонентом фокуса. | |
| 439 | + | ||
| 440 | + | Клавиатура | |
| 441 | + | ||
| 442 | + | - 0: снимает выбор всех пунктов* | |
| 443 | + | - 1-9: выбирает (или снимает выбор*) пункты 1-9 | |
| 444 | + | - Быстрые клавиши (Alt + Key) изменяют свойство `Checked` на `True` или `False`* (radio group не может иметь фокус). | |
| 445 | + | ||
| 446 | + | *) Зависит от того, находится ли `egoAllowAllUp` в `Options`. | |
| 447 | + | ||
| 448 | + | Клавиатура | |
| 449 | + | ||
| 450 | + | Это можно сделать, просто определив любой `ItemIndex` или свойство `Items[].Checked` : | |
| 451 | + | ||
| 452 | + | `ItemIndex := 1; //отмечает второй пункт`\ | |
| 453 | + | `Items[1].Checked := False; //снимает выбор со второго пункта, независимо от ``egoAllowAllUp`` в ``Options` | |
| 454 | + | ||
| 455 | + | #### TECCheckGroup | |
| 456 | + | ||
| 457 | + | Альтернатива TCheckGroup. | |
| 458 | + | ||
| 459 | + | <figure> | |
| 460 | + | <img src="teccheckgroup.png" title="teccheckgroup.png" /> | |
| 461 | + | <figcaption>teccheckgroup.png</figcaption> | |
| 462 | + | </figure> | |
| 463 | + | ||
| 464 | + | TECCheckGroup может находиться в фокусе, и к ней можно перейти с помощью клавиши Tab (когда `TabStop = True`, что не по умолчанию). Может управляться мышью, клавиатурой или кодом. | |
| 465 | + | ||
| 466 | + | Мышь | |
| 467 | + | ||
| 468 | + | - Щелчок левой кнопкой мыши(ЛКМ) по любому из пунктов (вне кнопки) меняет его свойство `Checked` на `True` (или на `False`, если этот пункт уже был помечен*). | |
| 469 | + | - Щелчок ЛКМ на TECCheckGroup вне пунктов только переводит фокус на компонент. | |
| 470 | + | ||
| 471 | + | Клавиатура | |
| 472 | + | ||
| 473 | + | - 0: снять пометки со всех пунктов* | |
| 474 | + | - 1-9: пометить (ил снять пометки*) пунктов 1-9 | |
| 475 | + | - Быстрые клавиши (Alt + Key) меняют свойство `Checked` на `True`/`False`* (check group не может иметь фокус). | |
| 476 | + | ||
| 477 | + | *) Зависит от того, находится ли `egoAllowAllUp` в `Options`. | |
| 478 | + | ||
| 479 | + | Программно | |
| 480 | + | ||
| 481 | + | Simply by assigning any Checked\[\] or Items\[\].Checked property: Это можно сделать, просто присвоив какое-либо значение свойству `Checked[]` или `Items[].Checked`: | |
| 482 | + | ||
| 483 | + | `Checked[1] := True; //пометит второй пункт`\ | |
| 484 | + | `Items[1].Checked := False; //снимет пометку со второго пункта, независимого от того, находится ли ``egoAllowAllUp`` в ``Options``.` | |
| 485 | + | ||
| 486 | + | #### TECTabCtrl | |
| 487 | + | ||
| 488 | + | См: [[TECTabCtrl]] | |
| 489 | + | ||
| 490 | + | #### TECAccordion | |
| 491 | + | ||
| 492 | + | [[TECAccordion]] это боковое меню, работает аналогично [[TPageControl]]. | |
| 493 | + | ||
| 494 | + | <figure> | |
| 495 | + | <img src="tecaccordion.png" title="tecaccordion.png" /> | |
| 496 | + | <figcaption>tecaccordion.png</figcaption> | |
| 497 | + | </figure> | |
| 498 | + | ||
| 499 | + | TECAccordion может иметь фокус и доступно с помощью клавиши Tab (когда `TabStop = True`, что не по умолчанию). Может управляться мышью, клавиатурой или кодом. | |
| 500 | + | ||
| 501 | + | Мышь | |
| 502 | + | ||
| 503 | + | Щелчок левой кнопкой мыши(ЛКМ) по любому из пунктов разворачивает/сворачивает его. | |
| 504 | + | ||
| 505 | + | Клавиатура | |
| 506 | + | ||
| 507 | + | Быстрые клавиши (Alt + Key) меняют пункт (пункт не может иметь фокус). | |
| 508 | + | ||
| 509 | + | Программно | |
| 510 | + | ||
| 511 | + | Можно просто менять свойство `ItemIndex`. | |
| 512 | + | ||
| 513 | + | #### TECTriangle | |
| 514 | + | ||
| 515 | + | Баланс трех значений. Это не палитра цветов! | |
| 516 | + | ||
| 517 | + | <figure> | |
| 518 | + | <img src="tectriangle.png" title="tectriangle.png" /> | |
| 519 | + | <figcaption>tectriangle.png</figcaption> | |
| 520 | + | </figure> | |
| 521 | + | ||
| 522 | + | [[TECTriangle]] не может находиться в фокусе и не может быть найден клавишей Tab. Управляется только мышью. | |
| 523 | + | ||
| 524 | + | Мышь | |
| 525 | + | ||
| 526 | + | - Щелчок левой кнопкой мыши(ЛКМ) на области треугольника. | |
| 527 | + | - Щелчок ЛКМ и удержание метки позволяет перемещать ее. | |
| 528 | + | - Щелчок ЛКМ по метке устанавливает более точное значение, например \[0,333..., 0.333..., 0.333...\]. | |
| 529 | + | - Колесико мыши позволяет катать метку вверх и вниз. | |
| 530 | + | ||
| 531 | + | Программно | |
| 532 | + | ||
| 533 | + | Это можно сделать путем вызова перегруженного метода `SetValues`. Параметры могут быть 1) координатами X и Y или 2) значениями `Top` и `Bottom` (третье значение `Side` является вычисляемой, поэтому сумма значений всегда равна 1). | |
| 534 | + | ||
| 535 | + | #### TECGrid | |
| 536 | + | ||
| 537 | + | См.: [[TECGrid]] | |
| 538 | + | ||
| 539 | + | #### TECLightView | |
| 540 | + | ||
| 541 | + | См.: [[TECLightView/ru|TECLightView]] | |
| 542 | + | ||
| 543 | + | #### TECConfCurve | |
| 544 | + | ||
| 545 | + | Компонент для настройки. | |
| 546 | + | ||
| 547 | + | <figure> | |
| 548 | + | <img src="tecconfcurve.png" title="tecconfcurve.png" /> | |
| 549 | + | <figcaption>tecconfcurve.png</figcaption> | |
| 550 | + | </figure> | |
| 551 | + | ||
| 552 | + | Пользователь может настроить полилинию или кривую Безье с несколькими точками. | |
| 553 | + | ||
| 554 | + | Можно выравнивать с помощью вертикальной и/или горизонтальной линейки (TECRuler). | |
| 555 | + | ||
| 556 | + | См. ECConfCurve-Demo. | |
| 557 | + | ||
| 558 | + | #### TECScheme | |
| 559 | + | ||
| 560 | + | Расширенный компонент для настройки общей схемы. | |
| 561 | + | ||
| 562 | + | <figure> | |
| 563 | + | <img src="tecscheme.png" title="tecscheme.png" /> | |
| 564 | + | <figcaption>tecscheme.png</figcaption> | |
| 565 | + | </figure> | |
| 566 | + | ||
| 567 | + | Пользователь может добавить несколько блоков и соединить их. | |
| 568 | + | ||
| 569 | + | Этот компонент легко настраивается. См. SchemeDesigner и ECSchemeDesc в комплекте с EC-Controls. | |
| 570 | + | ||
| 571 | + | ### Невизуальные компоненты | |
| 572 | + | ||
| 573 | + | #### TECSpinController | |
| 574 | + | ||
| 575 | + | Предназначен для управления свойствами нескольких TECSpinBtns и TECSpinEdit. | |
| 576 | + | ||
| 577 | + | <figure> | |
| 578 | + | <img src="tecspincontrollericon.png" title="tecspincontrollericon.png" /> | |
| 579 | + | <figcaption>tecspincontrollericon.png</figcaption> | |
| 580 | + | </figure> | |
| 581 | + | ||
| 582 | + | [[TECSpinBtns]] и [[TECSpinEdit]] имеют свойства `Controller`. Когда этому свойству назначен какой-либо `SpinController`, этот контроллер может одновременно изменять выбранные свойства всех присвоенных TECSpinEdits и TECSpinBtns. Настраиваемые свойства - например, `TimerDelay`, `TimerRepeat`, ширина отдельных кнопок, `GlyphsStyle` и другие. | |
| 583 | + | ||
| 584 | + | В проекте может быть несколько SpinController. | |
| 585 | + | ||
| 586 | + | #### TECTimer | |
| 587 | + | ||
| 588 | + | Продвинутый таймер. | |
| 589 | + | ||
| 590 | + | <figure> | |
| 591 | + | <img src="tectimericon.png" title="tectimericon.png" /> | |
| 592 | + | <figcaption>tectimericon.png</figcaption> | |
| 593 | + | </figure> | |
| 594 | + | ||
| 595 | + | Основная особенность в том, что первый интервал (свойство `Delay`) может отличаться от всех последующих интервалов (свойство `Repeat`). | |
| 596 | + | ||
| 597 | + | ### Другие части EC-Controls | |
| 598 | + | ||
| 599 | + | #### Class TECScale | |
| 600 | + | ||
| 601 | + | Масштаб. Это не компонент, но он может рисоваться на любом холсте. | |
| 602 | + | ||
| 603 | + | Этот класс используется в TECRuler, TECSlider, TECProgressBar, TECPositionBar и TECSpinPosition. | |
| 604 | + | ||
| 605 | + | См. демку ECScale-Demo. | |
| 606 | + | ||
| 607 | + | #### Модуль ECTypes | |
| 608 | + | ||
| 609 | + | Базовые типы и классы для элементов управления Eye Candy Controls (EC-C). | |
| 610 | + | ||
| 611 | + | Если вы используете EC-Controls в своем проекте, вам может потребоваться добавить этот модуль в раздел **uses**. | |
| 612 | + | ||
| 613 | + | Этот модуль содержит множество объявлений, подпрограмм преобразования цвета и базовых классов, например TBaseScrollControl. | |
| 614 | + | ||
| 615 | + | #### TBaseScrollControl | |
| 616 | + | ||
| 617 | + | Является базовым классом для прокручиваемых компонентов (TECScheme является его потомком). | |
| 618 | + | ||
| 619 | + | Вы можете получить свой собственный компонент прокрутки из TBaseScrollControl. На этом же классе основаны [[TECScheme]] и [[TECGrid]]. | |
| 620 | + | ||
| 621 | + | ## Демки | |
| 622 | + | ||
| 623 | + | EC-Controls поставляется с несколькими демками. Если некоторые из следующих демоверсий отсутствуют в архиве, это может означать, что изменений не было и демоверсия не была включена. В этом случае используйте демки из предыдущего выпуска. | |
| 624 | + | ||
| 625 | + | #### ECC-Demo | |
| 626 | + | ||
| 627 | + | В этой демке показаны все элементы управления EC-Control в различных конфигурациях. | |
| 628 | + | ||
| 629 | + | #### ECScale-Demo | |
| 630 | + | ||
| 631 | + | Эта демка показывает, как вы можете использовать [[TECScale]] в вашем собственном визуальном компоненте. | |
| 632 | + | ||
| 633 | + | #### ECConfCurve-Demo | |
| 634 | + | ||
| 635 | + | Эта демка показывает возможности [[TECConfCurve]]. | |
| 636 | + | ||
| 637 | + | #### ECSchemeDesc | |
| 638 | + | ||
| 639 | + | В этой демке показано, как создать компонент-потомок из [[TCustomECScheme]]. | |
| 640 | + | ||
| 641 | + | #### SchemeDesigner | |
| 642 | + | ||
| 643 | + | SchemeDesigner - это больше, чем демо. Он показывает вам, как вы можете создать конфигуратор TECScheme в вашем собственном приложении, но его также можно использовать для создания ваших собственных конфигураций и сохранения их в формате *.xml. | |
| 644 | + | ||
| 645 | + | --- | |
| 646 | + | *From the Free Pascal wiki, page "Eye-Candy Controls/ru", as it stood on 2022-10-09 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
