OVH Cloud OVH Cloud

desactiver un bouton d'enregistrement précédent ou suivant

4 réponses
Avatar
Le méruvien
bonjour,
Dans mon formulaire, j'ai mis un bouton pour afficher l'enregistrement
suivant, ou précédent,
Comment faire pour desactiver l'un ou l'autre quand je suis au 1er
enregistrement ou au dernier.
Ex: if [enregistrement actuel ] - 1 est null, ....... bouton.enabled=false
ou l'inverse
merci
roger

4 réponses

Avatar
3stone
Salut,

"Le méruvien"
Dans mon formulaire, j'ai mis un bouton pour afficher l'enregistrement
suivant, ou précédent,
Comment faire pour desactiver l'un ou l'autre quand je suis au 1er
enregistrement ou au dernier.
Ex: if [enregistrement actuel ] - 1 est null, ....... bouton.enabledúlse
ou l'inverse




Une des nombreuses posibilités:
http://mypage.bluewin.ch/w.stucki/Formulaires.htm#BtnNavig



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Le méruvien
Bonjour Stone,
j'ai été sur le site, et j'ai donc fait comme il est écrit, ça marche pour
le bouton précédent, mais pas pour le suivant, j'ai essayé les 2 méthodes
1)

Private Sub Form_Current()

btnPrécédent.Enabled = CBool(Me.CurrentRecord - 1)
btnSuivant.Enabled = Not Me.NewRecord
End Sub
Cette méthode ne désactive pas le bouton.

btnSuivant.Enabled = (Me.CurrentRecord < Me.RecordsetClone.RecordCount)

Celle là le désactive a l'ouverture du formulaire.

Mon formulaires affiche des enregistrements sélectionnés selon un critère.
Voit tu quelque chose pour me depanner ?
merci


"3stone" a écrit dans le message de news:

Salut,

"Le méruvien"
Dans mon formulaire, j'ai mis un bouton pour afficher l'enregistrement
suivant, ou précédent,
Comment faire pour desactiver l'un ou l'autre quand je suis au 1er
enregistrement ou au dernier.
Ex: if [enregistrement actuel ] - 1 est null, .......
bouton.enabledúlse


ou l'inverse




Une des nombreuses posibilités:
http://mypage.bluewin.ch/w.stucki/Formulaires.htm#BtnNavig



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------







Avatar
3stone
Salut,

"Le méruvien"

btnPrécédent.Enabled = CBool(Me.CurrentRecord - 1)
btnSuivant.Enabled = Not Me.NewRecord
btnSuivant.Enabled = (Me.CurrentRecord < Me.RecordsetClone.RecordCount)

Mon formulaires affiche des enregistrements sélectionnés selon un critère.
Voit tu quelque chose pour me depanner ?



Deux lignes qui fonctionne et que tu peux mettre dans le code du bouton concerné...

'bouton précédent
Me.bt_Precedent.Enabled = (Me.CurrentRecord > 1)

'bouton suivant
Me.bt_Suivant.Enabled = (Me.CurrentRecord < Me.RecordsetClone.RecordCount)

Mais, on ne peut pas désactiver le contrôle qui a le focus!
Donc, avant de le désactiver, il faut envoyer le focus ailleurs,
par exemple dans le premier champ...

Ceci, fonctionne donc lorsque tu clique sur l'un des boutons...
Pour que cela désactive le bouton "précédent" dès l'ouverture du formulaire,
il faudrait faire la même chose dans l'événement "Form_Open"
(ou le désactiver d'office, il serait activé sur le premier clic "suivant")

Tu change donc de méthode, et tu mets cela "Sur activation" du formulaire,
cet événement, comme tu le sais, est exécuté à chaque changement d'enregistrement.

Quelque chose comme ceci:

'Déplacer le focus sur le premier champ
Me!Champ1.SetFocus

'Activer / désactiver les boutons
With Me
.bt_Precedent.Enabled = (.CurrentRecord > 1)
.bt_Suivant.Enabled = (.CurrentRecord < .RecordsetClone.RecordCount) And Not .NewRecord
End With


Et pour que cela fonctionne correctement dès l'ouverture du formulaire
ainsi qu'avec 0 enregistrement, tu ajoute "Sur chargement" du formulaire:

With Me.RecordsetClone
If .RecordCount > 0 Then .MoveLast
End With


Cela te va ?

NB: Répondre lorsque l'on rentre à plus de 3 heures du mat,
c'est pas consciencieux cà ?

Aie aie, je vais encore avoir droit à une remarque "CFIèsque"

;-)))

--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Le méruvien
bonjour, et merci Stone, je vais essayer ça, effectivement 3h30 c'est tôt ou
tard, mais y a pas d'heure pour les braves.


"3stone" a écrit dans le message de news:
#
Salut,

"Le méruvien"

btnPrécédent.Enabled = CBool(Me.CurrentRecord - 1)
btnSuivant.Enabled = Not Me.NewRecord
btnSuivant.Enabled = (Me.CurrentRecord < Me.RecordsetClone.RecordCount)

Mon formulaires affiche des enregistrements sélectionnés selon un
critère.


Voit tu quelque chose pour me depanner ?



Deux lignes qui fonctionne et que tu peux mettre dans le code du bouton
concerné...


'bouton précédent
Me.bt_Precedent.Enabled = (Me.CurrentRecord > 1)

'bouton suivant
Me.bt_Suivant.Enabled = (Me.CurrentRecord < Me.RecordsetClone.RecordCount)

Mais, on ne peut pas désactiver le contrôle qui a le focus!
Donc, avant de le désactiver, il faut envoyer le focus ailleurs,
par exemple dans le premier champ...

Ceci, fonctionne donc lorsque tu clique sur l'un des boutons...
Pour que cela désactive le bouton "précédent" dès l'ouverture du
formulaire,

il faudrait faire la même chose dans l'événement "Form_Open"
(ou le désactiver d'office, il serait activé sur le premier clic
"suivant")


Tu change donc de méthode, et tu mets cela "Sur activation" du formulaire,
cet événement, comme tu le sais, est exécuté à chaque changement
d'enregistrement.


Quelque chose comme ceci:

'Déplacer le focus sur le premier champ
Me!Champ1.SetFocus

'Activer / désactiver les boutons
With Me
.bt_Precedent.Enabled = (.CurrentRecord > 1)
.bt_Suivant.Enabled = (.CurrentRecord < .RecordsetClone.RecordCount)
And Not .NewRecord

End With


Et pour que cela fonctionne correctement dès l'ouverture du formulaire
ainsi qu'avec 0 enregistrement, tu ajoute "Sur chargement" du formulaire:

With Me.RecordsetClone
If .RecordCount > 0 Then .MoveLast
End With


Cela te va ?

NB: Répondre lorsque l'on rentre à plus de 3 heures du mat,
c'est pas consciencieux cà ?

Aie aie, je vais encore avoir droit à une remarque "CFIèsque"

;-)))

--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------