Topic: Копирование строки таблицы

Здравствуйте!
Захотел в проекте реализовать копирование строки таблицы, т.к. параметров много в таблице, а обычно отличие строк таблицы друг от  друга лишь в одном-двум полях.
Воспользовавшись скриптом форумчанина k245, была оформлена кнопка Скопировать, работа которой основана на кнопке "Показать запись" с дальнейшим сохранением записи как новой.
В итоге, на форме расположена таблица, кнопки для нее Добавить, Редактировать, Удалить, Копировать.
Скрипт работает, кнопки тоже, но вот только двойной клик по строке таблицы, который автоматически вызывает форму редактирования, начал открывать не одну форму редактирования, а столько, сколько этих самых кнопок со свойством "Показать запись" на этой форме привязаны к этой таблице. Получаю, что первая форма действительно позволяет редактировать запись, а после ее закрытия, открывается автоматически еще раз эта же форма, только после нажатия кнопки Сохранить, создается новая запись.
Планировал отключить возможность открытия формы редактирования по двойному клику, а затем скриптом указать конкретную кнопку, которую нужно нажать, при двойном клике на строку таблицы, но не смог найти как отключить открытие формы редактирования при двойном нажатии на строку таблицы.
Возможно есть какой-то иной вариант, как избежать подобной ситуации?

2 (edited by sibprogsistem 2020-06-26 09:03:30)

Re: Копирование строки таблицы

begin
    Form1.GridEmployees.dbPopupMenu.Items[0].Enabled := False;
end.

Re: Копирование строки таблицы

Большое спасибо! Помогло!

Re: Копирование строки таблицы

Уважаемые форумчане, прошу помочь.
У меня есть таблица1. В ней есть строки, которые я копирую кнопкой копировать (кнопка со свойством Показать запись) и к которой я прикрепил скрипт:
if (Action = 'ShowRecord') then  FrmCard.btnSave.dbGeneralTableId := -1; После чего, что надо, правлю и сохраняю, создается новая строка в таблице1 с поправленными параметрами.
На форме, которая открывается из таблицы1, есть не только параметры Edit, DateTimePicker, Combobox, но и TableGrid (назову ее таблица2). В этом случае таблица 2 не копируется, и при открытии она будет пустая. Можно ли как-то сделать так, чтобы и она тоже копировалась со своим содержимым?

Пользователь в моей программе, нажав на кнопку Копировать, начинает редактировать значения, в тч и в TableGrid и после сохранения удивляется, почему в скопированной строке таблицы1 оказываются пустые строки таблицы2 на этой форме, а в той строке, которую он копировал, оказались изменены все строки таблицы2 на как раз те, что изменял для новой записи.

Я понимаю, с чем это связано (он открыл старую запись и правил данные в ней и сохранил под новой записью, но вот таблица2 то так и остается привязанной к старой записи, и она не переносится в новую запись), но не могу придумать как при копировании их тоже скопировать и привязать к новой записи и сразу править.

Чтобы избежать такой проблемы пока обхожусь тем, что строка копируется без возможности внести изменения в запись в таблицу1 и лишь после этого можно открыть скопированную запись и править как вздумается, там будет таблица2 как раз пустая и ее нужно будет заполнить сначала.

5 (edited by Inkalika 2020-08-25 13:24:16)

Re: Копирование строки таблицы

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

Post's attachments

Attachment icon Dublicate from selected row in grid.rar 296.85 kb, 328 downloads since 2020-08-25