Рекомендации по наиболее полезной замене Delphi TStringGrid (Grid)
Одной из более слабых областей Delphi являются сетки (например, TStringGrid), где, хотя он и выполняет хорошую базовую работу, становится труднее, когда вам нужно распечатать его или настроить его внешний вид. Я использовал его около 15 лет, поэтому он довольно встроен в мои приложения, и со временем я сам выполнил собственные решения для преобразования TGrid-to-RTF (для печати через MSWord) и использовал TDrawGrid для немного большей настройки. Мои решения (все еще) должны работать как в Delphi 7, так и в Delphi XE. Как оказалось, ни одна из моих сеток не связана с БД, все они заполнены ячейками в коде.
Теперь я планирую разобраться в моих отчетах и "раскрасить" формы, что означает замену сетки на более эффективную реализацию. Есть множество других, и у меня есть два из них Developer Express Quantum Grid и TMS Grid Pack. Однако время очень ограничено экспериментами со шрифтами, цветами и печатью, и я был бы признателен за рекомендации, какую из многих комбинаций отчетов "сетка / печать-отображение" мне следует принять. В настоящее время у меня нет генератора отчетов, и я рассматривал FastReports, но я открыт для предложений.
6 ответов
Примерно в 1998 году я устал от TStringGrid и начал долгий путь за границу. Я активно использовал элементы управления виртуальным видом сетки, в том числе ExGridView Романа Мочалева (здесь он перенесен на Delphi 2010/XE), элемент управления квантовой сеткой Developer Express, а также комплект печати, а также Virtual Tree View Майка Лишке. Да. Это вид дерева. Но если вы не создадите несколько уровней узлов, это тоже делает довольно большую виртуальную сетку.
В конце концов, ни один из них не идеален. Требования вашего приложения могут включать в себя:
Печать. Если это так, я бы пошел к компонентамDeveloper Express, так как их компонент сетки и другие компоненты имеют встроенную поддержку печати.
Много заказной живописи, но нет печати. Если это так, я вернусь к VCLTDrawGrid, потому что в противном случае вам будут мешать более сложные системы покраски.
Сохраняя это простым. Если это так, я рекомендую компонент ExGridView. Все остальные решения, кажется, помогают мне на 98% пути и требуют тонны технического обслуживания для решения нестандартных проблем с окраской, печатных ошибок или чего-либо еще. Если вам нужна только виртуальная сетка в стиле Windows 2000, отображающая данные из вашей модели, используйте ExGridView.
Может потребоваться вложение узлов (дерева) в будущем. Тогда просто начните с VirtualTreeView сейчас, и используйте его в качестве сетки на данный момент, а позже легко добавьте функциональность дерева.
В вашем случае возможно гораздо больше "дополнительных требований", чем я могу себе представить и перечислить здесь. Но именно эти "также" вещи будут (или должны) диктовать ваш выбор. Ваше приложение должно работать 24/7/365.25? Ну, тогда будь проще и избегай всяких изысков, которые потом тебе навредят.
Поскольку вы заявляете, что вам нужна печать, красивая тематическая живопись и у вас уже есть компоненты Developer Express, это был бы самый логичный выбор #1. Это стабильный, зрелый и высококачественный комплект компонентов. Для других людей, которые рассматривают этот вопрос позже, мое единственное предостережение в том, что это сложное, тяжеловесное решение, и оно не подходит для 100% всех приложений Delphi, которым "просто нужна работоспособная сетка лучше, чем TStringGrid". DevEx Quantum Grid может копировать практически все функции сетки, которые вы когда-либо видели в Outlook, например, включая функцию "группировать по".
Компонент Virtual Treeview может быть возможным. Мы используем его в качестве сетки в нашем приложении. Я не пробовал печатать, но сделаю это в ближайшее время. Он может экспортировать в форматированный текст или HTML, что может быть полезно для этого.
РЕДАКТИРОВАТЬ: Это с открытым исходным кодом и довольно отполированы, кстати.
EDIT2: исправлено имя компонента. Первоначально я сделал это, но он потерян, когда сделал ссылку.
Я настоятельно рекомендую перейти с ExpressQuantumGrid!
Вы могли бы подумать о TStringGridToCxGrid
класс фасада, который заменяет TStringGrid
и переводит ваш старый код в TcxGrid
,
Я всегда был заинтригован KGrid. Я не использовал это кроме некоторого простого тестирования как бы то ни было. Стоит проверить, если вы заинтересованы в бесплатной альтернативе.
Вы также можете рассмотреть BergSoft NextGrids http://www.bergsoft.net/
Ничего не стоит и имеет достойную поддержку
Вы можете попробовать использовать библиотеку EhLib, которая включает компонент TDBGridEh. Это дешево и очень мощно. http://www.ehlib.com/