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

Composants VCL Delphi Discussion :

Problème avec événement OnClick de DbGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut Problème avec événement OnClick de DbGrid
    Chalut

    Je ne m'en sort plus du tout avec ces DbGrids... Je dois avoir raté klk chose ou alors c'est Borland qui a raté klk chose!!!
    (j'opterai à 100% pour la première solution.. lol.)

    J'explique:
    N'étant pas satisfait du résultat d'un scrollbar dans des DbGrids, j'ai donc viré cet ascenseur et ajouté un UpDown.
    Après avoir tuer quelques heures à essayer de faire fonctionner le UpDown... J'ai fini par le virer et le remplacer par deux boutons auxquels j'ai affecté le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    dbgrid1.DataSource.DataSet.Prior;
    end;
     
    procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
    dbgrid1.DataSource.DataSet.next;
    end;
    Je ne suis pas sûre qu'il fallait faire cela mais en tout cas, le résultat fonctionne ils jouent bien le rôle du scrollbar. (je ne vous raconte pas à quel point j'étais content )
    Seulement, mon évènement OnClick du DbGrid1 est tout perturbé et ne sélectionne plus du tout les champs sur lesquelles je clique

    Mon erreur vient surement du code des deux boutons car tout fonctionne de nouveau si je mets ce code en commentaire...

    Une fois de plus je demande vos lumières
    Thx in advance...

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Je pense que tu peux garder ton DBGrid comme il est avec les scrollbar.

    Essai ça

    Dans la partie private de ta form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      private
        { Private declarations }
        procedure DBGridMouseWheelUp(Sender: TObject; Shift:
        TShiftState;MousePos: TPoint; var Handled: Boolean);
        procedure DBGridMouseWheelDown(Sender: TObject; Shift: TShiftState;
        MousePos: TPoint; var Handled: Boolean);
    Dans l'evenement onshow

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.FormShow(Sender: TObject);
    begin
      With TStringGrid(DBGrid1) do
      begin
        OnMouseWheelDown := DBGridMouseWheelDown;
        OnMouseWheelUp := DBGridMouseWheelUp;
      end;
    end;
    Ailleur dans ton unit

    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
    {ROULETTE Down}
    procedure TForm1.DBGridMouseWheelDown(Sender: TObject; Shift: TShiftState;
    MousePos: TPoint; var Handled: Boolean);
    begin
      Handled:=True;
      DBGrid1.Datasource.DataSet.Next;
    end;
    
    {ROULETTE Up}
    procedure TForm1.DBGridMouseWheelUp(Sender: TObject; Shift:
    TShiftState;MousePos: TPoint; var Handled: Boolean);
    begin
      Handled:=True;
      DBGrid1.Datasource.DataSet.Prior;
    end;
    n'oublis pas de mettre
    dgrowselect à True

    Avec cela la molette de la souris fonctionne trés bien et cela ne gene en rien les evenements onclick ou autre du dbgrid.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Merci pour ta réponse BuzzLeclaire... Je connaissais cette méthode mais j'avais un autre but en voulant remplacer le scrollbar.
    J'aurais due préciser dès le début que je voulais augmenter sa largeur.

    S'il y a moyen de le redessiner en augmentant sa largeur alors je suis preneur.
    Sinon, je dois garder la solution des deux boutons ce qui me ramène de nouveau au problème du OnClick.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Je n'ai toujours pas trouvé la solution

    Je pose ma question d'une manière différente alors :
    Comment assigner à la table ainsi qu'au DataSource.DataSet la même valeur (position) ?

    Thx in advance.

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    trouvé sur le web

    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
    var  
     oldMetrics: NONCLIENTMETRICS; // global storage for original settings
     
    // (....)
     
    function SetScrollbarWidth(NewWidth: Integer): Boolean;
    var currentMetrics: NONCLIENTMETRICS;
    begin
      oldMetrics.cbSize := SizeOf(oldMetrics);
      if not SystemParametersInfo(SPI_GETNONCLIENTMETRICS, SizeOf(oldMetrics),
                                  @oldMetrics, SPIF_SENDCHANGE) then begin
        Result := FALSE;  Exit;
      end;
      currentMetrics:=oldMetrics;
      currentMetrics.iScrollWidth:=NewWidth;
      Result :=SystemParametersInfo(SPI_SETNONCLIENTMETRICS, SizeOf(currentMetrics),
                                    @currentMetrics, SPIF_SENDCHANGE);
     
    end;
     
    function RestoreScrollbarWidth: Boolean;
    var currentMetrics: NONCLIENTMETRICS;
    begin
      Result :=SystemParametersInfo(SPI_SETNONCLIENTMETRICS, SizeOf(oldMetrics),
                                    @oldMetrics, SPIF_SENDCHANGE);
    end;
     
    // DEMO:
    // --------------
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      // Set new system scrollbar width:
      SetScrollbarWidth(40);
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      // Restore original system scrollbar width:
      RestoreScrollbarWidth;
    end;
    PS : Que vzeut tu faire exactement avec les scrollBar ?
    @+ Phil

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    J'achète
    Il faut quand même faire attention car cette méthode modifie la largeur de toutes les scrollbar de windows!

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut


    autre solution plus local

    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
     
     
    FlatSB_SetScrollProp(      
        HWND hwnd,
        UINT index,
        INT_PTR newValue,
        BOOL fRedraw
    );
    exemple 
     
    Uses CommCtrl;
    ...
      InitializeFlatSB(DBGRID.Handle);
    ...
       FlatSB_SetScrollProp(DBGRID.Handle, WSB_PROP_CXVSCROLL, 40, True); 
     // scroll bar vertical

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec l'évènement onClick du bouton
    Par phenix1988 dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 29/12/2011, 20h53
  2. Problème avec le onclick d'un checkbox
    Par kabish dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/12/2011, 19h13
  3. Problème avec évènement ..
    Par questionneuse dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2005, 18h47
  4. Problème avec OnDrawColumnCell sur un DBGrid
    Par n1portki dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/09/2005, 04h18
  5. Problème avec Dbgrid
    Par RBIK dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/06/2004, 14h31

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