Limites d'un sous formulaire

J’ai recomparé et nettoyé le code, ce qui a supprimé des causes d’écart ; il n’y en plus beaucoup.
Version tableaux

$duration_l:=Milliseconds
			
    //Remplir le tableau 2D
$i:=0
For each ($item_o;$o.hierlist.selectedItems)
    $i:=$i+1
    $x:=(($i+$nbCols_l-1)%$nbCols_l)+1
    $y:=(($i-$x)/$nbCols_l)+1
    READ PICTURE FILE($item_o.platformPath;$picture_i)
         //CREATE THUMBNAIL($picture_i;$thumbnail_i;$o.pictureGrid.thumbnailWidth;$o.pictureGrid.thumbnailWidth;Scaled to fit prop centered)
    picture_ia{$x}{$y}:=$picture_i  //$thumbnail_i
End for each 
			
$duration1_l:=Milliseconds
			
     //Créer les colonnes de la listbox
LISTBOX DELETE COLUMN(*;"pictureGrid";1;LISTBOX Get number of columns(*;"pictureGrid"))
For ($i;1;$nbCols_l)
    $columnName_t:="Column_"+String($i)
    LISTBOX INSERT COLUMN(*;"pictureGrid";$i+1;$columnName_t;picture_ia{$i};"Head_"+String($i);$header_p)
    OBJECT SET FORMAT(*;$columnName_t;Char(Scaled to fit prop centered))
    LISTBOX SET COLUMN WIDTH(*;$columnName_t;$o.pictureGrid.thumbnailWidth)
End for 
			
LISTBOX SET ROWS HEIGHT(*;"pictureGrid";140;lk pixels)
			
$duration_l:=Milliseconds-$duration_l
$duration1_l:=Milliseconds-$duration1_l

Version collection

$duration_l:=Milliseconds
					
     //Remplir la collection
C_COLLECTION($pictureColl_c)
$pictureColl_c:=New collection
$i_l:=0
$j:=0
$ligne_o:=New object
For each ($item_o;$o.hierlist.selectedItems)
    $i_l:=$i_l+1
    $j:=$j+1
    $nomCol:="col"+String($i_l)
    READ PICTURE FILE($item_o.platformPath;$image_i)
    $ligne_o[$nomCol]:=New object("image";$image_i)
    $ligne_o[$nomCol]:=$image_i
    If ($i_l=$nbCols_l)  //nouvelle ligne
        $pictureColl_c.push($ligne_o)
        $ligne_o:=New object
        $i_l:=0
    End if 
End for each 
					
$duration2_l:=Milliseconds
					
     //Créer les colonnes de la listbox
LISTBOX DELETE COLUMN(*;"pictureGrid";1;LISTBOX Get number of columns(*;"pictureGrid"))
For ($i;1;$nbCols_l)
    $columnName_t:="col"+String($i)
     LISTBOX INSERT COLUMN FORMULA(*;"pictureGrid";$i+1;$columnName_t;"This."+$columnName_t;Is picture;"Head_"+String($i);$header_p)
    OBJECT SET FORMAT(*;$columnName_t;Char(Scaled to fit prop centered))
    LISTBOX SET COLUMN WIDTH(*;$columnName_t;$o.pictureGrid.thumbnailWidth)
End for 
$nbCols_l:=LISTBOX Get number of columns(*;"pictureGrid")
LISTBOX SET ROWS HEIGHT(*;"pictureGrid";140;lk pixels)
pictureGrid:=$pictureColl_c
					
$duration_l:=Milliseconds-$duration_l
$duration2_l:=Milliseconds-$duration2_l

duration2 : 4 ou 5 ms dans les deux cas
duration :
337 ms se réduisant à 103 ms avec les tableaux
413 à 157 ms avec les collections
La réduction du temps se fait en relançant 3 fois le même essai.
Petit avantage pour les tableaux.

OK, merci. Tout petit, l’avantage… tellement petit que je n’hésiterai pas à préférer les collections, plus souple d’utilisation.

1 Like

Merci à vous tous. Je ne suis pas revenu sur le forum, car j’étais dans mes tableaux. Finalement je calcule le nombre de colonnes donc de tableaux, je crée les colonnes à la volée ( car je me sers d’imagettes de 200 pixels ( qui sont enregistrées dans ma base) et selon la largeur de l’écran je rajoute des colonnes. J’affiche 1300 imagettes instantanément et en plus le scroll est rapide. Pour mettre en place les imagettes, je me sers de l’entité sélection avec la boucle de type "For each($imagett;mesimagets) ". J’adore ce type de boucles, c’est super rapide. Encore merci à Arnaud de_MONTARD pour l’idée ( je n’y pensais pas ou n’osais pas y penser : je suis un peu fainéant pour certaines programmations)

Attention au For each sur une entity selection : même si c’est nettement plus rapide qu’un Tant que non fin de sélection, ça fait tout de même des aller retour au serveur. Si tu as travaillé en mono, ça risque d’aller beaucoup moins vite en C/S, et encore moins vite en distant.