Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизУдаление пустых строк в StringGrid Найти похожие ветки
← →
Паша5 (2004-04-20 14:33) [0]Ситуация такая : есть StringGrid с пустыми строками как удалить все пустые строки?
Спасибо.
← →
Паша5 (2004-04-20 14:33) [0]Ситуация такая : есть StringGrid с пустыми строками как удалить все пустые строки?
Спасибо.
← →
LM2 (2004-04-20 14:39) [1]Только в цикле, находишь пустую строку, все нижние строки сдвигаешь на одну строчку, а RowCol := RowCol - 1;
← →
LM2 (2004-04-20 14:39) [1]Только в цикле, находишь пустую строку, все нижние строки сдвигаешь на одну строчку, а RowCol := RowCol - 1;
← →
ASMiD (2004-04-20 14:40) [2]Help смотри!
Rows Delete
← →
ASMiD (2004-04-20 14:40) [2]Help смотри!
Rows Delete
← →
Паша5 (2004-04-20 14:42) [3]Пробоовал это...
Только если есть несколько пустых строк подряд, то сдвигается нижняя ПУСТАЯ и остается в таблице, а ее тоже надо удалить....
Рекурсия нужна ???
← →
Паша5 (2004-04-20 14:42) [3]Пробоовал это...
Только если есть несколько пустых строк подряд, то сдвигается нижняя ПУСТАЯ и остается в таблице, а ее тоже надо удалить....
Рекурсия нужна ???
← →
LM2 (2004-04-20 14:46) [4]Ну тут сам думай, можешь проверку сделать, на следующую, если она тоже пустая, то сдвигай на 2 строки, тогда КолСтрок := КолСтрок - 2;
← →
LM2 (2004-04-20 14:46) [4]Ну тут сам думай, можешь проверку сделать, на следующую, если она тоже пустая, то сдвигай на 2 строки, тогда КолСтрок := КолСтрок - 2;
← →
Паша5 (2004-04-20 14:55) [5]а если их 50 или 100 подряд?
как осуществляется вызов процедуры из нее же самой ?
← →
Паша5 (2004-04-20 14:55) [5]а если их 50 или 100 подряд?
как осуществляется вызов процедуры из нее же самой ?
← →
LM2 (2004-04-20 15:05) [6]Ну тут уж тебе решать, сделай функцию которая возвращает кол-во пустых строк, а аргументом индекс текущей строки..
← →
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;
← →
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;
Вот и всё! :))))
← →
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"
← →
Остап (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: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: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]Опс! Опять торможу!
← →
WebErr © (2004-04-20 16:17) [12]Опс! Опять торможу!
← →
Остап (2004-04-20 16:17) [13]Ситуация такая : есть StringGrid с пустыми строками как удалить все пустые строки?
Спасибо.
или я опять чего-то недопонимаю?
← →
Остап (2004-04-20 16:17) [13]Ситуация такая : есть StringGrid с пустыми строками как удалить все пустые строки?
Спасибо.
или я опять чего-то недопонимаю?
← →
Остап (2004-04-20 16:18) [14]а при чем тут Memo?
← →
Остап (2004-04-20 16:18) [14]а при чем тут Memo?
← →
NAlexey © (2004-04-20 16:19) [15]>WebErr © (20.04.04 16:12) [10]
>Причём здесь вообще Grid?!
Вот здесь ты правильно сказал, а причем здесь грид? Грид лишь отображает твои данные, зачем же его так мучать.
← →
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?
← →
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]
Нет, а что?
← →
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 с одной колонкой;
кажись, работает.
← →
Остап (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!
← →
WebErr © (2004-04-20 16:49) [19]Тогда уж не RowMoved перегружать, а DeleteRow!
← →
Остап (2004-04-20 16:56) [20]ой, только не надо так кричать ))
признаю, DeleteRow лучше. )
← →
Остап (2004-04-20 16:56) [20]ой, только не надо так кричать ))
признаю, DeleteRow лучше. )
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.06 c