Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Вставка и удаление строк из TStringGrid

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

Вставка и удаление строк из TStringGrid

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

// For this tip you need a StringGrid1 and a Button1. 
// Fur diesen Tip braucht man ein StringGrid1 und einen Button1. 


{...}
 type
   TForm1 = class(TForm)
     StringGrid1: TStringGrid;
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     {...}
   public
     {...}
   end;

 type
   TStringGridHack = class(TStringGrid)
   protected
     procedure DeleteRow(ARow: Longint); reintroduce;
     procedure InsertRow(ARow: Longint);
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.DFM}

 procedure TStringGridHack.DeleteRow(ARow: Longint);
 var
   GemRow: Integer;
 begin
   GemRow := Row;
   if RowCount > FixedRows + 1 then
     inherited DeleteRow(ARow)
   else
     Rows[ARow].Clear;
   if GemRow < RowCount then Row := GemRow;
 end;

 procedure TStringGridHack.InsertRow(ARow: Longint);
 var
   GemRow: Integer;
 begin
   GemRow := Row;
   while ARow < FixedRows do Inc(ARow);
   RowCount := RowCount + 1;
   MoveRow(RowCount - 1, ARow);
   Row := GemRow;
   Rows[Row].Clear;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   // Insert Row, Zeile hinzufugen 
  TStringGridHack(StringGrid1).InsertRow(1);
   // Remove Row, Zeile entfernen 
  TStringGridHack(StringGrid1).DeleteRow(2);
 end;

 end.

Привет! Вот перевод текста на русский язык:

Класс TStringGridHack Этот класс является пользовательским классом, который наследуется от TStringGrid. Он добавляет две процедуры: DeleteRow и InsertRow. Эти процедуры используются для манипуляции структурой строк в гриде.

Процедура DeleteRow Эта процедура удаляет указанную строку из грида. Она принимает целочисленный параметр ARow, который представляет номер строки, которую нужно удалить. Вот что она делает: 1. Она сохраняет текущий номер строки (GemRow) в локальной переменной. 2. Если количество строк больше или равно фиксированным строкам (т.е., первым строкам, которые не могут быть удалены) плюс 1, она вызывает процедуру DeleteRow, которая наследуется от TStringGrid, чтобы удалить строку. Это необходимо потому, что TStringGrid имеет внутреннюю логику для удаления строк. 3. Если количество строк не больше или равно фиксированным строкам плюс 1, она просто очищает данные строки вместо удаления строки.

Процедура InsertRow Эта процедура вставляет новую строку в указанное положение в гриде. Она принимает целочисленный параметр ARow, который представляет номер строки, где должна быть вставлена новая строка. Вот что она делает: 1. Она сохраняет текущий номер строки (GemRow) в локальной переменной. 2. Она увеличивает количество строк, чтобы создать место для новой строки. 3. Она перемещает существующие строки вниз на один шаг с помощью процедуры MoveRow. 4. Она устанавливает текущий номер строки обратно в оригинальное значение (GemRow) и очищает данные новой строки.

Обработчик события Button1Click Это обработчик события, который вызывается при клике кнопки с ID Button1. Вот что он делает: 1. Он вставляет новую строку на позицию 1 с помощью процедуры InsertRow. 2. Он удаляет строку на позиции 2 с помощью процедуры DeleteRow.

Заключение Код демонстрирует, как можно расширить функциональность компонента TStringGrid добавлением пользовательских процедур для вставки и удаления строк. Класс TStringGridHack предоставляет эти процедуры, которые могут быть использованы из обработчика события или других частей вашего приложения Delphi.

Вот несколько предложений: 1. Вам может понравиться добавить обработку ошибок в процедуре DeleteRow, чтобы предотвратить удаление строки, которая находится вне диапазона. 2. Процедура InsertRow могла быть улучшена, если бы пользователь мог указать, где должна быть вставлена новая строка (начало или конец грида). 3. Вам может понравиться использовать более надежный подход для удаления строк, например, вызвать процедуру DeleteRow на оригинальном компоненте TStringGrid, а не модифицировать его вручную.

Надеюсь, это поможет! Пожалуйста, если у вас есть вопросы или вам нужна дополнительная помощь.

В статье описывается хак для строки TStringGrid в Delphi, который позволяет вставлять и удалять строку из TStringGrid с помощью методов InsertRow и DeleteRow.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TStringGrid и TDrawGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-11 00:06:16/0.012943029403687/1