Copyright © 2010 Promsite. All Rights Reserved.
стр. 2


TStringGrid, часть I

Автор Деймон Чандлер                                                                перевод Виктор Алексеев aka prom

       Пример: выбираем 3-ю колонку и хотим просмотреть значение строки в этой колонке, напр. в 4-й:

       const int target_col = 2;
       const int target_row = 3;
       ShowMessage(StringGrid1->Cols [target_col]->Strings[target_row]);

       Свойство Cels  аналогично, только здесь выбираем строку и просматриваем ячеек всех столбцов, которые попали в эту строку.

Пример: выбираем 4-ю строку и в ней просматривает значение 3-го столбца.

       const int target_col = 2;
       const int target_row = 3;
       ShowMessage(StringGrid1->Rows [target_row]->Strings[target_col]);

Свойство Objects

       Свойство Objects  - это указатель на объект типа TObject*.  Каждую ячейку можно ассоциировать с каким-то объектом, и значит получить доступ к свойствам и методам этого объекта. Синтаксис объявления свойства Objects:

       __property System:: TObject *   Objects [INT ACol] [INT ARow] = (  read = GetObjects, write = SetObjects);

       Через свойство Objects  мы получаем доступ к свойствам  Объекта не напрямую, а через ячейки ассоциированные с данным объектом. Это делает Grid универсальным средством для визуального отображения  разнотипной информации. Ниже пример, где для ассоциирования с целочисленным значением используется свойство Objects.

       const int target_col = StringGrid1->FixedCols;
       const int target_row = StringGrid1->FixedRows;
       const int associated_data = 1001;  
       StringGrid1->Objects [target_col][target_row] = reinterpret_cast  <TObject*>(associated_data);

Отметим также, что класс TStringGrid автоматически не освобождает память, поэтому программисту это надо иметь в виду.

Управление выравниванием текста

    Класс TStringGrid обеспечивает не только хранение данных каждой ячейкой, но и автоматический рендеринг текста (прим. пер.: под рендерингом понимается прорисовка грида). Эта задача решается методом DrawCell (), который в свою используется методом TextRect (). Однако, можно отформатировать каждую ячейку, по собственному усмотрению. Например, если есть столбец с денежными суммами, то представление желательно прижать к правой стороне ячейки.

     Хотя TStringGrid класс не предоставляет прямых способов управления  форматированием, он предоставляет обработчик события OnDrawCell, с помощью которого можно манипулировать форматированием ячейки.
Событие OnDrawCell
    Как уже упоминалось,  событие OnDrawCell наследуется от класса TDrawGrid, где оно продекларировано следующим образом:

       __property TDrawCellEvent OnDrawCell = {read=FOnDrawCell, write=FOnDrawCell};

   TDrawCellEvent имеет нестандартный тип события, разработанного специально для рендеринга элементов управления типа грид:
    typedef void __fastcall (__closure *TDrawCellEvent)
   ( System::TObject* Sender, long ACol,long ARow, Windows::TRect Rect, TGridDrawState State);

       Параметр Sender это указатель на сам объект StringGrid. Параметры ACol и ARow - индексы текущего столбца и строки ячейки, которая требует рендеринга, а параметр Rect определяет прямоугольник области рендеринга.

       Параметр State - перечисление, который показывает состояние текущей ячейки. Этот параметр может содержать следующие  значения: gdSelected, gdFocused и gdFixed.  Значения этого параметра определяют рендеринг ячейки или группы ячееек.


стр. 2
P  R  O  M  S  I  T  E
Статьи по С++Builder 6
страницы: 1   2   3   4   5   6   7   8
страницы: 1   2   3   4   5   6   7   8

Для отображения Облака ссылок
необходим
Adobe Flash Player 9
или выше.