Steema Issues Database

Note: This database is for bugs and wishes only. For technical support help, if you are a customer please visit our online forums;
otherwise you can use StackOverflow.
Before using this bug-tracker we recommend a look at this document, Steema Bug Fixing Policy.



Bug 2435

Summary: Add methods to ignore dataset change notification
Product: TeeGrid for Delphi Reporter: dean.mustakinov
Component: GridAssignee: david berneda <david>
Status: CONFIRMED ---    
Severity: enhancement CC: marc
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows   
Chart Series: --- Delphi / C++ Builder RAD IDE Version:

Description dean.mustakinov 2021-06-24 23:47:30 EDT
TeeGrid for Delphi v1.10.

In the "Master_Detail_FireDAC" demo clicking on + in the first column of a different row will close the currently open detail rows.

If the different row is selected before + is clicked then previous detail rows will remain open.

This happens because gird disables dataset change notification when it performs the scrolling but the same cannot be done when user code does the scrolling so grid processes dataset change and closed the detail rows.

I have made the change to implement this enhancement.

Tee.GridData.DB.pas:
Added following public methods:

procedure TVirtualDBData.BeginDBDataChange;
begin
  if ILink <> nil then ILink.IChanging := true;
end;

procedure TVirtualDBData.EndDBDataChange;
begin
  if ILink <> nil then ILink.IChanging := false;
end;

function TVirtualDBData.DBDataChanging: boolean;
begin
  result := (ILink <> nil) and ILink.IChanging;
end;

Changed procedure TVirtualDataLink.DataSetChanged; (uncommented the line first line)
procedure TVirtualDataLink.DataSetChanged;
begin
  if not IChanging then
  begin
    { NOTE: Non-abbreviated form of "Inherited" call is better for Find
      Declaration / Ctrl+G. }
    inherited DataSetChanged;

    if not IData.Refreshing then
      IData.Refresh;
  end;
end;
Comment 1 marc meumann 2022-11-03 13:41:39 EDT
Thanks for the input. Not sure about this. The code additions don't seem to change the behaviour; I may be missing something. ...but testing leads me to view current behavious as desirable ... a subjective view of course. 

The click and open functionality that closes previously opened records is fine. If another record is selected before click to open then the previous record stays open. That has its attractions as both contents can be viewed concurrently.