Jump to content

Recommended Posts

Posted

Hello,

I have a DbNavigator with Delete button enabled and Confirm Delete disabled, because I need a custom message on Delete.

 

So I have put this code in the onBeforeDelete event of the DataSet:

 

procedure TformCustomers.tabCompositionBeforeDelete(DataSet: TDataSet);
begin
   
// Ask confirm
    MessageDlg('Confirm Delete of item: '+ tabComposition.FieldByName('TABLECODE').AsString +' ?', mtConfirmation, mbYesNo,
        procedure(Sender: TComponent; Res: Integer)
        begin
          if Res <> mrYes then
             
// Annulla delete
              Abort;
        end
//procedure
 );//MessageDlg
end;

 

But the records get deleted before my answer...

Can you help ?

 

 

 

Posted

Hi,

 

While, try:

procedure TMainForm.ClientDataSet1BeforeDelete(DataSet: TDataSet);
begin
  ClientDataSet1.BeforeDelete := nil;
  MessageDlg('Confirm Delete of item:  ?', mtConfirmation, mbYesNo,
        procedure(Sender: TComponent; Res: Integer)
        begin
          if Res = mrYes then
          begin
            ClientDataSet1.Delete;
          end;
          ClientDataSet1.BeforeDelete := ClientDataSet1BeforeDelete;
        end
 );
 Abort;
end;

Best regards.

Posted

Thank you !

it works, but seems a "dirty" solution detach the event in this way...

Is there a cleaner way to deal with this kind of situations ?

 

Regards,

Marc

  • Like 1
  • 4 years later...
  • Administrators
Posted

This one is more clean:

 

procedure TMainForm.UniDBNavigator1BeforeAction(Sender: TObject; Button: TNavigateBtn);
begin
  if Button = nbDelete then
  begin
    MessageDlg('Confirm?', mtConfirmation, mbYesNoCancel,
      procedure(Sender: TComponent; Ans: Integer)
      begin
        if Ans = mrYes then
        begin
          DataSource1.DataSet.Delete;
        end;
      end
    );
    Abort;
  end;
end;

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...