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 :

Comment obtenir le nom d'un objet en clickant dessus?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut Comment obtenir le nom d'un objet en clickant dessus?
    Bonjour,

    Dans mon Form1 je crée des GroupBox. Et j'aimerai recuperer le nom du GroupBox sur le quel je click avec ma souris. Le souci c'est que je ne peux pas créer d'evemement prédefini du type TForm1.GroupBox1Click puisque a l'initialisation de mon programme les GroupBox ne sont pas encor créé.

    Voila comment je les crée:
    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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    box:  tGroupBox;
    box2: tGroupBox;
     
    begin
     
    box:= tTForm1.FormClickCreate(form1);
    box.Parent := form1;
    box.Left:= 100;
    box.Top:= 100;
    box.Height:=50;
    box.Width:=50;
    box.Caption:='Box1';
    box.Visible:= true;
     
    box2:= tTForm1.FormClick.Create(form1);
    box2.Parent := form1;
    box2.Left:= 200;
    box2.Top:= 100;
    box2.Height:=50;
    box2.Width:=50;
    box2.Caption:='Box2';
    box2.Visible:= true;
     
    end;
    Mon idée c'est d'utiliser un évenement on TForm1.FormClick puis de regarder si y a un Groupbox a cette endroit. Comment faire sachant que je connais pas les noms de tous les GroupBox contenu dans mon Form1 puisqu'au final il pourait en avoir d'autre crée...
    Je rappelle la question. lol
    Comment faire pour connaitre le nomme d'un GroupBox quand je click dessu avec ma souris?


  2. #2
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut
    Citation Envoyé par Dereck07
    Le souci c'est que je ne peux pas créer d'evemement prédefini du type TForm1.GroupBox1Click puisque a l'initialisation de mon programme les GroupBox ne sont pas encor créé.
    Tu peux très bien associer un évènement OnClick lors de la création dynamique des GroupBox.
    Et Dans l'event OnClick travailler avec le Sender pour savoir sur quel GroupBox tu as cliqué.

    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
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure GroupBoxClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with TGroupBox.Create(Self) do
      begin
        Parent := Self;
        Name := 'GroupBox1';
        Left:= 100;
        Top:= 100;
        Height:=50;
        Width:=50;
        Caption:='Box1';
        OnClick := GroupBoxClick;
      end;
     
      with TGroupBox.Create(Self) do
      begin
        Parent := Self;
        Name := 'GroupBox2';
        Left:= 200;
        Top:= 200;
        Height:=50;
        Width:=50;
        Caption:='Box2';
        OnClick := GroupBoxClick;
      end;
    end;
     
    procedure TForm1.GroupBoxClick(Sender: TObject);
    begin
      if not (Sender is TGroupBox) then Exit;
      ShowMessage(TGroupBox(Sender).Name);
    end;
    @+ Claudius

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Merci claudius pour ta reponse.
    Ta solustion me parait trés interessante.

    Comment je fait pour indiquer a delphi qu'il doit appeler la procedure procedure GroupBoxClick(Sender: TObject) lorsque je clique sur un GroupBox?

    Pour poser la question differement, comment je fait pour associer un évènement OnClick lors de la création dynamique des GroupBox?


  4. #4
    Expert confirmé
    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 : 62
    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
    Par défaut
    L'association se fait au moment de la création.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      with TGroupBox.Create(Self) do
      begin
        Parent := Self;
        Name := 'GroupBox1';
        Left:= 100;
        Top:= 100;
        Height:=50;
        Width:=50;
        Caption:='Box1';
        OnClick := GroupBoxClick;
      end;
    @+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Désolé claudius, Mais ca ne marche pas.
    Voila comment je l'ai implémanté:

    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
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure GroupBoxClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
     
    var
      Form1: TForm1;
     
    implementation
     
     
    {$R *.dfm}
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    box2: tGroupBox;
     
    begin
    box2:= tGroupBox.Create(form1);
    box2.Parent := form1;
    box2.Left:= 200;
    box2.Top:= 100;
    box2.Height:=50;
    box2.Width:=50;
    box2.Caption:='Box2';
    box2.Visible:= true;
    OnClick := GroupBoxClick;
    end;
     
    procedure TForm1.GroupBoxClick(Sender: TObject);
    begin
    Label1.Caption:='test';
    end;
     
    end.
    Voila ce qui se passe: Tant que je n'ai pas cré box2 et que je clique dans form1 il ne se passer rien. Mon évenement n'ai pas appeller. --> ceci est normal.
    Ensuite, je crée Box2. Et si je clique dessu. Il ne se passe toujours rien. Parcontre si je clicque dans le form1 (pas sur box2), là l'événement est généré. (il y a 'test' qui se marque dans la label1).

    Etrange, non?

  6. #6
    Expert confirmé
    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 : 62
    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
    Par défaut
    Re,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      box2.OnClick := GroupBoxClick
    Là tu avais associé l'évènement OnClick à la Form.

    @+

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

Discussions similaires

  1. [POO] Comment retourner le nom d'un objet
    Par mkael29 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/09/2006, 06h47
  2. [VB.Net 2.0] Comment récuperer le nom d'un objet pour le modifier ?
    Par pti_pierrot dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/07/2006, 13h46
  3. Réponses: 4
    Dernier message: 27/06/2005, 15h11
  4. Comment obtenir le nom complet d'un lecteur réseau ?
    Par Speed41 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 26/08/2004, 07h55
  5. Comment obtenir le nom d'un pc sur un réseau?
    Par Depteam1 dans le forum MFC
    Réponses: 2
    Dernier message: 19/02/2004, 10h17

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