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;
}
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