MotlawaTech:Funkcjonalność "kosza" w kartotece: Różnice pomiędzy wersjami

Z Motława
Linia 15: Linia 15:
 
shl.MaxTimeFieldName := 'localtime';</pre>
 
shl.MaxTimeFieldName := 'localtime';</pre>
  
W oknie FDBC przeglądarki w akcji usunięcia rekordu zamiast
+
W oknie FDBC przeglądarki (w zdarzeniu ''Create'' lub ''ChldMayOpen'') należy ustawić
 +
<pre>DeleteRecHandled := True;</pre>
 +
a w akcji usunięcia rekordu zamiast
 
<pre>DBPlaces.GUI_OperExecute_Handle_And_Editor(null, hrtExistDelete, 0);</pre>
 
<pre>DBPlaces.GUI_OperExecute_Handle_And_Editor(null, hrtExistDelete, 0);</pre>
 
należy wywołać
 
należy wywołać
 
<pre>DeleteRecShell;</pre>
 
<pre>DeleteRecShell;</pre>

Wersja z 12:53, 11 mar 2010

Tabela w bazie powinna posiadać kolumnę - znacznik usunięcia oraz kolumnę - znacznik czasu edycji; jeśli ich nie posiada, to należy je dodać:

add `localtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
add  deleted integer default 0;

pole typu timestamp powinno zostać dodane do CDSa jako TSQLTimeStampField - definicja w DFM:

object cdslocaltime: TSQLTimeStampField
      FieldName = 'localtime'
      ProviderFlags = []
      Visible = False
end

Nie ma potrzeby dodawania do CDSa pola - znacznika usunięcia.


W shellu przeglądarki należy zdefiniować property DeletedFieldName oraz MaxTimeFieldName i podając w/w pola tabeli np.

shl.DeletedFieldName := 'deleted';
shl.MaxTimeFieldName := 'localtime';

W oknie FDBC przeglądarki (w zdarzeniu Create lub ChldMayOpen) należy ustawić

DeleteRecHandled := True;

a w akcji usunięcia rekordu zamiast

DBPlaces.GUI_OperExecute_Handle_And_Editor(null, hrtExistDelete, 0);

należy wywołać

DeleteRecShell;