Alex8
Зарегистрирован: 23.03.2002 Сообщения: 5
|
Добавлено: Вт Апр 16 2002 20:49 Заголовок сообщения: в BCB работа с StringGrid |
|
|
Никак не могу динамически добавлять строки и столбцы а также их удалять!!! при использовании StringGrid1->Rows->Add("Строка"); StringGrid1->Rows->D.. другую строку и аналогичных функций выдается сообщение: [C++ Error] Unit1.cpp(1: E2193 Too few parameters in call to '_fastcall TStringGrid::GetRows(int)' причем ЭТУ ::GetRows(int) я вообще не писал у себя в коде! Что делать ума не приложу, или может добавлять и удалять строки надо по другому?(желательно их вставлять внутри таблицы а не с краю но это может можно сделать функцией Rows->Exchange(1,2), но и она выдает ошибку) Помогите неопытному... |
|
Adil Гость
|
Добавлено: Ср Апр 17 2002 09:47 Заголовок сообщения: Re: в BCB работа с StringGrid |
|
|
Тебе надо бы поподробнее почитать, что есть __property. В данном случае TStrigGrid::Rows суть: __property Classes::TStrings* Rows[int Index] = {read=GetRows/*ВОТ ОНА*/, write =SetRows}; причем где-то в grids.hpp она объявлена как: Classes::TStrings* GetRows(int RowIndex); Т.е., грубо говоря, свойство Rows - это МАССИВ указателей на объекты типа TStrings, каждый из который отвечает за одну строку таблицы - Rows[i] это список всех AnsiSting-ов i-ой строки таблицы (по колонкам) Например, i-ая строка j-ый столбец через Rows: str_i_j=SG1->Rows[i]->Strings[j]; (хотя нагляднее через Cells: str_i_j=SG1->Cells[i][j]). Теберь о добавлении строки - непонятно, что ты имеешь ввиду - увеличить число строк в таблицы или добавить текст в в уже имеющуюся стороку, поэтому напишу про оба - необессудь за лишнее. Увеличить/уменьшить число строк просто: RowCount+=N;(-=N) Заполнять строки текстом можно двумя (sorry - больше конечно - но эти самые простые) способами: 1. Используя свойство Cells[ACol][ARow], ex.: i-ый столбец j-ая строка SG1->Cells[i][j]="AAAAAAA"; и пробежать по всем i от до RowCount-1 2. Используя свойство Rows[ARow], ex.: TStringList *sl=new TStringList sl->LoadFromFile("list.txt"); SG1->Rows[4]->Assign(sl); //именно Assign, нелзя Rows[4]=0;! delete sl; в четвернтой строке будут лежать строки из файла list.txt, разобранные по колонкам - насколько этих колонок хватит.
Удачи. |
|