Aide - Recherche - Membres - Calendrier
Version complète : complement sur les scrollbar
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
nsadon
Bonjour,
jai une table a laquelle j'ai associé un scrollbar, mais je n'ai pas bien compris le fonctionnement du scollbar et ce que je lit dans la doc ne m'aide guere plus.
ma table fait 5 lignes, le nombre de ligne a affiché n'est pas connu je le recupere avant d'afficher ma table.
Jai repris deux fonction pour la gestion du scroll qui sont dans le livre palm os programmation de patrice briol.
voici les fonctions

CODE
void displayRows(Int16 value) {

 TablePtr table;

 Int16 rows;

 Int16 i;

 if (value == last)

   return;

 last = value;

 table = FrmGetObjectPtr(FrmGetActiveForm(), FrmGetObjectIndex(FrmGetActiveForm(), TableTown));

 rows = TblGetNumberOfRows(table);

 TblMarkTableInvalid(table);

 for (i = 0; i < rows; i++) {



   TblSetItemStyle(table, i, 0, numericTableItem);

   TblSetItemInt(table, i, 0, value + i);

   TblSetItemStyle(table, i, 1, labelTableItem);

   TblSetItemPtr(table, i, 1, labels[value + i]);

   TblSetRowUsable(table, i, true);

 }

 TblSetColumnUsable(table, 0, true);

 TblSetColumnUsable(table, 1, true);

 TblRedrawTable(table);

}



Int16 getFirstRow(Int16 scrollValue) {

 Int16 value;

 FlpCompFloat s;

 ScrollBarPtr scrollBarPtr;

 TablePtr tablePtr;

 Int16 maxscroll;

 Int16 minscroll;

 Int16 psize;

 long row;

 int rows;



 scrollBarPtr = FrmGetObjectPtr(FrmGetActiveForm(),FrmGetObjectIndex(FrmGetActiveForm(),ScrollTown));

 tablePtr = FrmGetObjectPtr(FrmGetActiveForm(),FrmGetObjectIndex(FrmGetActiveForm(),TableTown));

 rows = TblGetNumberOfRows(tablePtr);

 SclGetScrollBar(scrollBarPtr, &value, &minscroll, &maxscroll, &psize);

 s.f = maxscroll*1.0;

 s.f = (value/s.f)*rows;

 row = _f_ftoi(s.ff);

 return row;

}

dans ce livre il me dise que si je ne connait pas le nombre de ligne a afficher je n'aurai qu'a la mettre a l'aide de la fonction SclSetScrollBar
cependant ca ne m'affiche soit pas toute mes lignes soit des ligne vides et je ne voit pas trop pourquoi.
j'espere que ma question est clair et que quelqu'un pourra me venir en aide.
merci
Patrice
J'ai un gros doute sur le code que tu postes (au mieux, ce n'est pas du tout efficace...). Si toutes tes lignes ont la même hauteur, ce n'est pas bien compliqué, juste un peu long à écrire...

En gros, tu appelles SclSetScrollBar avec en paramètre :
- la position actuelle
- la valeur minimale (en général 0)
- la valeur maximale
- le "pas" de défilement (en général le nombre de lignes "visibles" - 1)

Ton tableau doit être défini avec un nombre de lignes visibles par défaut, par exemple 5 (qui peut varier si tu gères la ZGV, au passage). Si tu as 5 éléments ou moins, tu ne veux pas de scrollbar. La "valeur maximale" doit donc valoir le nombre d'éléments total - le nombre d'éléments visibles (exemple : 6 lignes à afficher, tu as un scroll sur 1 élément).
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.