Newsgroup: it.comp.lang.delphi
Titolo: bloccare una cancellazione

Ho un pulsante che cancella un record (table1.Delete;). Voglio creare una
question-box che chiede se si vuol veramente cancellare il record, in caso
negativo l'azione delete deve essere annullate. Come posso bloccare l'azione
della cancellazione......esiste una specie di table1.Cancel; che mi annulli
la cancellazione? e dove la devo posizionare? (in che evento)
Ciao e grazie
Gianni Giusti

"Gianni Giusti" ha scritto nel messaggio

Usa l'evento BeforeDelete. Esempio:
procedure TForm1.Table1BeforeDelete(DataSet: TDataSet);
begin
 if MessageDlg('Cancello il record?', mtWarning, [mbYes, mbNo], 0) = mrNo
  then Abort
end;
--
Ciao.
ACSH
[D4]
---------------------------
Chi fa da se'
fatica il doppio



procedure TForm1.btnCancellaRecordClick(Sender: TObject);
begin
  if MessageDlg('Sicuro sicuro ?',
                mtWarning, [mbYes, mbNo], 0) = mrYes then
  begin
    MyTable.Delete;
  end;
end;
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 end;
Grazie per la risposta, č quello che cercavo.
Grazie anche ad Andrea, anche se quello che cercavo č il testo sopra.
Ciao
Gianni 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie anche ad Andrea, anche se quello che cercavo è il testo sopra.
Questione di organizzazione logica: a mio avviso e' piu' logico 
prima chiedere e poi agire, anziche' agire e poi chiedere se
annullare o meno.


 Grazie anche ad Andrea, anche se quello che cercavo è il testo sopra.
IMHO, credo che farlo sulla beforedelete sia poco pratico.
Se ti si presenta almeno un caso nel quale non devi chiedere
la conferma prima della cancellazione sullo stesso dataset,
si va a incasinare il codice nell'evento.
Preferisco la soluzione di Andrea, che fa la richiesta a monte.
Poi vedi tu.. :)))
Bye
AS
"Se è Microsoft non funziona"


 annullare o meno.
Il modo che mi hai proposto è quello che ho sempre usato, ma mi sono
posto un problema:
se ho un pulsante e lo associo ad una azione dataset (DataSetDelete) di
un TActionList, ho il vantaggio che automaticamente
il pulsante diventa attivo o inattivo a seconda delle situazioni
(inserimenti, modifiche ecc..) senza aggiungere nessun codice. Dal
momento che il cliente preme su quel pulsante
di fatto parte la cancellazione del record ed è a quel punto che volevo
intervenire.
Tu come fai? lasci sempre attivo il pulsante "elimina"? non usi la
ActionList con i database? Mi daresti una dritta in proposito?
P.S.
Stavo per variare il programma con il nuovo codice (Abort), poi ho
riletto i messaggi e mi vedo Andrea e Alberto
(due pezzi da 90 del NG :-) che mi consigliano la stessa cosa.....a
questo punto mi viene il forte dubbio che la strada dell' uso di Abort
non sia la migliore.
Ciao
Gianni Giusti 


non sia la migliore.
No, aspetta, io credo che sia solo una questione di scelte.
La mia e' solo un'alternativa, il codice che ti e' stato
consigliato, dal punto di vista funzionale, va benissimo.
Cioe', alla fine, ottieni lo stesso effetto, quindi non c'e'
problema.  E' solo una questione di organizzazione logica
del codice.  Sara' che io mi sono formato sui piccoli
progetti (gestiti da 3/4 persone al massimo), in cui c'e'
bisogno di grande semplicita' nel codice, per consentire una
manutenzione migliore.  Per cui, seguo sempre il "KISS"
(Keep It Simple Stupid), cioe' cerco di rendere le cose
sempre piu' lineari possibili (chiedo --> faccio).


 non sia la migliore.
Abort è l'unico modo pulito che hai per interrompere una operazione
tipo una delete.
Io tendo molto a separare le competenze.
Credo che richiedere la conferma prima della cancellazione
non competa al dataset ma sia una operazione di competenza della
interfaccia utente.
Quindi, io la metterei nel click del pulsante o della TAction.
Tutto qui.
Bye
AS
Se è Microsoft non funziona"
-- 


> Il counter degli errori e delle cazzate č un longint in overflow....
ROTFL :-)
Ciao e grazie a tutti per i consigli utilissimi (me li stampo tutti e li
archivio tra la mia documentazione)
Gianni Giusti

 Se č Microsoft non funziona"
Comunque, con questa sign, puoi dire ciň che vuoi... :)
(forse non si capisce, ma č un complimento!)
Ciao.
Mimmo.