Динамическое добавление строк в TDBGrid в Delphi без подключения к базе данных
При работе с компонентом TDBGrid в Delphi часто возникает необходимость динамически добавлять строки с данными. Это возможно сделать, не используя внешнюю базу данных, и в данной статье мы рассмотрим, как это можно реализовать.
Использование TClientDataSet
Один из способов – использование компонента TClientDataSet. Этот компонент позволяет работать с данными, как если бы они хранились в базе данных, но на самом деле данные могут быть сохранены в файле в формате, специфичном для Delphi, или в XML, в зависимости от версии используемой среды разработки.
procedure TForm1.AddRowToGrid(const AData: TArray<string>);
var
LRecord: TClientDataSet;
begin
LRecord := TClientDataSet.Create(nil);
try
LRecord.FieldDefs.Clear;
for var i := 0 to Length(AData) - 1 do
LRecord.FieldDefs.Add(DataSetFieldDef.Create(LRecord.DataSetProvider, 'Field' + IntToStr(i), ftString, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, AData[i].Length));
LRecord.CreateDataSet;
LRecord.Append;
for var i := 0 to High(AData) do
LRecord.FieldByName('Field' + IntToStr(i)).AsString := AData[i];
DBGrid1.Dataset.AddNewNode(LRecord);
finally
LRecord.Free;
end;
end;
Для добавления строки в TDBGrid, сначала создайте экземпляр TClientDataSet, затем определите поля, которые должны быть в строке. После этого добавьте запись, установите значения полей и добавьте новую узловую запись в TDBGrid.
Использование TStringGrid
В качестве альтернативы, можно использовать TStringGrid, который не привязан к TDataSet и позволяет хранить данные в памяти в виде массива строк. Это может быть удобно, если нет необходимости в функциональности, предоставляемой TClientDataSet.
procedure TForm1.AddDataToStringGrid(const AData: TArray<string>);
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
for var i := 0 to Length(AData) - 1 do
StringGrid1.Cells[i, StringGrid1.RowCount - 1] := AData[i];
end;
Для добавления строки в TStringGrid, просто увеличьте количество строк и присвойте значения ячейкам в новой строке.
Заключение
Выбор между TDBGrid и TClientDataSet с одной стороны, и TStringGrid с другой, зависит от требований вашего приложения. Если вам нужно обеспечить возможность редактирования данных пользователем, TClientDataSet будет лучшим выбором. Если же данные предназначены только для чтения и не требуется сложная функциональность, TStringGrid может быть более предпочтительным вариантом.
Пример использования компонентов `TClientDataSet` и `TStringGrid` в Delphi для динамического добавления строк в `TDBGrid` без подключения к базе данных.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.