Bonjour,
Comme écrit quelque part dans la doc, il faut un nombre "raisonnables" de lignes mais, bon, ce n'est pas toujours possible.
Je me retrouve avec quelques extractions de données de quelques 5000 lignes et, bien évidemment, le remplissage prends du temps.
Quelle solution utilisez-vous dans ce genre de cas ?
Pour pallier mon problème j'ai utilisé un TListView identique lié à une requête qui n'extrait qu'un nombre très limité de lignes pour ensuite continuer le remplissage de la "vraie" liste via un Thread
un rectangle, contenant entre autres un TAniIndicator me permettant de montrer que le travail continue
un thread se charge de la gestion de ces composants
ce qui ne me plait pas : le fait d'avoir deux TListView, et deux sources de données différentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 procedure TMain.LoadArticles; begin ThreadA_Active:=True; ListeVArticles.BeginUpdate; ThreadA:= TTask.Run( procedure begin TThread.Synchronize(TThread.Current, procedure begin WaitForLp.Visible := True; Aniwaitforlp.Enabled := True; end); Datas.ImgArticles.DisableControls; Datas.ImgArticles.Open; TThread.Synchronize(TThread.Current, procedure begin Datas.PremiersArticles.Close; ListePremiers.Visible:=False; WaitForLp.Visible := False; Aniwaitforlp.Enabled := False; Datas.imgArticles.EnableControls; ListeVArticles.EndUpdate; ThreadA_Active:=False; end); end); end;
J'ai tenté les approches des Fetchoptions de Firedac (Rowsetsize, LiveWindowFastFirst) mais la liaison via LievBindings semble se contrefiche de ces indications contrairement à un TGrid (ce n'est pas la première fois que je le déplore).
J'ai encore une piste non explorée (totalement oubliée jusqu'à ce que j'écrive ce post) : FecthOptions.Recsmax.
Sinon, ma question, comment faites-vous dans un cas pareil ?
Partager