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

Обрабатываем выделенные строки в DBGrid

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

Обрабатываем выделенные строки в DBGrid

Я целюсь не рукой; кто целится рукой, тот забыл лицо своего отца. Я целюсь глазом. Я стреляю не рукой; кто стреляет рукой, тот забыл лицо своего отца. Я стреляю разумом. Я убиваю не оружием; кто убивает оружием, тот забыл лицо своего отца. Я убиваю сердцем.
Древнее заклинание Квакеров


function TForm1.Grid_Edit(dbgIn: TDBGrid; qryIn: TQuery): Longint;  
begin 
  Result := 0; 
  with dbgIn.DataSource.DataSet do 
  begin 
    First; 
    DisableControls; 
    try 
      while not EOF do 
      begin 
        if (dbgIn.SelectedRows.CurrentRowSelected = True) then 
        begin 
          //Здесь можно обработать строку илил вызвать функцию для обработки
          Inc(Result); 
        end; 
        Next; 
      end; 
    finally 
      EnableControls; 
    end; 
  end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Form1.Caption := 'Обработано: ' + IntToStr(Grid_Edit(DBGrid1, Query1)); 
end;

Программный код, предоставленный вами, является частью приложения Delphi, которое обрабатывает выбранные строки в контроле DBGrid.

Функция Grid_Edit

Эта функция принимает два параметра: dbgIn (TDBGrid) и qryIn (TQuery). Её цель - обработать выбранные строки в гриде. Вот что она делает:

  1. Она устанавливает начальную результатную величину в 0.
  2. Она включает dataset, связанный с источником данных грида, отключает его контролы и перемещает курсор на первый запись.
  3. Затем она вступает в цикл, который продолжается до конца dataset.
  4. Внутри цикла она проверяет, является ли текущая строка выбранной (используя dbgIn.SelectedRows.CurrentRowSelected). Если это так, она увеличивает результатную величину.
  5. После обработки всех строк она включает контролы dataset.

Процедура Button1Click

Эта процедура - обработчик события нажатия кнопки. Когда кнопка нажата, она вызывает функцию Grid_Edit с объектами DBGrid1 и Query1 как аргументы. Результат этого вызова (число обрабатывших строк) затем используется для обновления заголовка формы.

Улучшения

  • Вместо использования глобальной переменной Form1, рекомендуется передавать объект формы в параметрах процедур.
  • Могут упростить цикл в Grid_Edit с помощью цикла for над выбранными строками вместо проверки каждой строки индивидуально.
  • Рекомендуется добавить обработку ошибок в блоке try-finally для обработки потенциальных исключений, которые могут возникнуть при обработке данных.
  • Если вам нужно выполнить какое-либо действие на каждой обрабатываемой строке, рекомендуется создать отдельную функцию или процедуру для этого и вызвать ее из Grid_Edit.

Вот обновленная версия кода, которая включает в себя эти предложения:

function TForm1.ProcessSelectedRows(dbgIn: TDBGrid; qryIn: TQuery): Integer;
begin
  Result := 0;
  with dbgIn.DataSource.DataSet do
  begin
    First;
    DisableControls;
    try
      for i := 0 to dbgIn.SelectedRows.Count - 1 do
      begin
        if dbgIn.SelectedRows[i].Selected then
        begin
          // Обработайте строку здесь
          Inc(Result);
        end;
      end;
    finally
      EnableControls;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FormCaption := 'Обработано: ' + IntToStr(ProcessSelectedRows(DBGrid1, Query1));
end;

Замечание: Я переименовал функцию в ProcessSelectedRows для лучшей ясности и убрал глобальную переменную Form1. Я также заменял цикл на цикл for над выбранными строками.

В статье описывается способ обработки выделенных строк в компоненте DBGrid с помощью функции TForm1.Grid_Edit и ее вызова при клике кнопки.


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

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




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


:: Главная :: TDBGrid ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:31:32/0.0033760070800781/0