Рекомендации по наиболее полезной замене 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/

Другие вопросы по тегам