Selection + le mettre au milieu de mon DBGrid [Résolu]

Messages postés
97
Date d'inscription
vendredi 19 octobre 2007
Dernière intervention
18 décembre 2013
- - Dernière réponse : cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 24 août 2008 à 14:42
 Bonjour,

Je viens demander de l'aide.
J'ai sur mon forme, un DBGrid, un TibQuery et un TDataSource.
Le résultat de ma requête (DateCom, Montant, Montant1) s'affiche bien dans le DBGrid.

A la suite de quoi, je fais un Locate('DateCom',Date,[]) sur la colonne DateCom à la date du jour. Il me trouve bien cette localisation en sélectionnant la ligne dans mon DBGrid.

Mon seul soucis et quand il y a plusieurs enregistrement visible sur mon DBGrid à l'affichage , la selection se trouve en bas du DBGrid.

J'aimerai avoir cette selection visible au milieu du DBGrid.

Merci pour l'aide...
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
97
Date d'inscription
vendredi 19 octobre 2007
Dernière intervention
18 décembre 2013
3
Merci
J'ai du changer mon DBGrid par une ListView car je n'arrivais pas à effectuer une modification sur le DBGrid. Avec comme erreur : pas en mode édition.... J'ai eu beau modifier des paramètres notamment dgEditing ou encore ReadOnly, impossible de modifier le contenu d'une cellule.

Du coup, j'ai opté pour une listview et pour me positionner sur la date du jour, j'ai mis ce code trouvé sur ce site :

  //Pour se positionner sur la date du jour
  if (dateDeb <= Date) and (Date <= dateFin)
    then begin
      lvSoldes.Selected := lvSoldes.FindCaption(0,DateToStr(Date),True,True,True);
      if (lvSoldes.Items.Count > 0)
       then lvSoldes.Selected.MakeVisible(false);
      lvSoldes.SetFocus;
    end;

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de grandyaka54
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
bonjour,
Si la sélection après locate se cale en bas du grid c'est donc que tu es sur le dernier enregistrement..(table non filtrée bien entendu)

cantador
Commenter la réponse de cs_cantador
Messages postés
97
Date d'inscription
vendredi 19 octobre 2007
Dernière intervention
18 décembre 2013
0
Merci
Bjr Cantador,

Justement non, ce n'est pas mon dernier enregistrement. Par exemple, je choisis d'afficher dans ma requete les données entre le 01/06/08 et le 31/08/08,et j'utilise le locate en pointant sur le date du jour,  il se cale bien sur la date demandé dans le locate mais la selection se retrouve en bas du DBGrid. Et justement j'aimerai que la selection se cale dans l'ideal au milieu de mon DBGrid quand la plage de date est grande.

grandyaka
Commenter la réponse de grandyaka54
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
dans ma requete les données entre le 01/06/08 et le 31/08/08,
ta table est donc bien filtrée..

merci d'indiquer comment tu mets en place ce filtre et donner
le code exact du locate ?

cantador
Commenter la réponse de cs_cantador
Messages postés
1293
Date d'inscription
mardi 28 octobre 2003
Statut
Contributeur
Dernière intervention
3 juillet 2015
0
Merci
Bonjour,

J'ai un peu cherché, mais sans trop de succès. Je te laisse mon brouillon si tu veux fouiller un peu plus...

Ajoute le type suivant avant la déclaration de ta form

   TDBGrid = class(DbGrids.TDBGrid)
      Published
           Procedure SetMyTopRow(ARow : integer);
   end;

et la procédure suivante dans l'implémentation :
procedure TDBGrid.SetMyTopRow(ARow : integer);
begin
        TCustomGrid(Self).TopRow := ARow;
        invalidate;
end;

Tu verras que si tu mets un point d'arrêt sur la ligne en gras, quelque soit l'enregistrement où tu te trouves le toprow est toujours à 1... C'est une piste.

Sinon, si tu n'as pas à modifier les enregistrements, tu peux travailler avec un stringgrid...

Simon
Commenter la réponse de sp40
Messages postés
97
Date d'inscription
vendredi 19 octobre 2007
Dernière intervention
18 décembre 2013
0
Merci
Merci pour la piste simonpelloquin, j'essayerai ton exemple. Je garde mon DBGrid car je dois en fonction du cas faire des modifications.

Des que j'ai trouvé, je préviendrais.

grandyaka
Commenter la réponse de grandyaka54
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
mets un "Order by DateCom"
dans ta requête d'ouverture et
relance ton locate.

cantador
Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
0
Merci
oui oui, mais cela n'a plus rien à voir avec la question posée au départ...

cantador
Commenter la réponse de cs_cantador

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.