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 :

Delphi DBGrid avec button


Sujet :

Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Par défaut Delphi DBGrid avec button
    Salut à tous, je voudrais partager avec vous mon souci, voilà un petit programme qui se compose d'un DBGrid avec un speedbutton dans la dernière colonne. J'ai pris cette (exemple) sur le net :

    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
    procedure TForm1.sDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      MRect: TRect;
    Begin
      IF (Column.Index = 11) Then
      Begin
        MRect := THackDBGrid(sDBGrid1).CellRect(Column.Index + 1,
          THackDBGrid(sDBGrid1).Row);
        if gdSelected in State then
        SuppAvis.Left := MRect.Left + 2;
        SuppAvis.Width := (MRect.Right - MRect.Left) - 4;
        SuppAvis.Top := MRect.Top + 2;
        SuppAvis.Height := MRect.Height - 4;
        SuppAvis.Parent := sDBGrid1;
        SuppAvis.Visible := True;
      End;
    end;
    Le code de l'événement OnClick du speedbutton :

    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
    procedure TForm1.sBitBtn1Click(Sender: TObject);
    begin
      IF MessageDlg('Confirmez la Suppression', mtWarning,
        [mbYes, mbNo], 0) = mrYes Then
      Begin
        Try
          Table.Delete;
        Except
          On E: EFDDBEngineException Do
          Begin
            ShowMessage('Erreur !' + E.Message);
            Raise;
          End;
        End;
      End;
    end;
    Tout marchait très bien. À chaque fois que je sélectionnais une ligne du DBGrid le speedbutton apparaissait et quand j'appuyai sur ce dernier il exécutait la procédure sBitBtn1Click.
    À un moment donné je ne sais quelle bêtise j'ai commis.
    Maintenant le button apparait toujours mais quand je clique sur le bouton il ne lance plus la procedure sBitBtn1Click.
    J'ai refait complètement le programme, mais le problème du click et toujours là, je suis sans solutions depuis deux jours. Merci pour votre aide

    Delphi 10.3

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Par défaut
    Salut, je crois que j'ai trouvé la solution : alors au lieu d'écrire l'événement sur Onclick du SpeedButton, je l'ai fait sur MouseDown du SpeedButton et ça fonctionne.
    Ma question est pourquoi avant la codification de cet événement (MouseDown), lorsque je cliquais sur le speedbutton la procédure OnClick de ce dernier ne s'exécutait pas ?
    Bon voilà la solution ci ça peut aider.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par masterdash Voir le message
    Bon voilà la solution ci ça peut aider.
    Non, pas vraiment la solution
    À un moment donné je ne sais quelle bêtise j'ai commis.
    AMHA la petite bêtise a été dans un changement de bouton (suppression de suppavis, création d'un nouveau Speedbouton)
    avec un peu de malchance votre évènement n'était plus lié au composant

    il aurait fallu fournir à nouveau procedure TForm1.sDBGrid1DrawColumnCell pour en être sûr

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

Discussions similaires

  1. comment effectuer un clic dans un DBGrid avec Delphi?
    Par nesinfo dans le forum Débuter
    Réponses: 5
    Dernier message: 20/05/2009, 21h45
  2. Suppression d'une colonne d'un DBGrid avec delphi
    Par islame dans le forum Bases de données
    Réponses: 6
    Dernier message: 30/04/2007, 01h24
  3. [CR10][Delphi] PB avec Instruction PrintReport
    Par coucoucmoi dans le forum SDK
    Réponses: 6
    Dernier message: 09/03/2005, 09h30
  4. QuickReport (dans Delphi 7) avec QRDBText et IBQuery1!!!!!
    Par yvescollet dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/09/2004, 00h56
  5. [DBGrid avec Cumul]Comment réaliser un cumul dans un DBGrid
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2004, 17h56

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