![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка заполненности ячеек компонента 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]Как насчет проверить значение в ячейке на неравенство пустой строке?
Ячейки входят в строки или в столбцы. Проверяй в цикле, ага?