Грид с объединяемыми ячейками данныхDelphi , Компоненты и Классы , TStringGrid и TDrawGridГрид с объединяемыми ячейками данных
Оформил: DeeCo Автор: Михаил Зайкин 1. Что было нужно.По ходу выполнения проекта встала следующая задача: обеспечить ввод данных в таблицу, с возможностью визуально объединить/сгруппировать ячейки данных. Так как даже для одной задачи могут быть различные требования к представлению данных, грид должен как можно гибче взаимодействовать с пользователем.Опробовав замечательные MSHFlexGrid, ObjectiveGrid и получив пару десятков вопросов “а почему…”, “а как..”, и замечаний “а вотя я …, а он не…” решено было, что пусть грид будет поглупее, попроще, зато пользователь будет в полной мере контролировать структуру таблицы. 2. Что было сделано. Определены типы объединения: TMergeMode=(mmNone,mmByCol,mmByRow,mmFree);
Определен класс-диапазон: TMZRange = class(TObject) private FOwner: TMZMergeStringGrid; FRect: TGridRect; function GetValue: string; procedure SetValue(Value: string); public constructor Create(AOwner: TMZMergeStringGrid; Range: TGridRect); function Contain(ACol, ARow: integer): boolean; overload; function Contain(ARect: TGridRect): boolean; overload; function Intersect(ARect: TGridRect): boolean; function Visible: boolean; function VisibleRect: TGridRect; property Rect: TGridRect read FRect; property Value: string read GetValue write SetValue; end;
Часть полей и функций была напрямую скопирована из приватной секции TCustomGrid. Добавлены public функции и свойства:
Переписаны методы Paint и DrawCell. Paint:
DrawCell: Краса и гордость класса. ;-) Метод полностью переписан. Попробую объяснить, что же я тут наваял.
3. Использование компонента. При использовании таблицы считаем, что в опциях не установлены флажки goRovMoving, goColMoving, goEditing, goAlwaysShowEditor. Эти ситуации, соответственно, не обрабатываются. Также не используется и InplaceEditor.4. Недостатки компонента.
Скачать архив проекта: MergeGrid.zip (10 K) 6. Совместимость. Компонент и пример были созданы в D5. Но компилировались и работали также и в D6. Вот так вот. Надеюсь, эта тема будет интересна не только новичкам, но и продвинутым программистам. Жду ваших замечаний, советов и пожеланий. Спасибо.Статья Грид с объединяемыми ячейками данных раздела Компоненты и Классы TStringGrid и TDrawGrid может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросы:: 2011-10-21 08:55:22 :: re:Грид с объединяемыми ячейками данныхпользователь: Илья. Здравствуйте, ссылка уже не рабочая, как можно получить файл проекта? :: 2011-10-29 19:59:28 :: re:Грид с объединяемыми ячейками данныхпользователь: kan. К сожалению, архив утерян. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: TStringGrid и TDrawGrid ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |