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

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

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);


Извиняюсь, второй способ криво передал :))


Наверх

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