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

Вниз

Как удалить строку из середины Stringgrid а?   Найти похожие ветки 

 
rank ©   (2002-04-25 02:07) [0]

Друзья! Подскажите пожалуйста как мне удалить строку из этого несчастного stringgrid"a. Проблема в том, что строка не последняя, а находится где-то внутри stringgrida, необходимо не просто стереть ее , но и сдвинуть всю таблицу вверх.
Заранее спасибо!!!!


 
3d[Power] ©   (2002-04-25 03:46) [1]

делаешь цикл, удаляешь строку стринггрида, а все последущие смещаешь вверх. после чего уменьшаешь rowcount на 1.


 
KilkennyCat ©   (2002-04-25 05:53) [2]

если воспользуешься TAdvStrigGrid,
то никахих проблем , удаляй хоть несколько нерядом лежащих строк, сдвиг будет автоматом.


 
Dy-Ty   (2002-04-25 09:09) [3]

Попробуй так, не проверял, но должно получиться, а вообще почитай Кулибу, там много чего можно найти

type
TCSGrid = class(TStringGrid)
private
public
procedure MoveRow (FromIndex, ToIndex: Longint);
end;

//-----------------------------------------------------------
procedure TCSGrid.MoveRow(FromIndex,ToIndex: Longint);
begin
RowMoved(FromIndex, ToIndex); { Защищенный метод TStringGrid }
end;
//------------------------------------------------------------
procedure DeleteRow(Sender: TStringGrid; FromIndex: Longint);
begin
if FromIndex>l;=0 then
with TCSGrid(Sender) do
if (RowCount>0)and(FromIndex<RowCount) then begin

if (FromIndex<RowCount-1) then
MoveRow(FromIndex,RowCount-1);
Rows[RowCount-1].Clear;
RowCount := RowCount-1;
end else MessageBeep(0)
else MessageBeep(0);
end;


уважаю авторские права
Создано: Dennis Passmore
1929 Mango Tree Drive
Edgewater, Fl. 32141
CIS: 71640,2464
Март 1, 1996




 
Андрей Сенченко ©   (2002-04-25 09:21) [4]

Я так делал:

GridRow := { здесь ставим номер удаляемой строки } ;
// Перемещаем строки наверх
For i := 0 to FmMain.StGridWork.ColCount - 1 do
For j := GridRow to FmMain.StGridWork.RowCount - 1 do
FmMain.StGridWork.cells[i,j] := FmMain.StGridWork.cells[i,j+1];
FmMain.StGridWork.RowCount := FmMain.StGridWork.RowCount - 1;


 
Андрей Сенченко ©   (2002-04-25 09:23) [5]

Я так делал:

GridRow := { здесь ставим номер удаляемой строки } ;
// Перемещаем строки наверх
For i := 0 to FmMain.StGridWork.ColCount - 1 do
For j := GridRow to FmMain.StGridWork.RowCount - 1 do
FmMain.StGridWork.cells[i,j] := FmMain.StGridWork.cells[i,j+1];
FmMain.StGridWork.RowCount := FmMain.StGridWork.RowCount - 1;


 
MBo ©   (2002-04-25 12:29) [6]

Удаление строки из позиции N (SG-StringGrid1)

if N<SG.RowCount-1 then
for i:=N to SG.RowCount-2 do
SG.Rows[i].Assign(SG.Rows[i+1]);
SG.RowCount:= SG.RowCount-1;


альтернатива – использование protected метода TCustomGrid DeleteRow
type
TXGrid=class(TCustomGrid);

if N<SG.RowCount then
TXGrid(StringGrid1).DeleteRow(N);


 
PaRL ©   (2002-04-25 13:43) [7]

Намудрили-то, намудрили...

var k, m : integer;
begin
if Form1.SG.RowCount < 3 then Exit;
for k := Form1.SG.Row to Form1.SG.RowCount-1 do
for m := 0 to SG.ColCount-1 do
SG.Cells[m,k] := SG.Cells[m,k+1];

Sg.RowCount := SG.RowCount-1;
SG.Height := SG.Height-24;
end;


 
rank ©   (2002-04-26 02:34) [8]

Спасибо ребята! Усе испробую!!!!!!


 
KilkennyCat ©   (2002-04-26 03:09) [9]

Если все испробуешь - то уже не одну строку, а 7 удалишь.



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
3-26007
Chepura Sergey
2002-04-15 17:42
2002.05.09
Поиск в таблицах Intrbase


1-26113
Сатир
2002-04-24 15:10
2002.05.09
TreeView: Insert Image


1-26062
Александр_30
2002-04-25 09:20
2002.05.09
получение значений массива из функции


1-26117
vlv
2002-04-24 14:37
2002.05.09
Обработка нажатия клавиш


14-26250
vopros
2002-03-29 15:43
2002.05.09
Гибнет форум (этот).IronHawk задай еще пару вопросов а?