IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Effectuer une action après saisie dans la cellule d'une TStringGrid


Sujet :

Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut Effectuer une action après saisie dans la cellule d'une TStringGrid
    Bonsoir !

    Quelqu'un pourrait-il m'indiquer 1 lien ou me donner 1 bout de code pour effectuer la saisie dans chaque cellules de mon StringGrid à partir d'1 contrôle Edit ?

    Merci par avance !
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Je ne vois pas ce que tu veux exactement ...

    Si tu souhaites écrire directement dans les cellules d'un StringGrid,il suffit de mettre la propriété goEditing à true dans les Options.

    J'espère ne pas répondre à coté de la question

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut
    Merci ero-senin,

    Je viens du monde Visual Basic et mon temps est assez compté pour ce projet alors je poste des fois 1 peu vite sans avoir tout exploré en détail...

    Merci encore !
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut Effectuer une action après saisie dans la cellule d'1 StringGrid
    Bonjour !

    Voila, j'ai 1 TStringGrid en mode edit (goEditing=true)

    Or, je souhaiterai après avoir saisie ma valeur dans une cellule de ma stringgrid, au moment ou je quitte la cellule, effectuer une action...

    Sur quel évènement dois-je agir ???

    J'ai essayé sur SetEditText mais cet évènement survient à chaque caractère que je saisi dans ma cellule,

    Or, Je souhaiterai effectuer mon action a la fin de la saisie...



    Merci beaucoup pour votre aide !

    Denis
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre confirmé

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Points : 508
    Points
    508
    Par défaut
    Il te faut créer un nouveau composant StringGrid.

    Je pense que le plus simple et le plus rapide est d'utiliser le composant TJvStringGrid de la JVCL (gratuit) qui dérive un TStringList en y incorporant justement l'évènement OnExitCell.

    ... Ou bien t'en inspirer si tu veux recréer toi-même un composant.

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par User
    Or, je souhaiterai après avoir saisie ma valeur dans une cellule de ma stringgrid, au moment ou je quitte la cellule, effectuer une action...
    Quel est ce type d'action? Vérifier si la saisie est correcte et interdire ou autoriser le changement de cellule le cas échéant ?

    @+

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 571
    Points
    19 571
    Billets dans le blog
    65
    Par défaut
    Rebonjour,

    Okaryn: Je souhaite garder mon TStringGrid,
    ne puis-je pas agir sur KeyPress et tester la valeur de Key (si enter ou fleche alors faire




    Cl@udius: je souhaite mettre a jour une table avec la valeur saisie dans la cellule...(je ne veux pas non plus de DBGrid...)


    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je te donne le même conseil qu'Okaryn : passe en JVCL la bascule est simple sans tout réécrire. Surtout si tu as installé GExpert qui a la fonction 'replace component'

  9. #9
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    normalement, quant tu ecrit dans une cellule pour la premiére fois le Tstringgrid crée un TEdit, ( Tstringgrid.contol[0] si ma mémoir est bon) tu peut en prmié temp surchrgé le winproc de stringgrid pour détecté sa création, puis surcharge le winproc ou meme affecte Onexit de ce Tedit par une proc (:TNotifyEvent)
    bah, c'est à peut prés ce que j'ai fait.
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  10. #10
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par edam
    normalement, quant tu ecrit dans une cellule pour la premiére fois le Tstringgrid crée un TEdit, ( Tstringgrid.contol[0] si ma mémoir est bon) tu peut en prmié temp surchrgé le winproc de stringgrid pour détecté sa création, puis surcharge le winproc ou meme affecte Onexit de ce Tedit par une proc (:TNotifyEvent)
    bah, c'est à peut prés ce que j'ai fait.
    Salut edam

    Ta méthode m'intéresse beaucoup, tu pourrais m'en dire plus?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  11. #11
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, StdCtrls;
     
    type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        winp,winpE:TWndMethod;
        procedure mywinproc (var Message: TMessage);
        procedure mywinprocE (var Message: TMessage);
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
    procedure TForm1.mywinproc;
    begin
        if (Message.Msg>=CM_CONTROLLISTCHANGE) then // CM_CONTROLLISTCHANGE= CM_BASE + 44; // il faut faire plus de test pour connaitre le message de création . j'ai oublié le quel , si vs me donnez plus du temps .....
             if StringGrid1.ControlCount=1 then
               begin
                 winpE:=StringGrid1.Controls[0].WindowProc;
                 StringGrid1.Controls[0].WindowProc:=mywinprocE;
               end;
         winp(message);
    end;
    procedure TForm1.mywinprocE;
    begin
         if message.Msg=WM_KILLFOCUS then ShowMessage('exit');
        winpE(message);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
         winp:=StringGrid1.WindowProc;
         StringGrid1.WindowProc:=mywinproc;
    end;
     
    end.
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  12. #12
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Merci Edam
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/06/2015, 15h08
  2. Réponses: 3
    Dernier message: 18/07/2011, 17h12
  3. MSGbox apres saisie dans une cellule
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/02/2011, 20h09
  4. Réponses: 1
    Dernier message: 08/08/2008, 17h16
  5. Envoi d'une action après click dans un select
    Par sutailga dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/06/2006, 20h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo