Pourquoi un double clic sur une sélection ne le positionne pas comme d&#233

BXDS Messages postés 17 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 22 novembre 2003 - 8 mars 2003 à 16:06
BXDS Messages postés 17 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 22 novembre 2003 - 11 mars 2003 à 17:51
Bonjour

J'ai une DBgrille. Lorsque je double clique sur un enregistrement, il se lance sur le premier enregistrement au lieu de celui cliqué.
Le double clic entame l'affichage d'une fenêtre de saisie différente de la fenêtre Grille.
Est-ce que l'on peut m'orienter vers ce problème ?

Merci à tous

Cordialement vôtre
------------------------------------------------
Le savoir est la clé de l'évolution. L'évolution sert à l'homme malgré tous ses mauvais côtés
A voir également:

8 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
8 mars 2003 à 21:14
La question n'est pas très claire...

Que fais-tu exactement lors du double-click ? Affiches-tu une fenêtre de saisie ? Si c'est le cas est-ce sur la même base de données que celle de la grille ?

--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 mars 2003 à 01:11
Je pense que tu oublies de synchroniser l'ensemble de données affiché dans la deuxième fenêtre. Si tu utilises des composants TTable, alors utilises aussi la méthode GotoCurrent :
Table2.GotoCurrent(Form1.Table1);

et ceci dès l'ouverture de la deuxième fenêtre, ici dénommée form2.
May Delphi be with you
0
BXDS Messages postés 17 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 22 novembre 2003
9 mars 2003 à 09:23
Bonjour
Merci pour cette piste.
Vous avez compris mon problème pour synchroniser l'ensemble de mes données.
Seul hic, j'utilise un datamodule. Comment arriver à une synchronisation entre les deux ou plutôt comment envoyer l'information de la position courante de mon enregistrement à l'autre form.

Merci à tous

Cordialement vôtre
------------------------------------------------
Le savoir est la clé de l'évolution. L'évolution sert à l'homme malgré tous ses mauvais côtés
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 mars 2003 à 10:18
Alors, c'est encore mieux !
Chaque fiche référence le datamodule dans sa clause Uses :

Dans la première fiche :
uses
  Datamodule1;
...


puis dans la deuxième fiche :

uses
  Datamodule1;
...
procedure TForm2.FormActivate(sender: TObject);
begin
  DataModule1.Table2.GotoCurrent(DataModule1.Table1);
end;

Il n'est pas question d'informer la deuxième fiche d'un changement de la position courante dans la première table.
D'ailleurs, une seule table suffit, seule la présentation est différente dans la deuxième fiche. Dans ce cas, les contrôles visuels sur cette deuxième fiche devront avoir le même datasource que ceux de la première fiche. Ainsi, tu ne gères qu'un seul curseur de table.
L'utilisation de la méthode GotoCurrent est valable si l'on décide de mettre les composants descendants de TDataSet sur les fiches et assurer une liaison entre eux.
Dans le cas de l'utilisation d'un TDataModule, elle n'est plus nécessaire, sauf pour assurer une compatibilité avec Delphi 1 !
May Delphi be with you
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BXDS Messages postés 17 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 22 novembre 2003
9 mars 2003 à 16:23
Merci à tous

Cordialement vôtre
------------------------------------------------
Le savoir est la clé de l'évolution. L'évolution sert à l'homme malgré tous ses mauvais côtés
0
BXDS Messages postés 17 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 22 novembre 2003
9 mars 2003 à 16:26
Bonjour

Donc, selon la dernière explication, il faut que je créé 2 tables dans mon datamodule avec la même datasource. Bizarre, Ou dois-je disposer un élément TableData sur la form Liste et un autre dans la forme Fiche ?

Merci à tous

Cordialement vôtre
------------------------------------------------
Le savoir est la clé de l'évolution. L'évolution sert à l'homme malgré tous ses mauvais côtés
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 mars 2003 à 22:32
J'ai dû mal m'expliquer. Je reprends.
Premier cas : tu disposes tes composants TTable sur les fiches. Dans ce cas, pour synchroniser l'affichage des fiches, tu utiliseras la méthode GotoCurrent.

Deuxième cas (meilleur) : tu disposes un composant TTable sur un Datamodule, ce dernier étant référencé par chaque fiche ayant besoin d'accèder aux données. Ce composant TTable est relié à un TdataSource, auxquels sont reliés les contrôles visuels orientés données.
Dans le schéma ci-dessous :
-> signifie : "relié à"
(datasource) signifie "par la propriété"
Fiche 1 : 
DbGrid1-(datasource)->Datamodule1.DataSource1-(DataSet)->DataModule1.Table1

Fiche 2 :
DbEdit2-(DataSource)->DataModule1.DataSource1-(DataSet)->DataModule1.Table1


Suis-je plus clair ?
May Delphi be with you
0
BXDS Messages postés 17 Date d'inscription jeudi 9 mai 2002 Statut Membre Dernière intervention 22 novembre 2003
11 mars 2003 à 17:51
Bonsoir

Tout à Fais

Merci à tous

Cordialement vôtre
------------------------------------------------
Le savoir est la clé de l'évolution. L'évolution sert à l'homme malgré tous ses mauvais côtés
0
Rejoignez-nous