Virtual Treeview |
Автор: admin Просмотров: 3017 Комментарии:
Добавлен: 23 января 2017
Обновлено: 23.01.2017 - 15:17
Компонент Delphi для вывода древовидных списков и таблиц.
Более десяти лет разработки сделали его одним из самых гибких и передовых компонентов контроля древовидного вывода под Delphi, доступных сегодня. Virtual Treeview разрабатывается с требованием улучшать многие аспекты существующих решений и внедрять новые технологии и принципы, которые не были доступны ранее. Как видно из названия, этот элемент управления использует различные парадигмы управления деревом, чем другие элементы управления такого рода. Он ничего не знает о данных, которыми он управляет (за исключением их размеров). Все извлекается из приложения через события (или потомки через перегруженные методы).
Virtual Treeview тщательно протестирован. Virtual Treeview доказала свою концепцию, а также повседневную пригодность уже во многих коммерческих продуктах и бесплатных проектах.
Возможности Virtual Treeview
Общие возможности
Virtual Treeview это очень быстрый. Добавление одного миллиона узлов занимает всего 700 миллисекунд *! Это сделало его самым быстрым TreeView в открытом доступе на Delphi/BCB рынке уже 10 лет назад.
Виртуальный Treeview имеет очень низкие требования к оперативной памяти. Выделяет около 60 байт на узел (в строке дерева, основание дерева использует только 56 байт) .
Virtual Treeview оптимизирован на высокоскоростной доступ. Она занимает всего лишь 0,5 секунды, чтобы пройти один миллион узлов в зависимости от необходимых проверок и проверок состояния узлов.
Мультисессии поддерживается, в том числе ограниченного выбора, так что можно выбрать только узлы определенного начального уровня. Много усилий было вложено в разработку эффективных алгоритмов, например, чтобы позволить модифицировать уже большой набор по-прежнему в интерактивном режиме.
Поддерживается печать и рисование всего дерева в bitmap центральным методом TBaseVirtualTree.PaintTree. Сообщения WM_PRINT и WM_PRINTCLIENT обрабатываются корректно и позволяют такие вещи, как рисование дерева в растровом изображении (например , для слоистых окон или реализовать анимированные выпадающий контроля , которые используют VT , как ниспадающем контроля).
Событие TBaseVirtualTree.OnHint отображает ноды конкретных подсказок.
Событие TBaseVirtualTree.OnGetHelpContext извлекает специфические идентификаторы контенкстной справки нода. Оно включает в себя автоматически отображаемое дерево и окно обхода родительского контроля, которое вызывается по клавише F1.
Событие TBaseVirtualTree.OnGetPopupMenu извлекает всплывающее меню конкретного узла и включает в себе автоматический обход дерева.
Среднюю и правую кнопку мыши можно использовать в дополнение к левой кнопке и делать все что можно левой кнопкой (перетаскивание, выбор и т.д.). Эти альтернативные кнопки можно выключить, конечно.
Фиксированный фоновое изображение можно использовать в дереве и может быть дано определенное смещение, например для имитации общих фонов.
Горячий стиль для узлов поддерживается (так же, как ссылки в окне браузера). Специальный курсор может быть назначен для выполнения этой задачи.
Струны деревьев поддерживают так называемый статический текст, которые появляется после заголовка узла (в каждом столбце) и которые могут иметь по-разному отформатированный заголовок, но не может быть отредактированы, выбраны и т.д.
Режим span column поддерживается, который позволяет столбцу занимать больше места для его подписи, если есть пустые столбцы справа от него. Это позволяет избежать длинных вырезку титрами, но по- прежнему позволяет использовать несколько столбцов.
Ноду можно выбрать в каждом столбце (это переключаемые), а также редактировать, что делает Virtual Treeview своего рода сеткой тоже. Ключ Tabulator можно использовать для переключения фокуса между клетками. Специальный вариант (toGridExtensions) существуют для поддержки сетки конкретных задач.
Узлы могут иметь отдельные высоты и вертикальное выравнивание изображений узлов, а линии узла можно регулировать по отдельности.
Virtual Treeview выставляет свои внутренние состояния , как в ожидании перетаскивания или редактирования событий, мульти выбора или расширения в стадии разработки. Используя эту информацию, приложение можно оптимизировать на выполнение кода (обновления состояния и т.д.).
Сортировка нода поддерживается через определённые приложением вызовы сравнений. Кроме этого, дерево можно устанавливать на автосортировку.
Подсказки могут содержать несколько строк текста и отражают выравнивание и направленность ноды или отображаемого узла. Для их анимации доступно скольжение и автосмещение.
Инкрементный поиск с различными вариантами и направления возможно тоже.
Автопрокрутка клиентской области происходит, когда мышь находится вблизи границ во время перетаскивания и делает выбор (Multi выбор).
TBaseVirtualTree.DefaultNodeHeight и TVirtualStringTree.DefaultText можно использовать, чтобы избежать настройки многих узлов явно одинаковыми стартовыми значениями.
Реализация колонки Virtual TreeView также позволяет фиксировать столбцы, делая хорошую замену сетке.
Новейшие технологии
Для получения гладкой анимации (например, замирающей подсказки) Virtual Treeview использует вручную оптимизированную ассемблерную MMX подпрограмму. Этот код также используется для рисования полупрозрачного прямоугольного выбора в режиме мульти выбора. Это подобно Windows 2000 и Windows XP, но также работает на Windows 95/98 / Me.
Альфа смешанное изображение окна дерева отображается при выполнении перетаскивания. В Windows 2000 и Windows XP поддерживаются интерфейсы IDropTargetHelper и IDragSourceHelper, которые позволяют некоторые очень аккуратные эффекты (когда используется Explorer). В более старых потребительских версиях Windows перетаскивание изображения моделируется деревом, но там есть незначительные ограничения.
Virtual Treeview поддерживает темы Windows XP. Он действует должным образом на изменённых темах и использует для всех визуальных элементов тематические правильное изображение, используя собственные API. В других системах Windows, эти стили поддерживаются отдельными унаследованным кодом. Тему awareness также можно добавить.
Unicode
TVirtualStringTree реализовано исключительно с использованием широких строк Unicode.
Дерево сохраняет и читает все свойства Unicode (например, заголовки столбцов, текстовый узел по умолчанию и т.п.) корректность от из DFM.
Все Unicode рисования полностью поддерживают двунаправленность (т.е. справа левый рисунок), выравнивание столбцов (левый, центральный, правый) и правильное расположение подсказок. Конечно же эта функция доступна на Windows 95/98 / Me.
Заголовок и столбцы
Несколько столбцов поддерживаются с помощью собственной реализации заголовка. Этот заголовок занимает пространство в области неклиентской контроля дерева и поддерживает различные кнопки стилей (толстые кнопки стандартного ListView, плоские кнопки, пластины, Windows XP стиль и владелец рисунка).
Колонки могут появляться в любом порядке в окне дерева.
Каждый столбец может быть скрыт, в том числе основной столбец, который держит актуальное дерево.
Каждый столбец может стать главным столбцом.
Колонки можно показывать без заголовка.
Колонки могут иметь различные варианты (видимые, интерактивные, изменяемые, перетаскиваемые и т.д.).
Вы можете установить индивидуальные выравнивания для каждого столбца, а также направления справа налево или слева направо (again: available also on non-middle-east and older Windows consumer systems).
Каждый столбец может иметь собственный цвет.
Заголовки, а также коллекции классов столбцов и актуальные классы столбцов поддерживают потоковую передачу. Это не зависит от потоков TreeView.
Поддержка проверок
Каждый узел в дереве может иметь свой собственный тип проверки. Это может быть либо флажок (также Tristate), радио-кнопки или кнопки узла. Эти типы могут быть свободно смешаны, так что вы можете иметь, например, узел с 10 узлами, из которых 5 включают радио группу (где только один из этих 5 узлов может быть проверено) и других 5 узлов может иметь флажок (или не иметь тип проверки вообще).
Смешанные ( с тремя состояниями) флажки с надлежащей обработкой для частичной проверки дочерних нод (это часто используется в иснталяторах и программах резервного копирования).
Автоматическое распространение изменённого состояния для смешанного типа кнопок проверки возможен (если он включено).
Проверочные события OnChecking и OnCheck поставляются тоже.
Для специальных целей используется небольшая плоская кнопка, которая называется кнопкой ноды.
Возможны 7 различных видов контрольных изображений. Темные и светлые галочки, темные и светлые знаки тик, плоские проверки изображения, Windows XP стиль проверки изображения и определённые приложением проверки изображения. Для получения дополнительной информации смотрите свойство TBaseVirtualTree.CheckImageKind.
Дизайн времени
Свойства и методы Virtual TreeView зарегистрированы с категориями Delphi (Delphi 5 и BCB 5 или выше).
Специальный редактор свойств для форматов буфера обмена включен и позволяет выбирать форматы просто. Это особенно важно, так как доступные форматы буфера обмена должны быть заданы как строки и это также очень удобно иметь список доступных форматов, даже если они еще не включены (знать, что может быть включено).
Настройка
Пользовательские перетаскивания циклы рисования поддерживаются с помощью рисованных событий (для всего дерева и для каждого узла).
Помимо встроенных типов проверить определенные пользователем проверки изображения могут быть использованы который поддерживается список отдельного изображения (TBaseVirtualTree.CustomCheckImages).
Каждая кнопка в заголовке можно сделать в индивидуальном порядке.
Три различных линий стилей доступны: пунктирные линии, сплошные линии и определенные прикладные линии.
Приложения и потомки могут предоставить свой собственный редактор узла (который не обязательно должен быть единым органом управления) путем обработки события TBaseVirtualTree.OnCreateEditor или доминирующую TBaseVirtualTree.DoCreateEditor. Это позволяет полностью заменить редактирование узла за счет собственных (бизнес) правил.
Приложения и потомки могут предоставить свой собственный интерфейс менеджера перетаскивания путем обработки события TBaseVirtualTree.OnCreateDragManager или переопределение TBaseVirtualTree.DoCreateDragManager. Это позволяет настраивать всю обработку OLE перетащить дерева. Примечание: УСЬ падение Drag'n управляется VCL так что это не может быть изменен.
Приложения и потомки могут предоставить свой собственный интерфейс объекта данных путем обработки события TBaseVirtualTree.OnCreateDataObject или переопределение TBaseVirtualTree.DoCreateDataObject. Это позволяет обеспечить собственные форматы буфера обмена.
Существует регистрация функция (RegisterVTClipboardFormat), которая позволяет регистрировать дерева потомков с собственным буфером обмена и / или форматов хранения . Приложения могут предоставлять собственные форматы буфера обмена (без получения новых классов деревьев) путем обработки события TBaseVirtualTree.GetUserClipboardFormats.
Приложения и потомки могут полностью изменить ключ обработки этого дерева путем обработки события TBaseVirtualTree.OnKeyAction или переопределение TBaseVirtualTree.DoKeyAction. Это работает также для пошагового поиска.
Приложения и потомки могут настроить фоновое изображение этого дерева , которое не покрывается узлами, путем обработки события TBaseVirtualTree.OnPaintbackground или переопределение TBaseVirtualTree.DoPaintbackground. Для узлов существуют дальнейшие события для настройки.
Приложения и потомки могут настроить , как строка дерева укорачивает слишком длинные заголовки от обработки события TCustomVirtualStringTree.OnShortenString или переопределение TCustomVirtualStringTree.DoShortenString.
Скроллинг
Плоские полосы прокрутки поддерживаются. но так как они вступают в противоречие с Windows XP эта поддержка выключена символом компилятора ( UseFlatScrollbars ). Включите этот символ , если вы действительно хотите использовать плоские полосы прокрутки перед компиляцией блока дерева.Каждая операция прокрутки инициирует событие TBaseVirtualTree.OnScroll. Это позволяет синхронизировать деревья с другими органами управления.
Есть свойства (например, TBaseVirtualTree.OffsetXY), которые позволяют прокручивать содержимое дерева к любому постион в коде без отправки сообщений вокруг.
Колесо панорамирование и прокрутка поддерживается. То есть, при нажатии на колесо мыши или нажав и удерживая его при перемещении мыши вокруг окна древовидной прокрутки гладко.
Потоки
Сложное содержание дерева сериализации было реализовано , чтобы обеспечить сохранение и восстановление дерева в / из потоков. Это включает в себя также пользовательские данные до тех пор , как она может быть записана в поток.Virtual Treeview позволяет также добавлять данные из потока вместо замены всего содержимого.
Внутренний формат потока является фрагмент на основе , что делает его очень гибким для будущих усовершенствований , но по- прежнему сохраняет совместимость со старыми реализациями.
Существует пользователь кусок, который принимает данные, записанные в поток в случае TBaseVirtualTree.OnSaveNode. Данные этого пользователя куске будет можно прочитать в TBaseVirtualTree.OnLoadNode.
Поддержка разработчиков
Особое внимание было уделено для форматирования исходного кода в виртуальной Treeview последовательно .Большая часть всей реализации являются комментарии , которые описывают внутреннюю работу.
Методы и свойства , следовательно , в алфавитном порядке в пределах своей компетенции (частные, защищенный, общественности, опубликованы). Единственным исключением являются конструкторы и деструкторы , которые всегда появляются в верхней части публичной части в объявлении класса и всегда первые методы в реализации класса.
Для каждого события есть виртуальный метод , который вызывает обработчик события. Это позволяет потомкам , чтобы получить уведомление о каждом событии без назначения обработчика. Имена этих методов соответствуют непосредственно к событиям с помощью шаблона: Do именем_события .
Многие меры были приняты для обеспечения Borland C ++ совместимость строитель . Это особенно трудно , потому что автоматический перевод с Delphi в код C ++ в BCB глючит.
Существует простой и мощный механизм для потомков писателей выделить свои собственные данные на на узел основе. Просто позвоните на TBaseVirtualTree.AllocateInternalData зарегистрировать ваши потребности. Это не повлияет существующего или возможного кода приложения , если оно , следовательно , использует TBaseVirtualTree.GetNodeData для доступа пользовательских данных.
Редактирование
Применение определенные редакторы поддерживаются через интерфейс редактирования ссылок. Общий (не Unicode) реализация Редактор доступен тоже.Каждый столбец в дереве доступны для редактирования , если включен (см TCustomVirtualTreeOptions.SelectionOptions.toExtendedFocus).
Утилиты
Для вашего удобства некоторые из внутренне используемых функций, представляющих общий интерес подвергаются.AlphaBlend : процедура общего назначения для смешивания источника на целевой битовой карты , используя несколько различных режимов.
DrawTextW : частичная реализация API DrawText , который поддерживает Unicode. Этот метод имеет только окурок на Windows 95/98 / Me.
ShortenString : функция общего назначения , которая делает данную WideString фитинга в заданном пространстве. Это частично реализуется API для Windows DrawText , но принимает дополнительно уход за право-выравнивание по левому краю и работает с Unicode также на Windows 95/98 / ME.
* Времена, приведенные здесь, взяты на профессиональной системе Windws XP работает на Athlon 650 МГц с 256 МБ ОЗУ. Все возможные оптимизации были применены.
https://www.soft-gems.net/index.php/controls/virtual-treeview
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Программирование
Лицензия:
Mozilla Public License 1.1 (MPL 1.1) или GNU Lesser General Public License
Язык программирования:
Delphi
Сайт проекта
Скачать Virtual Treeview
Комментарии |