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


TStringGrid, часть I

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

       Класс TCustomGrid содержит методы DeleteColumn () и DeleteRow () . Эти методы могут быть использованы для удаления определенного столбца или строки, соответственно. Поэтому в качестве альтернативы ручного подхода,  можно создать свой собственный класс как потомок TStringGrid класса, который обеспечивает доступ  к этим методам. Например:

       class TMyStringGrid : public TStringGrid
       {
       public:
         __fastcall TMyStringGrid(Component* AOwner) :TStringGrid(AOwner)
       {
       }
         void __fastcall RemoveCol(int AIndex)
       {
            TStringGrid::DeleteColumn(AIndex);
       }
       void __fastcall RemoveRow(int AIndex)
       {
           TStringGrid::DeleteRow(AIndex);
         }
       };

Работа с файлами

    Иногда надо использовать строки грида для отображения временных данных. Например, читать и писать данные из файла в грид и наоборот. У класса TStringGrid  нет таких штатных  возможностей, но т.к. ячейки StringGrid имеют тип строки, то можно использовать тип  TStrings * из других родственных классов.

Запись StringGrid в файл

    У класса TStrings есть метод SaveToFile (), который может быть использован для записи в файл. Для использования этого метода, необходимо сначала создать временный объект TStringList, который будет служить в качестве буфера. Затем перебором Cols (или строк), добавить содержимое каждой колонки (или строки) для этого буфера через метод  AddStrings (). Затем, вызвать SaveToFile () для записи содержимого буфера в  файл. Например:

       #include <memory>
       void __fastcall SaveCells( TStringGrid* StringGrid, const AnsiString& FileName)
       {
       std::auto_ptr<TStrings> SaveStrings( new TStringList());  
       const int col_count =StringGrid->ColCount;
       for (int index = 0; index < col_count; ++index)
       {
          SaveStrings->AddStrings(
            StringGrid->Cols[index]);
       }
       SaveStrings->SaveToFile(FileName);
       }

Загрузка StringGrid из файла

    Для  чтения из файла надо использовать метод LoadFromFile() класса TString. Всё как в предыдущем  примере, но наоборот.
       #include <memory>
       void __fastcall LoadCells(TStringGrid* StringGrid, const AnsiString& FileName)
       {
       std::auto_ptr<TStrings> LoadStrings( new TStringList());
       LoadStrings->LoadFromFile(FileName);
       int index = 0;
       const int col_count =  StringGrid->ColCount;
       const int row_count =  StringGrid->RowCount;
       for (int col=0;col<col_count;++col)
       {
            for (int row=0;row<row_count;++row)
            {
              StringGrid->Cells[col][row] = LoadStrings->Strings[index++];
           }
         }
       }

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