![]() | Steema Issues DatabaseNote: 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. |
| Summary: | Add methods to ignore dataset change notification | ||
|---|---|---|---|
| Product: | TeeGrid for Delphi | Reporter: | dean.mustakinov |
| Component: | Grid | Assignee: | 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: | |
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. |
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;