Topic: Сумма в footer при условии chekbox

Доброго дня всем.
Такая тема.
Как прописать скриптом или запросом такую комбинацию.
Например есть таблица и необходимо провести суммирование только тех ячеек, которые отмечены chekbox - ом.
Пример прилагается.
Спасибо.

Re: Сумма в footer при условии chekbox

Ответ - скриптом, но ваш пример не наблюдается....

Визуальное программирование: блог и телеграм-канал.

Re: Сумма в footer при условии chekbox

Упс... Прошу прощения. Не доглядел.
Он не загрузился из-за EXE. Много весил.

Post's attachments

Attachment icon TEST BD.ZIP 337.11 kb, 137 downloads since 2023-02-27 

Re: Сумма в footer при условии chekbox

procedure Form1_TableGrid1_OnAfterEdit (Sender: TObject; ACol, ARow: Integer; Value: String);
begin
  Calc;
end;

procedure Calc;
var
  iRow: integer;
  s1: integer;
  s2: integer;
begin
  s1 := 0;
  s2 := 0;
  for iRow := 0 to form1.TableGrid1.RowCount - 1 do
  begin
    if form1.TableGrid1.Cell[7,iRow].asBoolean then
    begin
      s1 := s1 + form1.TableGrid1.Cell[4,iRow].asInteger;
      s2 := s2 + form1.TableGrid1.Cell[6,iRow].asInteger;
    end;
  end;
  form1.Edit6.Value := s1;
  form1.Edit5.Value := s2;

  Form1.tablegrid1.columns[4].footer.Caption := form1.Edit6.Text;
  Form1.tablegrid1.columns[6].footer.Caption := form1.Edit5.Text;

end;
Post's attachments

Attachment icon TEST BD.rar 296.25 kb, 174 downloads since 2023-02-28 

Визуальное программирование: блог и телеграм-канал.

Re: Сумма в footer при условии chekbox

Привет, Estimation411, Konstantin,
В качестве другого варианта, возможно, вы можете попробовать и этот способ.
Надеюсь, это поможет.
С уважением
Derek.

Post's attachments

Attachment icon checkbox summed.zip 437.99 kb, 173 downloads since 2023-02-28 

Re: Сумма в footer при условии chekbox

Огромное всем спасибо.
Протестирую оба варианта.

Re: Сумма в footer при условии chekbox

Всем привет

Дерек, так короче и без лишних полей.
Используется событие OnAfterEdit для корректного срабатывания CheckBox.
//---------
Derek, so short and without unnecessary Edit.
The OnAfterEdit event is used for the correct operation of the CheckBox.


procedure Form1_TableGrid1_OnAfterEdit (Sender: TObject; ACol, ARow: Integer; Value: String);
var
r: integer;
s: currency = 0;
begin
  for r:=0 to Form1.TableGrid1.RowCount - 1 do
    begin
      if Form1.TableGrid1.cell[0,r].AsBoolean then
        begin
          s := s + Form1.TableGrid1.cell[2,r].AsFloat;
        end;
    end;
    Form1.TableGrid1.Columns[2].footer.Caption := FloatToStr(s);
end;

Re: Сумма в footer при условии chekbox

Вариант от DEREK -а работает.
Остальные нет.
Но.. Есть все-же одно НО.
Результат реагирует на нажатую ячейку, где находится сам checkbox, даже если он не выбран.

Задача в том чтобы уже готовая сумма в footer менялась в зависимости от выбора checkbox-а.

например есть таблица:

ААА      10     (*)
ВВВ      15     (*)
ССС      45    (*)
--------------------
сумма:  70

checkbox по умолчанию (*) отмечен у всех

и теперь снимаем галочку в checkbox ( ) в одной из строк (например в ВВВ)

ААА      10    (*)
ВВВ      15    (  )
ССС      45    (*)
----------------------
сумма:  55

при этом сумма получается уже без учета ВВВ

То есть суммируются только отмеченные checkbox - м строки, остальные игнорируются.

Спасибо.

9 (edited by k245 2023-03-01 06:22:41)

Re: Сумма в footer при условии chekbox

estimation411 wrote:

Вариант от DEREK -а работает.
Остальные нет.
Но.. Есть все-же одно НО.
Результат реагирует на нажатую ячейку, где находится сам checkbox, даже если он не выбран.

Задача в том чтобы уже готовая сумма в footer менялась в зависимости от выбора checkbox-а.

например есть таблица:

ААА      10     (*)
ВВВ      15     (*)
ССС      45    (*)
--------------------
сумма:  70

checkbox по умолчанию (*) отмечен у всех

и теперь снимаем галочку в checkbox ( ) в одной из строк (например в ВВВ)

ААА      10    (*)
ВВВ      15    (  )
ССС      45    (*)
----------------------
сумма:  55

при этом сумма получается уже без учета ВВВ

То есть суммируются только отмеченные checkbox - м строки, остальные игнорируются.

Спасибо.


Что именно не работает? Вы проект исправленный открывали?

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=9224&download=0

Post's attachments

Attachment icon изображение_2023-03-01_092213510.png 17.07 kb, 51 downloads since 2023-03-01 

Визуальное программирование: блог и телеграм-канал.

Re: Сумма в footer при условии chekbox

Вот именно ваш вариант я скачал, запустил и у меня нули в footer и в обеих полях edit.
Но вот что еще заметил, что у меня в моей версии программы отсутствует Events: OnAfterEdit
Возможно поэтому он не работает.

Post's attachments

Attachment icon Untitled.png 15.51 kb, 54 downloads since 2023-03-01 

Re: Сумма в footer при условии chekbox

Аллилуя!
Работает. Я обновил свою версию программы с 6.2 до 6.5 и появился новый эвент OnAfterEdit и все заработало!!!
k245 - низкий вам поклон!!!
Огромное спасибо.
Сейчас буду прикручивать этот скрипт к основной программе.

Re: Сумма в footer при условии chekbox

Как я понимаю TableGrid при этом не может быть активной для каких-либо изменений записи.
Checkbox работает только тогда, когда свойства AllowEdit для TableGrid в состоянии False,
Как только  AllowEdit для TableGrid я ставлю на True - CheckBox становится неактивен.

Re: Сумма в footer при условии chekbox

В этом случае нужно добавить ещё один обработчик:

procedure Form1_TableGrid1_OnCellClick (Sender: TObject; ACol, ARow: Integer);
begin
  if ACol = 7 then
  begin
    form1.TableGrid1.Cell[7,ARow].asBoolean := not form1.TableGrid1.Cell[7,ARow].asBoolean;
    Calc;
  end;
end;
Post's attachments

Attachment icon TEST BD.rar 296.55 kb, 176 downloads since 2023-03-02 

Визуальное программирование: блог и телеграм-канал.

Re: Сумма в footer при условии chekbox

k245 - Огромное Вам спасибо.
Все отлично работает!!!
Я уже голову ломал. Что да как smile