Bonjour à tous,
Y a t il un moyen pour connaitre le premier enregistrement dans DbGrid ?
Je cherche à gérer la page suivante / Précédente d'un DbGrid / DBE
Merci à tous
Bonjour à tous,
Y a t il un moyen pour connaitre le premier enregistrement dans DbGrid ?
Je cherche à gérer la page suivante / Précédente d'un DbGrid / DBE
Merci à tous
Bonjour,
En pricipe un DBGrid est accompagné d'un DBNavigator qui permet de se déplacer et de retouner
sur le premier enregistrement.
Question imprécise.
PL
Voilà la réponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TDBGridRows = class(TDBGrid); TDBGridRows (DBGrid1).Row TDBGridRows (DBGrid1).VisibleRowCount
Bah c'est le premier enregistrement de ton dataset (DataSet1.FindFirst ) ! :aïe:
Sinon, admettons que ce soit la valeur de la première colonne qui t'intéresse :
Alors après effectivement, admettons que tu fasses un scroll down sur ya DBGrid, la première ligne change visuellement, mais c'est mort, tu ne peux accéder à la valeur affiché : les données ne sont pas stockées par le TDBGrid, elles sont lues dans la base de données et dessinées, point barre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Function PremiereLigne(FieldName : string; TonDBGrid:TDBGrid) : Variant;(Sender: TObject); var SauveCurseurDB: TBookmark; begin with TonDBGrid.DataSource.DataSet do begin DisableControls; //évite de redessiner le DBGid (et autres controles utilisant le même Dataset) pendant que l'on va aller lire le premier enregistrement SauveCurseurDB:= GetBookmark; // On place un point de repère sur l'enregistrement courant de notre base de donnée (celui qui es actif) try FindFirst; // on se déplace sur le 1er enregistrement (qui correspond à la première ligne de notre grille) Variant:= FindFieldFieldName).Value; on lit la valeur du champ GotoBookmark(SauveCurseurDB); //on revient sur l'enregistrement qu'on a laissé précédemment finally FreeBookmark(SauveCurseurDB); //On libère la resource de notre point de repère EnableControls; //on réactive le dessin des controles utilisant le Dataset end; end; end;
En plus, ce que toi tu définis comme étant "première ligne" (visuelement donc), est en fait une ligne numéro X pour Windows (et Delphi), la "Première ligne", la vrai est hors champs d'affichage : TDBgrid est un composant scrollable.
A la rigueur tu peux t'en sortir avec l'évènement OnScroll du TDBGrid, pour savoir de combien tu scrolles, de la propriété rowHeight et de la propriété visiblerowcount pour arriver ) calculer l'index de l"enregistrement de base de donnée sur laquelle tu te trouves.
En tout cas, je ne sais pas ce que tu cherches à faire, mais normalement tu n'as pas à gérer un défilement par page avec un TDBGrid, ou alors utilise un autre composant. D'ailleurs je te conseille vivement le TSMDBGrid en remplacement de TDBGrid, qui est gratuit et beaucoup plus complet : http://www.scalabium.com/smcmpnts.htm
Bidouilleuse Delphi
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager