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

grandyaka54 97 Messages postés vendredi 19 octobre 2007Date d'inscription 18 décembre 2013 Dernière intervention - 14 août 2008 à 11:17 - Dernière réponse : cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention
- 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
grandyaka54 97 Messages postés vendredi 19 octobre 2007Date d'inscription 18 décembre 2013 Dernière intervention - 21 août 2008 à 11:04
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;

Merci grandyaka54 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de grandyaka54
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 14 août 2008 à 13:05
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
grandyaka54 97 Messages postés vendredi 19 octobre 2007Date d'inscription 18 décembre 2013 Dernière intervention - 14 août 2008 à 13:46
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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 14 août 2008 à 14:08
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
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 14 août 2008 à 14:45
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
grandyaka54 97 Messages postés vendredi 19 octobre 2007Date d'inscription 18 décembre 2013 Dernière intervention - 14 août 2008 à 14:54
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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 14 août 2008 à 15:40
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
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 24 août 2008 à 14:42
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.