Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверка заполненности ячеек компонента TStringGrid [D7, XP]


kat_nik ©   (2006-11-16 19:40:00) 

Здравствуйте! Есть TStringGrid. В него вносятся данные. Эти данные нужно записать в двумерный динамический массив, размеры которого зависят от количества заполненных ячеек TStringGrid. Как определить количество строк, в которых есть записи, чтобы остальные (пустые) не учитывать? И каким образом вообще проверяется заполненность ячейки?


kat_nik   (2006-11-17 17:26:00) [1]

Большое спасибо всем откликнувшимся!!!
(Предложение от RASkov'a в моем случае было самым подходящим)


RASkov   (2006-11-16 22:45:00) [2]

Если это разовая процедура то можно и так:
SetLength(Arr, Grid.RowCount, Grid.ColCount);
ArrCount:=0;
Затем пробежаться по строкам и если хоть одна ячейка не '' то добавить в массив и INC(ArrCount);
По окончанию заново установить размер массива с учетом ArrCount. Т.е. меняется только одно измерение.
Проверить можно так:
for R:= 0 to Grid.RowCount-1 do
for C:= 0 to Grid.ColCount-1 do
 if Trim(Grid.Cell[C,R])<>'' then begin INC(ArrCount);....


KilkennyCat   (2006-11-16 21:28:00) [3]

Но вообще, каюсь, я усложнил задачу. Невнимательно прочел тему. Судя по всему, пустая ячейка между заполненными вовсе не означает пустой элемент массива.


KilkennyCat   (2006-11-16 21:23:00) [4]

> [5] Kolan ©   (16.11.06 20:32)


> А если стерли? Сразу удалять из массива.


а не пофиг ли? если у меня на событии изменения состяния ячейки висит что-то подобное array[col, row] := grid.cells[col, row];, то что меня еще должно волновать? Пусть стирают, заменяют, что угодно делают - если в конце идет заполнение массива, то результат будет идентичным. Разумеется, возможно, на основании массива потом делается откат изменений. В этом случае, конечно, не подходит. Ибо он всегда будет идентичным гриду. Поэтому и добавил: если не противоречит логике работы.


Kolan   (2006-11-16 20:32:00) [5]

> есть. отслеживать внесение данных и сразу заполнять массив.
> Если, конечно, не противоречит логике работы.

Да ну - геморой...особо не выиграешь, а ошибки могут быть..
А если стерли? Сразу удалять из массива.


kat_nik   (2006-11-16 20:30:00) [6]

И как именно это сделать? Пожалуйста, опишите, если не трудно. Мне не хватает знания "слов" изучаемого "ин.яза"


KilkennyCat   (2006-11-16 20:09:00) [7]

> есть путь короче


есть. отслеживать внесение данных и сразу заполнять массив. Если, конечно, не противоречит логике работы.


kat_nik   (2006-11-16 19:57:00) [8]

Ага? Просто думалось, что есть путь короче. Все равно СПАСИБО!


API   (2006-11-16 19:43:00) [9]

Как насчет проверить значение в ячейке на неравенство пустой строке?
Ячейки входят в строки или в столбцы. Проверяй в цикле, ага?


Наверх

Титульная страница Поиск, карта сайта Написать письмо