Вкладка Controls. Компонент TRxDrawGrid

   
На этом шаге мы рассмотрим компонент TRxDrawGrid.

   
Компонент TRxDrawGrid (рис.1) - наследник TDrawGrid -
наследует все свойства и методы этого компонента, и имеет некоторые дополнительные возможности.


Рис.1. Компонент TRxDrawGrid

   
Так, при редактировании текста в строке редактирования ячейки таблицы,
событие OnSetEditText вызывается не при каждом изменении
содержимого строки ввода, а только при выходе из режима редактирования.
Во время заполнения текста в строке редактирования вызываются события
OnAcceptEditKey и OnEditChange,
позволяющие разрешить или запретить ввод определенных символов в строку
редактирования.

   
В 32-разрядной реализации компоненты Вы можете указать стиль строки
редактирования для каждой ячейки (например, задав выпадающий список
для редактора или определив событие на нажатие кнопки справа от строки
редактора) с помощью события OnGetEditStyle.

   
Кроме того, для доступа к строке редактирования в ячейке таблицы свойство
InplaceEditor вынесено в секцию public,
и имеется ряд дополнительных полезных событий.

   
Компонент имеет дополнительные методы DrawStr, DrawMultiline,
DrawPicture и DrawMasked для рисования в ячейках
таблицы текста, картинок и "прозрачных" битовых изображений.

   
Некоторые свойства компонента:

Таблица 1. Свойства и методы компонента TRxDrawGrid

Свойство Описание
property OnAcceptEditKey: TAcceptKeyEvent; Событие происходит, если свойство Options содержит
значение goEditing и пользователь редактирует текст в ячейке
таблицы при нажатии символьных клавиш на клавиатуре.
Можно обработать это событие так, чтобы запретить, например, ввод
определенных символов в строку редактирования и т.д.
type
TAcceptKeyEvent = function (Sender: TObject; var Key: Char): Boolean of object;
Тип предназначен для определения методов - обработчиков события OnAcceptEditKey.
property OnEditChange: TNotifyEvent; Событие возникает при изменении текста в редакторе компонента
TRxDrawGrid в режиме редактирования содержимого ячейки.
Можно обработать событие OnEditChange, например, для проверки
правильности ввода данных в строке редактирования.
property OnGetEditStyle: TEditStyleEvent; OnGetEditStyle происходит, когда редактор запрашивает стиль
редактирования.
Параметр Style определяет, как пользователи могут редактировать
данные ячейки сетки. Возможные значения:

  • ieSimple – ни одна ячейка таблицы не связана с кнопкой, т.е. пользователь не может выбрать содержание ячейки от списка;
  • iePicklist – ячейка становится во время редактирования строкой редактирования
    с кнопкой

    , и пользователь может выбрать значение из раскрывающегося
    списка. Вы должны определить содержание списка, обращаясь к OnGetPicklist;

  • ieEllipsis - ячейка становится во время редактирования строкой редактирования с кнопкой, которую пользователь может нажать, чтобы выбрать значение.
    Щелчок кнопки вызывает OnEditButtonClick.

Событие происходит, если свойство Options содержит значение
goEditing.

property OnGetPicklist: TPicklistEvent; OnGetPicklist происходит, когда возникает запрос на выбор
строки из списка.
Вы должны заполнить содержание списка PickList, добавляя возможные
объекты к списку.
Событие происходит, если свойство Options содержит
значение goEditing.
type
TPicklistEvent = procedure (Sender: TObject; ACol, ARow: Longint; PickList: TStrings) of object;
Тип предназначен для определения методов - обработчиков события
OnGetPicklist.
procedure DrawStr (ARect: TRect; const S: string; Align: TAlignment); Метод предназначен для отрисовки строки в ячейке таблицы (в одну строку) с заданным выравниванием.
Можно вызвать этот метод в обработчике события OnDrawCell.
procedure DrawMultiline (ARect: TRect; const S: string; Align: TAlignment); Метод предназначен для отрисовки строки текста в ячейке таблицы (в несколько строк, если
весь текст не входит по ширине в ячейку) с заданным выравниванием.
Можно вызвать этот метод в обработчике события OnDrawCell.
procedure DrawPicture (ARect: TRect; Graphic: TGraphic); Метод предназначен для отрисовки графического изображения в ячейке таблицы.
Изображение рисуется в центре переданного прямоугольника ARect.
Можно вызвать этот метод в обработчике события OnDrawCell.
procedure DrawMasked (ARect: TRect; Graphic: TBitmap); Метод предназначен для отрисовки "прозрачного" битового изображения (Bitmap)
в ячейке таблицы.
Изображение рисуется в центре переданного прямоугольника ARect.
В качестве "прозрачного" цвета используется цвет левого нижнего пикселя битового изображения.
Можно вызвать этот метод в обработчике события OnDrawCell.

   
Приведем пример: создадим приложение, в котором TRxDrawGrid используется
для показа картинок и их названий, причем текст можно редактировать.

   
Поместим на форму RxDrawGrid1 (рис.2):


Рис.2. Форма с размещенным на ней компонентом RxDrawGrid1

   
Зададим для компонента следующие значения свойств:

  • Align - alClient,
  • ColCount - 2 ,
  • FixedCols - 0 (нет фиксированных колонок),
  • FixedRows - 0 (нет фиксированных рядов),
  • Options.goEditing - True (разрешено редактирование текста),
  • RowCount - 2 .

   
Т.к. компонент TRxDrawGrid является наследником компонента
TDrawGrid, то для заполнения таблицы можно воспользоваться программой
из шага 6 (Вкладка Additional. Компонент TDrawGrid).

   
Процедуры:

  • procedure FormCreate(Sender: TObject);
  • procedure FormDeactivate(Sender: TObject);
  • procedure FormResize(Sender: TObject);
  • procedure TForm1.RxDrawGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String);
  • procedure TForm1.RxDrawGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);

для компонента TRxDrawGrid будут абсолютно такими же, как и для
компонента TDrawGrid.

   
Остановимся подробнее на следующих процедурах.

   
Для компонента RxDrawGrid1 напишем обработчик события
OnDrawCell:

procedure  TForm1.RxDrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; 
                              Rect: TRect; State: TGridDrawState);
var 
    k: integer;    
begin
  //Пересчитываем координаты ячейки в индекс списка
  k:= 2*ACol + ARow;     
  with RxDrawGrid1.Canvas, Rect, slBitMap do
   begin
        //Выравниваем текст по правому краю и выводим 
  	RxDrawGrid1.DrawStr(Rect,slBitMap[k],taRightJustify); 
	//рисуем картинку
   	RxDrawGrid1.DrawPicture(Rect, (Objects[k] as TBitMap)); 
   end;
end;

   
Для компонента RxDrawGrid1 напишем обработчик события
OnGetEditStyle:

procedure  TForm1.RxDrawGrid1GetEditStyle(Sender: TObject;
                          ACol,ARow: Integer; var Style: TInplaceEditStyle);   
begin
    Style:=iePicklist; //Задаем стиль ячейки
end;

   
Для компонента RxDrawGrid1 напишем обработчик события
OnGetPicklist:

procedure TForm1.RxDrawGrid1GetPicklist(Sender: TObject;
                   ACol, ARow: Integer; PickList: TStrings);
begin
     PickList[0]:='1.bmp';
     PickList[1]:='2.bmp';
     PickList[2]:='3.bmp';
     PickList[3]:='4.bmp';   //зададим значения раскрывающегося списка
end;

   
Работа программы показана на рис.3(а-в).


Рис.3а. Компонент RxDrawGrid1 с отображенными в нем картинками


Рис.3б. Изменение названия картинки 1.BMP с помощью выпадающего списка


Рис.3в. Название картинки 1.BMP изменено на 4.BMP

   
Текст этого примера можно взять здесь.

   
На следующем шаге мы рассмотрим компонент TRxSpeedButton.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий