Hmm, 'k heb een vreemd probleem waar ik kop noch staart aan krijg... 
Ik heb 2 Delphi Forms, een overzichtscherm, en een scherm waar ik filtercriteria kan opgeven.
Het scherm met de filtercriteria kan ik openen vanop het lijstscherm, en, aangezien ik bij het openen van m'n filterscherm wil zien wat de vorige filtercriteria waren, bewaar ik die filtercriteria in m'n overzichtsscherm.
Op m'n overzichtsscherm, en op m'n filterscherm heb ik een TObjectList staan.
Als ik m'n filterscherm open, dan wordt er een TObjectList gecreeërd:
Ik stel filtercriteria in, en pas m'n filter toe. Dit gaat goed, ik krijg enkel items op m'n overzichtsscherm te zien die aan m'n filtercriteria voldoen.
Later open ik m'n filterscherm opnieuw, en dit gaat ook goed. M'n filtercriteria die ik had ingesteld worden mooi getoond.
Het probleem komt nu;
Ik verander m'n filter-criteria en wil die nieuwe filter toepassen. Om dat goed te laten verlopen, wil ik m'n TObjectList leegmaken, en dat doe ik met volgende code:
Nu krijg ik daarop een Access Violation, terwijl hij die code ook uitvoert als ik m'n filter voor de eerste keer uitvoer en het dan perfect werkt.
Ik ben zeker dat die TObjectList gealloceerd is, want, bij het inladen van m'n filterscherm, overloop ik datzelfde TObjectList object om m'n vorige criteria te tonen en toen zaten er zeker objecten in.
Ook als ik volgende code errond zet:
dan wordt die clear() uitgevoerd, dus moet die TObjectList wel gealloceerd zijn.
* whoami snapt het nu niet...
Ik heb 2 Delphi Forms, een overzichtscherm, en een scherm waar ik filtercriteria kan opgeven.
Het scherm met de filtercriteria kan ik openen vanop het lijstscherm, en, aangezien ik bij het openen van m'n filterscherm wil zien wat de vorige filtercriteria waren, bewaar ik die filtercriteria in m'n overzichtsscherm.
Op m'n overzichtsscherm, en op m'n filterscherm heb ik een TObjectList staan.
Als ik m'n filterscherm open, dan wordt er een TObjectList gecreeërd:
code:
1
| FilterId := TObjectList.Create(); |
Ik stel filtercriteria in, en pas m'n filter toe. Dit gaat goed, ik krijg enkel items op m'n overzichtsscherm te zien die aan m'n filtercriteria voldoen.
Later open ik m'n filterscherm opnieuw, en dit gaat ook goed. M'n filtercriteria die ik had ingesteld worden mooi getoond.
Het probleem komt nu;
Ik verander m'n filter-criteria en wil die nieuwe filter toepassen. Om dat goed te laten verlopen, wil ik m'n TObjectList leegmaken, en dat doe ik met volgende code:
code:
1
| FilterId.Clear(); |
Nu krijg ik daarop een Access Violation, terwijl hij die code ook uitvoert als ik m'n filter voor de eerste keer uitvoer en het dan perfect werkt.
Ik ben zeker dat die TObjectList gealloceerd is, want, bij het inladen van m'n filterscherm, overloop ik datzelfde TObjectList object om m'n vorige criteria te tonen en toen zaten er zeker objecten in.
Ook als ik volgende code errond zet:
code:
1
2
3
| if Assigned(FilterId) then begin FilterId.Clear(); end; |
dan wordt die clear() uitgevoerd, dus moet die TObjectList wel gealloceerd zijn.
* whoami snapt het nu niet...
https://fgheysels.github.io/