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 :

Donner le focus à une image à l'exécution


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut Donner le focus à une image à l'exécution
    Salut à tous,
    J'aimerais pouvoir gérer l'évèment OnClick d'un objet de type TImage pendant l'exécution de mon application.
    Pour résumer, je développe une petite application qui affiche les poste en réseaux, j'aimerais pouvoir à l'éxécution cliquez sur l'image représentant un poste donné.
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    ?? pas très clair : TImage a déja un event 'OnClick'.
    TU veux faire quoi exactement ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut Plus de précision
    Je souhaite dessiner tous les postes en réseaux avec le mien.
    Les images n'existent donc pas en conception.

    * J'ai d'abord défini un type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      TImagePC = class(TImage)
         PCLabel: TLabel;
      private
        { Déclarations privées }
        destructor Destroy; override;
      public
        constructor Create(Owner: TComponent); override;
        { Déclarations publiques }
      end;
    *les images sont créées à l'exécution grace à la procédure qui suit:

    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
    procedure DrawAlert(Const pRowNum, pColNum : Integer;Const pPCIP, pPCName,pImage : String);
    Var
      img        : TImagePC;
    begin
       try
           img                 := TImagePC.Create(MainForm.PCPanel);
           if (pRowNum = 1) and (pColNum = 1) then gFirstPC := Img;
           img.Parent       := MainForm.PCPanel;
           img.Top           := GetPCTop(pRowNum);
           img.Left           := GetPCLeft(pColNum);
           img.Width        := WPC;
           img.Height       := HPC;
           img.Picture.LoadFromFile(pImage);
           img.PopupMenu := MainForm.PopMPC;
           img.Stretch      := true;
           img.Cursor        := crHandPoint;
           img.DragMode   := dmAutomatic;
           img.Name         := pPCIP;
     
          //Affichage du Nom
          img.PCLabel.Top      := img.Top + HPC +E;
          img.PCLabel.Left      := img.Left;
          img.PCLabel.Parent   := MainForm.PanelPC;
          img.PCLabel.Caption  := Copy(pPCName,1,15);
          img.PCLabel.Height   := H;
          img.PCLabel.Width    := (WPC+ ESP_H) - 10;// Doit s'arrêter à 10 Pixel avant l'objet suivant
          img.PCLabel.WordWrap := true;
     
     
           //Evènements supportés
          img.OnClick      := MainForm.ImageClick;
       except on E : Exception   do
              SaveMsgToFileText('UUtils.DrawPC',E.Message,gVERSION,gEDITION,gLOWSEVERITY);
       end;
    end;
    *Et je souhaite que le click sur ses images exécute la procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TMainForm.ImageClick(Sender: TObject);
    var
      vImage        : TImagePC;
    begin
      if Sender.ClassType = TImagePC then
        begin
            vImage    := Sender As TImagePC;
            UpdateFocus(vImage);
        end;   
    end;
    Mais rien ne s'éxécute, même quand je met un simple showmessage . Merci de votre aide

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    As tu mis des points d'arret et fait un pas à pas de ton code ?

    PS: Merci de penser à utililser les balises de code pour le bout de source.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut Merci de votre aide
    Merci à tous pour l'aide.

    Malatar : Oui, j'ai mis des points d'arrêt, mais le click sur mes images n'exécute pas du tout ma procédure.

    J'ai fini par réussir à faire ce que je souhaitais en passant par les évènements OnDragDrop et OnDragOver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
           //Evènements supportés
          img.OnDragOver   := MainForm.ImageDragOver;
          img.OnDragDrop   := MainForm.ImageDragDrop;
    les codes exécuter sont respectivement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TMainForm.ImageDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := (Sender is TImage);
    end;
     
    procedure TMainForm.ImageDragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
        if Sender = Source then
          UpdateFocus((Sender As TImageAlert));
    end;
    ça marche bien mais j'aimerais tout de même comprendre pourquoi mon évènement OnClick ne s'exécute pas

Discussions similaires

  1. [VB20005] Donner le focus à une listview
    Par omgirl dans le forum Windows Forms
    Réponses: 7
    Dernier message: 17/07/2006, 15h17
  2. [VB6] Comment donner un chemin à une image ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 20
    Dernier message: 28/04/2006, 09h18
  3. [VB]donner le focus à une application déja ouverte ou fermée
    Par Nicko29 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 21/01/2006, 14h28
  4. Réponses: 4
    Dernier message: 05/09/2005, 16h01
  5. Réponses: 3
    Dernier message: 22/08/2005, 17h15

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