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

Вниз

Удаление пустых строк в StringGrid   Найти похожие ветки 

 
Паша5   (2004-04-20 14:33) [0]

Ситуация такая : есть StringGrid с пустыми строками как удалить все пустые строки?
Спасибо.


 
LM2   (2004-04-20 14:39) [1]

Только в цикле, находишь пустую строку, все нижние строки сдвигаешь на одну строчку, а RowCol := RowCol - 1;


 
ASMiD   (2004-04-20 14:40) [2]

Help смотри!

Rows Delete


 
Паша5   (2004-04-20 14:42) [3]

Пробоовал это...
Только если есть несколько пустых строк подряд, то сдвигается нижняя ПУСТАЯ и остается в таблице, а ее тоже надо удалить....
Рекурсия нужна ???


 
LM2   (2004-04-20 14:46) [4]

Ну тут сам думай, можешь проверку сделать, на следующую, если она тоже пустая, то сдвигай на 2 строки, тогда КолСтрок := КолСтрок - 2;


 
Паша5   (2004-04-20 14:55) [5]

а если их 50 или 100 подряд?
как осуществляется вызов процедуры из нее же самой ?


 
LM2   (2004-04-20 15:05) [6]

Ну тут уж тебе решать, сделай функцию которая возвращает кол-во пустых строк, а аргументом индекс текущей строки..


 
pasha_golub ©   (2004-04-20 15:38) [7]


var i:integer;
begin
SG.BeginUpdate;
for i:=SG.Rows[1].Count -1 downto 0 do
 if SG.Rows[1][i] = "" then SG.Rows[1].Delete(i);
SG.RowCount := SG.Rows[1].Count;
SG.EndUpdate;


 
WebErr ©   (2004-04-20 15:49) [8]


procedure DeleteVoids(var S: TStrings);
var
 I: Integer;
begin
 S.BeginUpdate;
 I := S.IndexOf("");
 while I <> -1 do
 begin
   S.Delete(I);
   I := S.IndexOf("");
 end;
 S.EndUpdate;
end;

Вот и всё! :))))


 
Остап   (2004-04-20 16:06) [9]

в итоге получим EInvalidGridOperation "Cannot insert or delete rows from grid"


 
WebErr ©   (2004-04-20 16:12) [10]


> Остап   (20.04.04 16:06) [9]

Причём здесь вообще Grid?!


 
WebErr ©   (2004-04-20 16:16) [11]

У меня всё работает:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Panel1: TPanel;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
Memo1.Lines.BeginUpdate;
I := Memo1.Lines.IndexOf("");
while I <> -1 do
begin
  Memo1.Lines.Delete(I);
  I := Memo1.Lines.IndexOf("");
end;
Memo1.Lines.EndUpdate;
end;

end.


 
WebErr ©   (2004-04-20 16:17) [12]

Опс! Опять торможу!


 
Остап   (2004-04-20 16:17) [13]

Ситуация такая : есть StringGrid с пустыми строками как удалить все пустые строки?
Спасибо.


или я опять чего-то недопонимаю?


 
Остап   (2004-04-20 16:18) [14]

а при чем тут Memo?


 
NAlexey ©   (2004-04-20 16:19) [15]

>WebErr ©   (20.04.04 16:12) [10]
>Причём здесь вообще Grid?!
Вот здесь ты правильно сказал, а причем здесь грид? Грид лишь отображает твои данные, зачем же его так мучать.


 
Anatoly Podgoretsky ©   (2004-04-20 16:20) [16]

NAlexey ©   (20.04.04 16:19) [15]
Ну ты серьезно это про TStringGrid?


 
NAlexey ©   (2004-04-20 16:21) [17]

>Anatoly Podgoretsky ©   (20.04.04 16:20) [16]
Нет, а что?


 
Остап   (2004-04-20 16:37) [18]

type TCrackStringGrid = class (TStringGrid)
 public
   procedure RowMoved(FromIndex, ToIndex: Longint); override;
end;

implementation

procedure TCrackStringGrid.RowMoved(FromIndex, ToIndex: Integer);
begin
 inherited;
end;

procedure TForm1.lbClick(Sender: TObject);
var i, EmptyRows: integer;
begin
 EmptyRows:=0;
 i:=0;
 repeat
   if (g1.Cols[0][i]="") and (EmptyRows<g1.RowCount-i) then
   begin
// пустые строки сдвигаешь в самый низ грида
     TCrackStringGrid(g1).RowMoved(i, g1.RowCount-1);
     Inc(EmptyRows);
   end
   else Inc(i);
 until i=g1.RowCount;
// говоришь гриду новое кол-во строк.
 g1.RowCount:=g1.RowCount-EmptyRows;
end;


у меня g1 - TStringGrid с одной колонкой;

кажись, работает.


 
WebErr ©   (2004-04-20 16:49) [19]

Тогда уж не RowMoved перегружать, а DeleteRow!


 
Остап   (2004-04-20 16:56) [20]

ой, только не надо так кричать ))

признаю, DeleteRow лучше. )



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.084 c
1-1082637756
killer
2004-04-22 16:42
2004.04.11
Столбцы в StringGrid


14-1079338777
IceBeerg
2004-03-15 11:19
2004.04.11
Help! Комп не включается


6-1076258752
Kor@l
2004-02-08 19:45
2004.04.11
TserverSocket and TclienSocket


14-1082118947
Bel
2004-04-16 16:35
2004.04.11
Эксперимент с координацией.


1-1082746422
Bairum
2004-04-23 22:53
2004.04.11
Delphi+Excel