informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 2012
-
18 août 2005 à 19:42
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 2012
-
27 août 2005 à 00:12
J'utilise la procédure de "Brain" pour gérer la molette au sein d'une DBgrid, donc le défilement vertical.
Maintenant, pour que mon logiciel soit plus ergonomique, je voudrais
pouvoir faire défiler les barres de défilement à l'aide des flèches de
direction.
Bon, pour les flèches haut et bas ce n'est pas très compliqué. Sur le
keydown de la DBgrid je détecte l'appuie sur la touche voulue puis je
prend le bout de code de la procédure de "Brain" et hop le tour est
joué (en gros, l'utilisation du next et prior).
Mon problème est le suivant : dans ma DBgrid, j'ai beaucoup de colonnes
et je ne les voient pas toutes à l'écran et certaines qui sont cachés
sont très importantes (information sur les prix quantités, etc ...).
Evidement j'ai une barre de défilement horizontale que je peux
manipuler avec la souris mais ce n'est pas des plus pratique. Je
souhaiterais pouvoir faire défiler ces colonnes à l'aide des flèches
droite et gauche.
De plus, est-il possible avec ces DBgrid d'avoir un défilement avec la
souris comme sous excel ou on peut aller dans tous les sens ?
Merci d'avance pour l'attention que vous porterez à ce message un peu long et des évetuelles réponses que vous me fournirez.
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 23 août 2005 à 15:39
Personne a une idée pour mon problème de flèche gauche droite ?
J'ai une autre question : je fais du multiselect sur ma DBGrid et je me
sers de "SelectedRows" ainsi que "CurrentRowSelected" et "gotobookmark"
avec un pointer pour manipuler la suppression (simple ou avec
multisélection).
Quand je me sers de la souris, impécable mais si j'ai le malheur de me
servir des flèches haut et bas (ce coup-ci) et bien ça descend d'une
ligne (ça c'est normal et heureusement lol) mais par contre quand je
fais "suppr" ça ne marche pas (il ne se passe rien).
Cela me fais comme avant que je découvre l'astuce du
currentRowSelected. Alors j'ai tenter de mettre un CurrentRowSelected
lors de l'appuie flèche haut ou bas mais rien à faire.
Quelqu'un aurait-il une idée pour ces 2 problèmes car là c'est comme
dans le titre du thème "J'ai besoin d'aide et je suis au bord du
suicide".
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 23 août 2005 à 17:51
Je continue, je suis têtu. J'ai trouvé de nouvelles pistes :
Tout d'abord, si on va directement dans "DBGrid" avec CTRL + clic
gauche, il y a le détail de getcurrentrowselected et
setcurrentrowselected mais j'avoue avoir quelque difficulté à
comprendre le mécanisme avec le bookmarklist.
Sinon la fonction locate du dataset pourrait peut-être m'aider mais moi
ce que je cherche ce n'est pas à filtrer mais à rendre "active" ou "en
cours" la ligne de la dbgrid au sein de l'ensemble de données.
C'est-à-dire que si je navigue avec la flèche bas (exemple je descend
de trois ligne), je veux que la troisième ligne devienne active au sein
de l'ensemble de données sinon après je ne peux plus me servir du
selectedrow.
J'espère être clair sinon je comprends bien que vous ne pouvez pas
m'aider, si vous avez besoin de précisions pour pouvoir m'aider je suis
là.
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 27 août 2005 à 00:12
Bon j'ai réglé un des 2 problèmes, celui des flèches haut et bas. En fait, il faut gérer les 2 cas séparéments.
En fait, "SelectedRows" ne fonctionne que quand l'utilisateur
sélectionne une ou plusieurs ligne en cliquant avec le bouton gauche de
la souris mais quand on se déplace avec les flèches ou la molette de la
souris, la propriété "Count" de "SelectedRows" vaut 0 et ça ne marche
plus.
Donc j'ai déclaré un tableau dynamique avec un type de données adapté
(string ou integer suivant le cas et en ce qui me concerne) et je le
rempli en fonction des 2 états.
exemple:
var
intCompteur, intNombreLignes: Integer;
tabListeArticles: Array of String;
...
if DBGrid.SelectedRows.Count > 0 then
begin
for intCompteur := 0 To intNombreLignes - 1 do
begin
ModuleDeDonnees.Requete.GotoBookmark(pointer(DBgrid.SelectedRows.Items[intCompteur]));