[Lazarus] Propose: dont try to open TDBLookup* ListSource automatically
Michael Van Canneyt
michael at freepascal.org
Mon Jul 9 09:37:56 CEST 2012
On Sun, 8 Jul 2012, Luiz Americo Pereira Camara wrote:
> Currently the db lookup controls tries to open the dataset linked to
> ListSource if is closed at lookup initialization.
>
> The initialization occurs after the control is loaded (streamed) or when a
> related db property is changed in the control. This behavior can leads to
> opening the dataset at unpredictable time or even twice (if the programmer
> opens the dataset after loading of the control). Also it can trigger events
> like AfterOpen in improper moments, e.g., data structures not initialized.
>
> Removing this feature, that is LCL specific, can have side effects in
> projects that do not open explicitly the ListSource dataset or closes it when
> the lookup control is still in use.
>
> Recently two bugs were reported due to this behavior (see
> http://bugs.freepascal.org/view.php?id=22387
> http://bugs.freepascal.org/view.php?id=22337
> http://lazarus.freepascal.org/index.php/topic,17355.msg96112.html )
>
> So, removing this feature has the benefits of a cleaner code and better user
> control when to open the dataset thus avoiding potential bugs and decreased
> performance. The drawback is that it can affect programs that relies in that
> behavior although it should be easily fixable and if there's a good moment
> for such changes is now since 1.0 has already branched.
>
Why not introduce a boolean property OpenLookupDataset to control this behaviour ?
Michael.
More information about the Lazarus
mailing list