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

TStringGrid, часть I

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

           StringGrid  идеально подходит для отображения больших объемов данных в компактной табличной форме. Концептуально StringGrid проще, чем графическое представление двумерного массива строк. Несмотря на эту концептуальную простоту, работа с классом TStringGrid иногда может вызывать трудности.

          В этой статье я расскажу вам,  как эффективно использовать класс TStringGrid. Я начну с краткого обзора того, где класс лежит в иерархии VCL, а затем мы обсудим некоторые из наиболее часто используемых свойств. Далее, я рассмотрю некоторые  практические аспекты применения класса TStringGrid :  как отображать текст каждой ячейки в пользовательском формате, как вставлять и удалять строки или столбцы, и как сохранить StringGrid  в файл и как загрузить  StringGrid  из файла.
.
       Иерархия класса

          TStringGrid класс является прямым потомком класса TDrawGrid , который в свою очередь является потомком класса TCustomGrid:  базового класса для всех стандартных элементов управления StringGrid . Класс TCustomGrid является потомком TCustomControl, который обеспечивает основную функциональность элементов управления Grid - типов .
                  Класс TDrawGrid  добавляет к родительскому классу  лишь методы CellRect () и MouseToCell (). Кроме того, добавлено несколько событий, обработчики которых выполняют  унаследованные методы. Например, в обработчике событий OnDrawCell вызывается метод DrawCell (). Реализация класса TDrawGrid, содержащая менее 100 строк кода, получает почти все свои функциональные возможности класса TCustomGrid.  С другой стороны, родительские классы содержат почти 3000 строк кода. Короче говоря, объект TDrawGrid  по существу расширяет объект  CustomGrid.
          Класс TStringGrid расширяет TDrawGrid класс за счёт поддержки  AnsiString ячеек и применение определенных ассоциаций данных. Строки доступны через свойства ячеек, колонок, строк, в то время как данные связаны с объектами.

       Свойства ячеек, колонок, строк

          Каждой ячейки в StringGrid могут быть присвоены значения типа AnsiString. Это присвоение осуществляется через свойства ячеек, колонок,  строк.
       Свойство Cells обеспечивает  манипуляции содержимым конкретных ячеек. Это двумерный массив и описывается следующим синтаксисом:

       __property AnsiString Cells [int ACol] [int ARow] = ( read = GetCells, write = SetCells);

       ACol параметр указывает на  индекс столбца, к которому принадлежит ячейка, а параметр ARow указывает на  индекс строки ячейки. Например, чтобы присвоить значение первой (вверху слева), не фиксированной ячейке, напишем код:
       const int target_col  =  StringGrid1->FixedCols;// Значение свойства FixedCols и FixedRows устан. по умолчанию в 1, а счет колонок и строк

       const int target_row  =  StringGrid1->FixedRows;//начинается с 0. Поэтому и адресуется верхняя левая нефиксир. ячейка.

       StringGrid1 -> Cells[target_col] [target_row]  =  "New String"; // С таким же успехом в частном случае можно:

       const int target_col =1; 
                В свойствах FixedCols и FixedRows надо указать количество фиксированных столбцов и строк, соответственно.
Чтобы извлечь значение из определенной ячейки, надо поступить аналогичным образом. Например, следующий код отображает содержимое последней (нижней правой) ячейки:

       const int target_col = StringGrid1->ColCount - 1;
       const int target_row = StringGrid1->RowCount - 1;
       ShowMessage(StringGrid1->Cells [target_col][target_row]);

       Свойства ColCount и RowCount определяют количество столбцов и строк (включая фиксированные) соответственно.
       Свойства Cels и Cols  обеспечивают доступ к целой строке или к целому столбцу, соответственно. Каждое из этих свойств  определены в виде массива TStrings *:

       __property Classes::TStrings*  Cols[int Index] = {read=GetCols, write=SetCols};
       __property Classes::TStrings*  Rows[int Index] = {read=GetRows, write=SetRows};

       Свойства Cols и  Rows. Первое свойство - Cols. Это свойство представляет собой одномерный массив со списками строк. Поэтому, если мы укажем конкретный столбец, например 4-й, то в этом свойстве Cols  будут доступны  значения всех ячеек принадлежащих этому столбцу.  Значение строки в указанной ячейке доступно через свойство String. (Свойство String не доступно в режиме визуального проектирования, точнее его там просто нет).


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