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 :

création d'évenements en dynamique


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 178
    Par défaut création d'évenements en dynamique
    bonsoir, je débute sur delphi 10.3, et je désire créer des composants en dynamique, avec des propriétés et éventements dédiés.
    Pour les proprités, cela fonctionne. En revanche pour les événements, "OnDragOver" résiste en indiquant que les listes de paramètres diffèrent, entre l'événement initial et la procédure que je cherche à déclencher. Pourtant les listes de paramètres me semblent identiques.
    Sur mon bout de programme test, le "OnClick" est ok, mais pas le "OnDragOver", qui doit modifier théoriquement la taille du bouton.
    et qui ne fonctionne pas. (désactivée par "//" comme devant).
    Merci pour vos idées si cela vous saute au yeux?...


    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    unit clic_et_entrer;
     
    interface
     
    uses
     Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
       jpeg, Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.StdCtrls ;
     
     
    type
      TForm7 = class(TForm)
     
          procedure monclic (sender : tobject);
     
          procedure mondragover (sender, source : tobject; X,Y : integer;
                                  state : tdragstate; accept : boolean);
        procedure FormClick(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form7: TForm7;
               var monbouton : tbutton;
     
    implementation
     
    {$R *.dfm}
     
              procedure tform7.monclic (sender : tobject);
                begin
                  showmessage (' je clique');
     
                end;
     
              procedure tform7.mondragover (sender, source : tobject; X,Y : integer; state : tdragstate ; accept : boolean);
                  begin
                    monbouton.Height := 30;
                  end;
     
     
     
     
     
     
    procedure TForm7.FormClick(Sender: TObject);
    begin
           with monbouton do
                     begin
             monbouton := tbutton.Create (form7);
               parent:= form7;
                          height:= 300;
                          width := 150;
                          top := 50;
                           monbouton.OnClick := monclic ;
                          // monbouton.OnDragOver := mondragover;
     
                     end;
     
    end;
     
     
    end.

  2. #2
    Membre expérimenté Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 325
    Par défaut
    Bonjour,
    L’événement OnDragOver se produit quand tu déplaces un objet au dessus du contrôle (Drag and Drop).
    Si tu veux tester avec la souris, utilise OnMouseMove...

    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
     
    unit uTest;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
     
    type
      TForm1 = class(TForm)
        MonBouton: TButton;
        procedure MonBoutonClick(Sender: TObject);
        procedure MonBoutonMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.MonBoutonClick(Sender: TObject);
    begin
     ShowMessage('Je clique');
    end;
     
    procedure TForm1.MonBoutonMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      MonBouton.Height := 30;
    end;
     
    end.
    Ce sera la même chose en créant ton bouton dynamiquement.
    Bon courage...

  3. #3
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 178
    Par défaut "Ondragover" pour "droit de survol"?...
    Bonjour Galet,

    pour ma part, j'interprète l'événement "ondragover", comme une "autorisation de survol", d'un objet source, sur une forme visible, dans le but pour ma part, de pouvoir ensuite le lâcher, afin qu'il se dépose sur cette forme destinataire.
    Or, quand je crée de manière dynamique une forme pour recevoir cet élément que je déplace, le "accept" du "ondragover" de la forme de réception semble par défaut sur "false", et interdit donc, le survol par un autre objet.
    Il me semble donc nécessaire de créer un événement dynamique "ondragover" sur la forme destinataire, pour simplement valider son paramètre "accept" sur "true".
    Ai-je bien raison de procéder ainsi?...

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 664
    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 664
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Ai-je bien raison de procéder ainsi?...
    Je n'ai pas le temps de répondre extensivement donc je dirais que non, vous vous compliquez l'existence.
    Les explications à ma réponse plus tard, si j'y pense

  5. #5
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 178
    Par défaut
    Bonsoir Sergio, merci de votre passage éclair, même laconique, car même si je galère, je suis rassuré d'apprendre que je me complique la vie.
    En effet je passe beaucoup de temps pour des résultats encore pour le moins modestes et j'espère améliorer mon approche au fil du temps.
    Cela dit, je continue à tester et à découvrir pour avancer doucement..
    Au plaisir de vous croiser à nouveau car j'aurai certainement besoin d'aide très bientôt..

  6. #6
    Membre expérimenté Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 325
    Par défaut
    Bonjour Patdu26,
    La question est "que cherches-tu à effectuer ?"
    - Augmentation de la taille du bouton au passage de la souris ?
    - Création dynamique ?
    - Drag and drop ?

    Tu trouveras une mine d'or ici...à condition d'exprimer la question la plus claire possible.....
    Cordialement,

  7. #7
    Membre émérite Avatar de sergio_is_back
    Homme Profil pro
    Consultant informatique industrielle, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique industrielle, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 191
    Par défaut
    Citation Envoyé par patdu26 Voir le message
    bonsoir, je débute sur delphi 10.3, et je désire créer des composants en dynamique, avec des propriétés et éventements dédiés.
    Pour les proprités, cela fonctionne. En revanche pour les événements, "OnDragOver" résiste en indiquant que les listes de paramètres diffèrent, entre l'événement initial et la procédure que je cherche à déclencher. Pourtant les listes de paramètres me semblent identiques.
    Sur mon bout de programme test, le "OnClick" est ok, mais pas le "OnDragOver", qui doit modifier théoriquement la taille du bouton.
    et qui ne fonctionne pas. (désactivée par "//" comme devant).
    Merci pour vos idées si cela vous saute au yeux?...


    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    unit clic_et_entrer;
     
    interface
     
    uses
     Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
      System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
       jpeg, Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.StdCtrls ;
     
     
    type
      TForm7 = class(TForm)
     
          procedure monclic (sender : tobject);
     
          procedure mondragover (sender, source : tobject; X,Y : integer;
                                  state : tdragstate; accept : boolean);
        procedure FormClick(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form7: TForm7;
               var monbouton : tbutton;
     
    implementation
     
    {$R *.dfm}
     
              procedure tform7.monclic (sender : tobject);
                begin
                  showmessage (' je clique');
     
                end;
     
              procedure tform7.mondragover (sender, source : tobject; X,Y : integer; state : tdragstate ; accept : boolean);
                  begin
                    monbouton.Height := 30;
                  end;
     
     
     
     
     
     
    procedure TForm7.FormClick(Sender: TObject);
    begin
           with monbouton do
                     begin
             monbouton := tbutton.Create (form7);
               parent:= form7;
                          height:= 300;
                          width := 150;
                          top := 50;
                           monbouton.OnClick := monclic ;
                          // monbouton.OnDragOver := mondragover;
     
                     end;
     
    end;
     
     
    end.
    C'est un peu normal que ça ne marche pas, car la déclaration de l'évément OnDragOver doit se présenter comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure Button1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
    Note bien le mot clé "var" en rouge que tu as omis dans ta déclaration
    C'est important car il permet de renvoyer une valeur pour la paramètre "Accept" (True ou False) suivant que ton composant accepte le Drag ou pas provenant de la source
    Après comme le dit patdu26, le OnDragOver n'est forcement le plus approprié pour ce que tu veux faire

  8. #8
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2020
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2020
    Messages : 178
    Par défaut
    Merci beaucoup! J'ai bien oublier le "VAR" avant accept. Je ne le voyais pourtant pas....
    Merci d'avoir pris en compte mon message avec une telle réactivité et une telle attention!!
    A bientôt pour d'autres questions je le crains...

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

Discussions similaires

  1. Création d'un tableau dynamique avec XSL-FO
    Par lionelbrizuela dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/01/2006, 11h04
  2. Réponses: 10
    Dernier message: 31/12/2005, 20h10
  3. Création d'un ensemble "dynamique"
    Par petitcoucou31 dans le forum Langage
    Réponses: 3
    Dernier message: 29/12/2004, 18h05
  4. création d'une librairie dynamique
    Par bilo2000 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 26/08/2004, 15h17
  5. [Plugin] Création d'une vue dynamiquement
    Par The Bonze dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 15/06/2004, 13h23

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