Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.08.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
15-1363638605
Юрий
2013-03-19 00:30
2013.08.18
С днем рождения ! 19 марта 2013 вторник


15-1363063128
Григорьев Антон
2013-03-12 08:38
2013.08.18
Кто помнит игру Sherlock? Покритикуйте мой вариант


15-1363564783
О-Сознание
2013-03-18 03:59
2013.08.18
Цветной TProgressBar.


15-1363737352
brother
2013-03-20 03:55
2013.08.18
Мерцание полос


3-1291885156
_guest_
2010-12-09 11:59
2013.08.18
Из отладчика перестал подключаться к FB