grandyaka54
Messages postés97Date d'inscriptionvendredi 19 octobre 2007StatutMembreDernière intervention18 décembre 2013
-
14 août 2008 à 11:17
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
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.
grandyaka54
Messages postés97Date d'inscriptionvendredi 19 octobre 2007StatutMembreDernière intervention18 décembre 20135 21 août 2008 à 11:04
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;
grandyaka54
Messages postés97Date d'inscriptionvendredi 19 octobre 2007StatutMembreDernière intervention18 décembre 20135 14 août 2008 à 13:46
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.
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 14 août 2008 à 14:45
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...