Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > StringGrid - как удалить строку в run-time


Автор: Vit 17.11.2002, 10:41
Сабж собственно

Автор: rhf 17.11.2002, 14:10
наверное придеться смещать все содержимое Грида
что-то типа этого
Код

with StringGrid do
begin
  for i:=n to RowCount-1 do Rows[i]:=Rows[i+1];
  RowCount:=RowCount-1;
end;


n - номер удаляемой строки

вот только нужно проверить... удалит ли он сам лишнюю строку из Rows

Автор: Vit 17.11.2002, 14:42
Да уж, удобно ничего не скажешь  :angry:

Автор: Song 17.11.2002, 22:03
Можно сделать наследника от TCustomGrid. А у последнего есть метод - DeleteRow()

Автор: Vit 18.11.2002, 00:35
Спасибо, Song! Это действительно то что нужно, для удаления текущей строки я сделал так:

Код

Type TFakeGrid=class(TCustomGrid);

procedure TForm1.MyDelete(Sender: TObject);
begin
 TFakeGrid(Grid).DeleteRow(Grid.row);
end;


Всё работает замечательно.

Автор: Fantasist 19.11.2002, 11:21
Цитата(Vit @ 17.11.2002, 16:35)
Код

Type TFakeGrid=class(TCustomGrid);

procedure TForm1.MyDelete(Sender: TObject);
begin
 TFakeGrid(Grid).DeleteRow(Grid.row);
end;


Всё работает замечательно.

Точно. Я кажись тоже когда-то так делал. Или это был не я?  :)
Это я к тому, что до сих пор гадаю, почему они не сделали этот метод public?

Автор: Vit 19.11.2002, 13:20
Цитата(Fantasist @ 18.11.2002, 18:21)
Это я к тому, что до сих пор гадаю, почему они не сделали этот метод public?

Знаешь, я уже со счёта сбился, сколько таких вот методов "похоронено" в VCL...

Автор: Fantasist 19.11.2002, 17:35
Цитата(Vit @ 19.11.2002, 05:20)
Знаешь, я уже со счёта сбился, сколько таких вот методов "похоронено" в VCL...

Да? Слушай, а ты их тогда все собери, и выпусти апгрейданную VCL.

Автор: Dapo 19.11.2002, 18:00
Может быть потому, что кроме DrawGrid и StringGrid есть еще и DBGrid? В случае с последним выше приведенный код работает как-то странно (удаляет последнюю строку в таблице).

Автор: Vit 19.11.2002, 22:53
Цитата(Guest @ 19.11.2002, 01:00)
Может быть потому, что кроме DrawGrid и StringGrid есть еще и DBGrid? В случае с последним выше приведенный код работает как-то странно (удаляет последнюю строку в таблице).

А причём здесь одно к третьему? Речь идёт не об изменении TCustomGrid, а только TStringGrid - который к TDBGrid не имеет никакого отношения

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)