![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Stringgrid удаление пустых строк [D7]
Mikishanya © (2012-11-27 10:33:00)Всем доброго времени суток! Подскажите пожалуйста как удалить все пустые строки в stringgrid?
Предположим 1 и 3 строки с текстом а 2 и 4 пустые.
Пробовал и так
procedure TForm1.delrow(grid: TStringgrid; row: integer);
begin
mgrid(grid).DeleteRow(row);
end;
procedure TForm1.Button2Click(Sender: TObject);
var r,c,i,j: integer;
begin
r:=stringgrid1.RowCount;
c:=stringgrid1.ColCount;
for i:=1 to r-1 do
begin
if trim(stringgrid1.Rows[i].Text)='' then
delrow(stringgrid1,i);
end;
end;
и эдак
CODE>
procedure TForm1.delrow(grid: TStringgrid; row: integer);
begin
mgrid(grid).DeleteRow(row);
end;
procedure TForm1.Button2Click(Sender: TObject);
var r,c,i,j: integer;
begin
r:=stringgrid1.RowCount;
c:=stringgrid1.ColCount;
for i:=1 to r-1 do
begin
if stringgrid1.cells[j,i] then
delrow(stringgrid1,i);
end;
end;
удаляет либо все строки одну оставляет пустую, либо также удаляет все строки но оставляет 0 и 1 строки.
З.Ы.Всех прошу отвечать по делу. Не посылать меня "аб стену" и в том же духе. :)
Заранее благодарен за помощь!
O'ShinW (2012-12-13 11:02:00) [1]Удалено модератором
Иван (2012-12-12 18:50:00) [2]Удалено модератором
Иван (2012-12-12 18:48:00) [3]Удалено модератором
Mikishanya (2012-11-27 11:35:00) [4]
> Но лучше не делать многих телодвижений, а обойтись одним
> "просмотром"idx := 1; // учесть fixed row, если надоwhile
> idx <= grid.RowCount do if *.Text = '' then delrow(grid,
> idx) else Inc(idx);
Пошла родимая! Спасибо огромное!
только не idx <= grid.RowCount а просто idx < grid.RowCount в первом случае удаляло на 1 строку больше.
Всем огромное спасибо за помощь! Можно тему закрывать...
Jeer (2012-11-27 11:25:00) [5]Но лучше не делать многих телодвижений, а обойтись одним "просмотром"
idx := 1; // учесть fixed row, если надо
while idx <= grid.RowCount do
if *.Text = '' then delrow(grid, idx)
else Inc(idx);
Jeer (2012-11-27 11:20:00) [6]1.Нашли первую пустую строку из сгруппированных в конце грида.
2.Запомнили индекс idx.
3. Удалили
while idx <= *.RowCount do delrow(grid, idx);
MBo (2012-11-27 11:16:00) [7]
for i := Stringgrid1.RowCount - 1 downto Stringgrid1.FixedRows do...
Jeer (2012-11-27 11:14:00) [8]По очереди.
Mikishanya (2012-11-27 11:07:00) [9]
> Наверное, учесть, что с каждый delrow изменяется .RowCount
я об этом тоже подумал, но не могу это обойти.
если предположим все пустые строки с помощью MoveRow переместить вниз, то как удалить их подрят все?
Jeer (2012-11-27 11:05:00) [10]Наверное, учесть, что с каждый delrow изменяется .RowCount
Mikishanya (2012-11-27 10:34:00) [11]
procedure TForm1.Button2Click(Sender: TObject);
var r,c,i,j: integer;
begin
r:=stringgrid1.RowCount;
c:=stringgrid1.ColCount;
for i:=1 to r-1 do
begin
if stringgrid1.cells[j,i]='' then
delrow(stringgrid1,i);
Извиняюсь, второй способ криво передал :))