Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как встроить компоненты редактирования в KOLmdvXLGrid?


_Polymorphic_ ©   (2003-07-30 10:36:00) 

Поделитесь опытом > subj. Thnx!


mdw   (2003-07-30 12:50:00) [1]

Как таковой редактор в Grid-компоненте отсутствует (в VCL -
InplaceEditor). Т.к сетка, все таки  предназначена для отображения
данных, а редакторование - это функционально.

Для поддержки возможности редактирования есть два свойства.

OnBeginEdit - возникает при возникновении возможности редактирования (Enter, F2, Двойном щелчке на
ячейке). Переход в режим редактирования по одному щелчку (как в
Grid'e VCL) - нет, мне это там не нравилось. Хотя если есть
настоятельное мнение, что это нужно, можно и сделать. :))
 TOnBeginEdit = procedure (Sender: PControl; ACol, ARow: Integer; var AShowControl, ATextControl: PControl; var AIndents: TRect) of object;
 Sender: PControl - Сам контрол, т.е Grid.
 ACol, ARow: Integer; - соответственно координаты сфокусированной
 ячейки.
 var AShowControl: PControl - здель нужно передать указатель на контрол
 (PControl), который будет использоваться как редактор. Например
 Edit или Panel, при этом на ней можно разместить любые элементы.
 Если nil(он там изначально) - то соответственно редактор  вызываться не будет.
 var ATextControl: PControl; - Элемент, который будет иметь фокус
 просле активизации редактора (AShowControl). Имеет смысл если на
 AShowControl лежит несколько контролов. может быть nil, тогда фокус
 получит AShowControl.
 var AIndents: TRect - Отступы с которыми будет позиционироваться
 AShowControl относительно ячейки. Полезно для выравнивания текста в
 Grid'e и в редакторе, ну или еще зачем нибудь - вариантов много.

 Элементы редактирования (AShowControl) не должны использоваться для
 других целей, т.к. они автоматически будут скрываться по окончанию
 редактирования.

 OnEndEdit - возникает при окончании редактирования. (нажатии Enter, F2, потере фокуса)
 TOnEndEdit = procedure (Sender: PControl; ACol, ARow: Integer; AShowControl, ATextControl: PControl; var AText: String; var Access: Boolean) of object;

 Sender: PControl;         Тоже что и в OnBeginEdit
 ACol, ARow: Integer;
 AShowControl, ATextControl: PControl;

 var AText: String;  - Текст который будет установлен в ячейке(по
 умолчанию текст из FTextEditor)
 var Access: Boolean - При False выход из редактора не произойдет.

 Обрабатывать OnEndEdit не обязательно, т.к в ячейке текст
 установится автоматом из FTextEditor.


Наверх

Титульная страница Поиск, карта сайта Написать письмо