![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить строку из середины Stringgrid а? [D6, Win95/98]
rank © (2002-04-25 02:07:00)Друзья! Подскажите пожалуйста как мне удалить строку из этого несчастного stringgrid"a. Проблема в том, что строка не последняя, а находится где-то внутри stringgrida, необходимо не просто стереть ее , но и сдвинуть всю таблицу вверх.
Заранее спасибо!!!!
KilkennyCat (2002-04-26 03:09:00) [1]Если все испробуешь - то уже не одну строку, а 7 удалишь.
rank (2002-04-26 02:34:00) [2]Спасибо ребята! Усе испробую!!!!!!
PaRL (2002-04-25 13:43:00) [3]Намудрили-то, намудрили...
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;
MBo (2002-04-25 12:29:00) [4]Удаление строки из позиции 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);
Андрей Сенченко (2002-04-25 09:23:00) [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;
Андрей Сенченко (2002-04-25 09:21:00) [6]Я так делал:
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;
Dy-Ty (2002-04-25 09:09:00) [7]Попробуй так, не проверял, но должно получиться, а вообще почитай Кулибу, там много чего можно найти
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
KilkennyCat (2002-04-25 05:53:00) [8]если воспользуешься TAdvStrigGrid,
то никахих проблем , удаляй хоть несколько нерядом лежащих строк, сдвиг будет автоматом.
3d[Power] (2002-04-25 03:46:00) [9]делаешь цикл, удаляешь строку стринггрида, а все последущие смещаешь вверх. после чего уменьшаешь rowcount на 1.