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 :

OnClick sur un Panel créé dynamiquement.


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut OnClick sur un Panel créé dynamiquement.
    Salut tlm,

    j'essai, pour passer le temps... de créer 3 panel dynamiquement.. no problemo..

    mais comment le attribuer l'événement OnClick ?!?

    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
       for i:=0 to 2 do begin
    		panel := TBSSkinPanel.Create(self);
       	with panel do try
       		Parent := form1 ;
             panel.Tag := i ;
          	left := 100 ;
          	top :=  y ;
          	height := 100 ;
          	width := 100 ;
       		Visible := true;
       		SkinData := bsSkinData1 ;
       		panel.Caption := inttostr(panel.tag) ;
          	SkinDataname := 'groupbox';
          	CaptionMode := true;
          	checkedmode := true;
             RollUpMode  := true ;
         //    OnClick := MyOnClick(sender) ;
             // := MyOnClick(i) ;
       	finally
       	//	free;
       	end;
    La ligne que j'avais... OnClick := MyOnClick(sender) ; ne fonctionnait pas, alors je l'ai mise en commentaire.

    Comment faire ??!? Je dois rediriger le OnClick de Delphi, vers ma nouvelle procedure.. mais comment faire ? Et puis, une fois ceci réglé, je dois savoir lequel de ces 3 panels a été clické pour exécuter le code lui correspondant..

    Quelqu'un a une idée ?

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    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
    procedure TForm1.DoClick(Sender: TObject);
    begin
      Showmessage('Click!');
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      for i := 0 to 2 do
      begin
        panel := TBSSkinPanel.Create(self);
        with panel do
        begin
          Parent := form1;
          panel.Tag := i;
          left := 100;
          top := y;
          height := 100;
          width := 100;
          Visible := true;
          SkinData := bsSkinData1;
          panel.Caption := inttostr(panel.tag);
          SkinDataname := 'groupbox';
          CaptionMode := true;
          checkedmode := true;
          RollUpMode := true;
          OnClick := DoClick;
        end;
      end;
    end;
    -Slimjoe

  3. #3
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    +1, et dans DoClick tu peux utiliser le paramètre Sender pour savoir quel panel a déclenché l'événement.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    je l'avais presque finalement...

    ma procédure ne fonctionnait pas car je mettais.. OnClick := MyOnClick(Sender); ))

    Mais pour le sender...
    je me souvenais que le sender était le composant qui appelait la procédure... mais comment lui dire ... si c'est le 2eme panel qui est clické, fait ci. .. l'autre.. fait ca... et ainsi de suite...

    sender suivit d'un . (point) ne m'apporte pas beaucoup d'options dans son menu.. alors, .. je me demande quoi faire par la suite...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    oubliez ca..

    je me suis souvenu lol


    if (Sender as TBsSkinPanel).Tag = 1 then
    Showmessage('Click!');

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    hm... ok, ceci étant réglé..

    comment faire pour faire afficher sur une autre form (form2) l'image du panel créé dynamiquement (sur form1) ?!?

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form1.panel.parent:=form2 ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Graffito
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form1.panel.parent:=form2 ;
    je m'étais peut-etre mal exprimé, mais ton code n'aurais possiblement pas fonctionner.

    Quoiqu'il en soit, j'ai réussi en appliquant ce code...

    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
     
    procedure TForm1.DoClick(Sender: TObject);
    begin
      //if (Sender as TBsSkinPanel).Tag = 0 then
          form2.Image1.Picture.Bitmap := ((Sender as TBSSkinPanel).Glyph) ;
          form2.ShowModal ;
    end;
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    	panel : TBsSkinPanel ;
       btn : TBsSkinButton ;
       b : TButton ;
       i : integer ;
       x,y : integer ;
    begin
     
       x := 0 ;
       y := 200 ;
     
       for i:=0 to 2 do begin
    	panel := TBSSkinPanel.Create(self);
     
       	with panel do 
                 try
       	    Parent := form1 ;
                     panel.Tag := i ;
          	    left := 100 ;
          	    top :=  y ;
          	    height := 100 ;
          	     width := 100 ;
       	    Visible := true;
       	    SkinData := bsSkinData1 ;
       	    panel.Caption := inttostr(panel.tag) ;
          	    SkinDataname := 'groupbox';
          	    CaptionMode := true;
          	    checkedmode := true;
                     RollUpMode  := true ;
                     OnClick := DoClick ;  //
                     Glyph.LoadFromFile('C:\media1.bmp') ;  // Devra être changé, car   fichier loadé devra être la valeur d'un listbox.. 
     
         ......

  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
    si sa dérange personne, je propose un code à moi
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. ajout onclick sur table dynamique
    Par alaver dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 21/02/2013, 16h02
  2. affectation de onclick sur TImage créé dynamiquement
    Par Darkyl dans le forum Composants VCL
    Réponses: 17
    Dernier message: 12/09/2009, 18h53
  3. Procédure onclick sur sous-menus dynamique
    Par julesclaude dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2008, 21h43
  4. OnClick sur un bouton créé dynamiquement
    Par Jeankiki dans le forum Delphi
    Réponses: 4
    Dernier message: 05/11/2006, 18h44
  5. OnClick sur un component créé dynamiquement.
    Par aliwassem dans le forum Delphi
    Réponses: 3
    Dernier message: 01/11/2006, 22h04

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