Форум: "Начинающим";
Текущий архив: 2013.08.18;
Скачать: [xml.tar.bz2];
ВнизStringgrid удаление пустых строк Найти похожие ветки
← →
Mikishanya © (2012-11-27 10:33) [0]Всем доброго времени суток! Подскажите пожалуйста как удалить все пустые строки в 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 строки.
З.Ы.Всех прошу отвечать по делу. Не посылать меня "аб стену" и в том же духе. :)
Заранее благодарен за помощь!
← →
Mikishanya © (2012-11-27 10:34) [1]
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);
Извиняюсь, второй способ криво передал :))
← →
Jeer © (2012-11-27 11:05) [2]Наверное, учесть, что с каждый delrow изменяется .RowCount
← →
Mikishanya © (2012-11-27 11:07) [3]
> Наверное, учесть, что с каждый delrow изменяется .RowCount
я об этом тоже подумал, но не могу это обойти.
если предположим все пустые строки с помощью MoveRow переместить вниз, то как удалить их подрят все?
← →
Jeer © (2012-11-27 11:14) [4]По очереди.
← →
MBo © (2012-11-27 11:16) [5]
for i := Stringgrid1.RowCount - 1 downto Stringgrid1.FixedRows do...
← →
Jeer © (2012-11-27 11:20) [6]1.Нашли первую пустую строку из сгруппированных в конце грида.
2.Запомнили индекс idx.
3. Удалили
while idx <= *.RowCount do delrow(grid, idx);
← →
Jeer © (2012-11-27 11:25) [7]Но лучше не делать многих телодвижений, а обойтись одним "просмотром"
idx := 1; // учесть fixed row, если надо
while idx <= grid.RowCount do
if *.Text = "" then delrow(grid, idx)
else Inc(idx);
← →
Mikishanya © (2012-11-27 11:35) [8]
> Но лучше не делать многих телодвижений, а обойтись одним
> "просмотром"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 строку больше.
Всем огромное спасибо за помощь! Можно тему закрывать...
← →
Иван (2012-12-12 18:48) [9]Удалено модератором
← →
Иван (2012-12-12 18:50) [10]Удалено модератором
← →
O'ShinW © (2012-12-13 11:02) [11]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.08.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c