Postscriptum
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору greenpc Цитата: как это - повторное удаление ? | Ну вот так - в dbf-файлах записи из базы фактически не удаляюстя, они толко помечаются на удаление. В любом датасете, который работает с dbf-файлами можно настроить - показывать такие удаленные записи или нет. Т.е. если НЕ показывать, то для пользователя визуально происходит удаление записи, но на самом деле она в базе остается. Для того, чтобы физически удалить такие записи из dbf-файла используется процедура упаковки таблицы. А вот если настроено, чтоб показывать удаленные записи, то визуально в гриде запись при удалении как была, так и остается, вот я и подсвечиваю их красным, чтоб видно было. Но самое интересное, если такую "удаленную" запись еще раз удалить т.е. нажать в гриде Del или Ctrl+Del - ее мона восстановить - такой простенький undo/redo Вот как-то так. Теперь что у меня получилось: после procedure TForm1.cxGrid1DBTableView1CustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var OldC: TColor; begin if AdsTable1.Active then begin oldc:=ACanvas.Canvas.Brush.Color; aa:= AViewInfo.GridRecord.RecordIndex+1; if AdsTable1.AdsIsRecordDeleted(aa) then ACanvas.Canvas.Brush.Color := clRed else ACanvas.Canvas.Brush.Color:=oldc; end; у меня удаленные записи подсвечиваются. Все замечательно. Если не неподсвеченной (неудаленной) записи нажать дел, она удаляется (сразу подсвечивается красным), а вот если повторно нажать Delete, подсветка не убирается (это я протупил, надо же обработать этот и восстановить запись). Для этого сделал следующее - у Table-компонента в событии AfterDelete прописал: if AdsTable1.AdsIsRecordDeleted(AdsTable1.AdsGetRecordNum) //проверил - типа удалена запись? then begin AdsTable1.AdsRecallREcord; // Это и есть восстановление записи AdsTable1.AdsRefreshRecord; //Обновил запись end; После этого стало наоборот - если нажать Del на подсвеченной (удаленной) записи - она восстанавливается (подсветка убирается), а вот если попытаться удалить запись - она не удаляется, не пойму, в чем косяк. | Всего записей: 464 | Зарегистр. 31-01-2004 | Отправлено: 09:37 03-04-2009 | Исправлено: Postscriptum, 09:54 03-04-2009 |
|