[ FranjoZG @ 15.10.2015. 14:14 ] @
Prekopao internet i nisam našao usvislo rješenje za problem:

Kako u event-u DataSet.BeforeScroll spriječit scroll?
Pokušao sam sa:

Code:
Abort;


ili
Code:

...
  if CancelScroll then begin
     CancelScroll := false;
     if MessageDlg('Podaci su mijenjani' + #13 + 'Zaboraviti izmjene?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then begin
        try
          raise Exception.Create('');
        except
        end;
     end;
  end;





Npr: stranka mijenjala podatke i zabunom kliknula na drugi podatak u gridu prije upisa.
[ Milan Milosevic @ 15.10.2015. 17:10 ] @
Mislim da nebi trebalo da dozvolis stranci da menja podatke direktno u dbgridu, vec preko edita
[ savkic @ 16.10.2015. 02:54 ] @
> Npr: stranka mijenjala podatke i zabunom kliknula na drugi podatak u gridu prije upisa.

Nemam sad ovde kod da proverim direktno u TDatasetu ali mi se cini da se ti eventi dizu posto je promena vec izvesna. Ima neki drugi trik da se spreci, ali ne znam napamet, mozda da pokusas sa BeforeEdit/Insert/Post pa da tako sprecis promenu fokusa.
[ Milan Milosevic @ 16.10.2015. 06:21 ] @
Ne razumem šta tačno želiš ali ako želiš da te upita pre promene rekorda klikom u dbgridu probaj ovako nešto
u event-u DataSet.BeforeScroll

Code:
  if DataSet.RecNo <> 1 then
    if MessageDlg('Podaci su mijenjani' + #13 + 'Zaboraviti izmjene?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      abort;
[ captPicard @ 16.10.2015. 10:15 ] @
TDBGrid ako se ne varam ne mijenja trenutni RecNo kod scrollanja, uzmi i to u obzir.
[ FranjoZG @ 16.10.2015. 14:29 ] @
Hvala na odgovorima.
Ovo sa Abort, funkcionira ali djelomično.

Nemam izmjenu podataka unutar grida, ali, stari program - naslijedio ga... Ne koristi DBEdit već Edit text box-ove. U DataSource.OnDataChange se pune text box-ovi.

Sranke počne upisivati u editbox, zapamtim da je počela unositi izmjene, pritisne na drugi podatak u gridu i prije nego izgubi upis - moram ju upozoriti.
Sa Abrot radi, ali imam master-detail. Kada radim samo za master, sve OK, ali kada uključim detail - javlja greške pri Abort-u.

Znači: treba spriječiti scroll. Koristim svoju kontrolu koja je nasljednik TIBDataSet tako da bi to bilo jednostavno riješiti unutar nje, kad bih znao kako...
[ savkic @ 16.10.2015. 14:46 ] @
Stavi evente na OnExit od EditBoxa ili OnEnter od grida, okidaju se pre promene sloga/skrola.
[ captPicard @ 17.10.2015. 10:42 ] @
Ili postavi a) DBGrid1.Enabled := false u trenutku kad kliknu na popravak ili b) napravi još jedan DataSource koji puni DBGrid, onda u trenutku kada kliknu na popravak prebaci da DBGrid ima DataSource2 a DataSet neka mu da slijedeće:
Code:
 select * from tablica where sifra = :sifra_koja_se_mijenja