Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.032 c
14-1082099661
Igorek
2004-04-16 11:14
2004.05.09
Есть идея - супер мотоцикл! Критикуйте!


6-1079517703
NetMan2
2004-03-17 13:01
2004.05.09
Обновление списка клиентов ClientSocket


8-1075583555
Magician_g
2004-02-01 00:12
2004.05.09
Как из последовательности BMP сделать avi.


3-1081502392
stud
2004-04-09 13:19
2004.05.09
вопрос по ibdataset


8-1076785354
Grinder
2004-02-14 22:02
2004.05.09
параллельная работы media player





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский