Отображение пометки удаления в VFP
« Назад Во всех формах, имеющих сетку, пометка удаления проставляется обработчиком события Click кнопки "Удалить / Возвратить". Названием кнопки (ее имя во всех формах – Command3) управляет следующий код обработчика события AfterRowColChange сетки формы: && Фрагмент обработчика события AfterRowColChange сетки && lparameters nColIndex with ThisForm if Deleted( ) then .Command3.Caption = "Возвратить" else Command3.Caption = "Удалить" endif endWith Если при удалении отказывает триггер удаления, то обработчик события Error кнопки Command3, генерирует соответствующее сообщение. Однако если сетка имеет столбец для пометки удаления, то в нем можно, например, мышью проставить или убрать пометку удаления записи. При этом, во первых, не изменится название кнопки и, во-вторых, сообщение об отказе триггера удаления (Trigger failed in Authors) появится только при смене строки. Таким образом, имеются две проблемы, для устранения которых можно применить следующую схему: 1. Устранить из сетки столбец для пометки удаления. 2. Ввести в сетку столбец, повторяющий пометку удаления; расположение и размеры столбца те же, что и столбца для пометки удаления. 3. Сделать добавленный столбец доступным только для чтения. 4. качестве источника данных столбца задать выражение IifDeleted, '*', ''), выводя в столбце звездочку, если запись имеет пометку удаления, или пустую строку – в противном случае. Приведенная схема для примера реализована в форме "Виды произведений". Некоторые свойства добавленного столбца сетки (его имя Column2) устанавливаются в обработчике события Init формы: with This && && Столбец для дублирования пометки удаления .Grid1.Column2.ReadOnly = .T. .Grid1.Column2.ControlSource = "Iif(Deleted( ), '*', '')" .Grid1.Column2.Width = 10 endWith |