Faire défiler une zone de tableau pour afficher une ligne spécifique<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut - J'ai une zone de tableau qui contient quelques milliers de lignes, donc seules les premières de ces lignes sont directement visibles dans la fenêtre qui la contient : pour voir le reste, je dois faire défiler la zone de tableau avec la barre de défilement verticale.Quelque part dans cette zone de tableau se trouve une ligne qui répond à un critère particulier.Un simple script me dira quel est ce numéro de ligne, et la propriété Set Selected Rows() le mettra en surbrillance pour moi, afin que je puisse facilement faire défiler le tableau jusqu'à cette ligne pour la trouver - mais je préférerais avoir le tableau La boîte défile automatiquement vers le bon point pour que la ligne s'affiche pour moi.
Y a-t-il un moyen de scripter ça ?Je ne vois pas de propriété répertoriée par la commande "Afficher les propriétés" qui semble pouvoir exécuter une telle fonction.
Merci beaucoup
Re : Faire défiler une zone de tableau pour afficher une ligne spécifiqueDésolé, je viens de réaliser qu'il s'agit de mon clavier sans fil.Quand je le fais sur le clavier de mon ordinateur, cela fonctionne.
Re : Faire défiler une zone de tableau pour afficher une ligne spécifiqueBonjour, j'utilise F7 depuis des années pour mettre en évidence la ligne suivante et maintenant cela ne fonctionne plus.Avez-vous une idée de pourquoi ou de comment puis-je résoudre ce problème ?
Merci,
Carole
Re : Faire défiler une zone de tableau pour afficher une ligne spécifiqueSalut. J'ai récemment eu la même question et j'ai contacté le support JMP (crédit à Jasean). Leur solution est présentée ci-dessous, et je voulais juste la partager au cas où quelqu'un d'autre rencontrerait ce problème. Fondamentalement : vous ne pouvez pas contrôler la position de défilement dans une TableBox, mais vous pouvez le faire avec une VScrollBox. Alors, désactivez le défilement dans la TableBox et placez plutôt la zone de table dans une VScrollBox.
Names Default to Here(1);
long_lis = {};
for each({i}, 1::100, InsertInto(long_lis, "Item " || Char(i)));
scb = StringColBox("Long List", long_lis);
tbl = TableBox(scb);
tbl << Set Scrollable(0, 0); //Turning off scrolling in the tbl box
tbl << Set Selectable Rows;
goto_bb = ButtonBox("Go To Item",
toSelect = neb << Get;
ItemCount = NItems(long_lis);
tbl << Set Selected Rows(EvalList({toSelect})); // select desired item
{h_extent, v_extent} = vsb << Get Scroll Extents; // in pixels
// determine portion of list above selected item and scroll to that relative position
portion = toSelect / ItemCount;
if(portion < 0.05, portion = 0);
vsb << Set Scroll Position(0, portion * v_extent); // in pixels
);
winny = NewWindow("test",
goto_bb, neb = Number Edit Box(50),
vsb = VScrollBox(Size(360), tbl) // set the size as number of pixels
);
Je suis d'accord que ce n'est pas aussi propre que d'avoir le contrôle intégré directement à TableBox, mais cela fonctionne. J'espère que cela t'aides.
-nikles
Re : Faire défiler une zone de tableau pour afficher une ligne spécifiqueJe ne connais aucun message pouvant être envoyé à une zone de table pour la faire défiler vers un emplacement spécifique.J'ai fait une telle demande à Support@jmp.com , mais je n'ai encore rien vu.
J'espère qu'il y a quelqu'un qui pourra me prouver le contraire
Re : Faire défiler une zone de tableau pour afficher une ligne spécifiqueSalut Bill,
J'ai bien peur que non; c'est quelque chose que je dois pouvoir faire avec un script JSL, car j'essaie de supprimer toute action de la part de l'utilisateur pendant que d'autres tâches sont en cours d'exécution.Si, par exemple, mon script a déjà déterminé que la ligne que l'utilisateur doit voir est la ligne 12345, mais que seules les 20 premières lignes de la zone de tableau peuvent être vues à l'écran, alors ce que je dois pouvoir faire ici est essentiellement d'envoyer un message à la zone de table disant "faites défiler jusqu'à la ligne 12345, afin que cette ligne soit affichée dans la fenêtre".
Une autre façon de procéder serait simplement d'extraire le contenu de la ligne 12345 et de l'afficher séparément, mais je préférerais faire défiler l'affichage jusqu'à la ligne appropriée, car il y a d'autres informations contenues dans le tableau autour de cette position qui sont également susceptibles de être d'un intérêt pour l'utilisateur.
Il se peut que je ne puisse pas réellement faire cela, auquel cas je trouverai une autre issue - mais j'ai pensé que cela valait la peine de demander d'abord.
Merci beaucoup
Re : Faire défiler une zone de tableau pour afficher une ligne spécifiqueSalut dqr2,
Est-ce que vous représentez graphiquement vos données ?Si tel est le cas, vous pouvez mettre en évidence un point de données ou un ensemble de points du graphique qui vous intéressent.Revenez à votre table de données et appuyez sur la touche F7.En tapant F7, vous accéderez à la ligne du tableau correspondant au point de données qui figure en premier dans la liste des points sélectionnés.Vous pouvez ensuite appuyer à nouveau sur F7 pour passer au point suivant.Appuyez sur F6 pour revenir à un point précédent.
Meilleur,
Facture