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


TStringGrid, часть I

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

Прорисовка текста

       В дополнение к событию OnDrawCell, классTStringGrid наследует свойство DefaultDrawing, которое впервые появилась в классе TCustomGrid. Когда это свойство имеет значение "истина" (по умолчанию), то каждая ячейка автоматически прорисовывается в соответствии с параметром State. В этом случае, в обработчике событий OnDrawCell, требуется лишь предоставить отформатированный текст. Например, чтобы прижать содержимое каждой ячейки в правой стороне сетки, надо выполнить код:

       #include <cassert>
       void __fastcall TForm1::FormCreate(TObject *Sender)
       {
           for (int i = 0;i < StringGrid1 -> ColCount; i++ )
              for (int j = 0;j < StringGrid1 -> RowCount; j++ )
                      StringGrid1 -> Cells[i][j] = "asd";
       }
//---------------------------------------------------------------------------
       void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
            int ARow, TRect &Rect, TGridDrawState State)
       {
         TStringGrid* StringGrid = static_cast<TStringGrid*>(Sender);
         assert(StringGrid != NULL);
       StringGrid->Canvas->FillRect(Rect);

         AnsiString text(StringGrid->Cells[ACol][ARow]);
         RECT RText = static_cast<RECT>(Rect);
       InflateRect(&RText, -3, -3);

       DrawText(StringGrid->Canvas->Handle, text.c_str(), text.Length(), &RText,
          DT_RIGHT  |  DT_SINGLELINE | DT_VCENTER );
       }


Метод DrawText ()  функции API  идеально подходит  для работы с текстом. Как и в предыдущем примере, последний параметр для этой функции может быть определен как комбинация  нескольких значений для форматирования текста. Для левого смещения, надо  заменить флаг  DT_RIGHT  на флаг  DT_LEFT, для размещения по центру использовать флаг DТ_СЕNTER.
Вы можете использовать эту технику для регулировки цвета и стиля текста.

Вставка или удаление строки или столбца

Свойства ColCount и RowCount  могут быть использованы для корректировки количества столбцов и строк, соответственно, но для вставки колонки  или строки штатных методов нет. Например, если вам необходимо добавить строку в конце строки по сетке, вы просто увеличиваем RowCount. Однако если вам нужно вставить строку, например, в середину грида, то RowCount не поможет.
Как вы уже могли догадаться, вставка строки или столбца  требует двух шагов:
(шаг 1) Добавить колонку или строку в конец грида, а затем (шаг 2) перенести содержимое каждой  (т.е., расположенной после вставки ) колонки или строки на одну позицию. Например, если грид состоит из пяти строк, и необходимо вставить новую строку  между первой и второй строками, сначала необходимо добавить новую строку в конец грида, а затем перенести содержание второй по пятую строки вниз на одну строку. Этот процесс может быть выполнен с помощью следующего кода:

стр. 3
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
или выше.