SPF Index du Forum
 Accueil    FAQ    Rechercher
 Connexion

Home -> PointUI dans tous ses états


ajout de l'évenement onclick dans une applet ?
ubuntu
Posté le: 27/02/2009 10:48

Bonjour à tous,

Neophyte en programmation j'essaie d'adapter une applet telle que celle présentée ci-dessous :

Mes questions :

1) comment rendre un applet (tel que celui présenté dans le tutorial "homesweethome") actif via onclick. Quel code et où l' utiliser pour rendre mon image active vers une application ?

@Montecristoff : je rame ..... (désolé !!!)

2) De même dans l'exemple donné, comment associer une icône dans la barre d'applets ????


Code:


class HomeSweetHomeApplet : Applet
{
   // Déclaration du titre
   Label lblTitre;

   // Déclaration de la photo
   Image imgMaMaison;

   // Déclaration de la légende
   Label lblLegende;

   // Préparation du contenu de l'écran
   void Load()
   {
      // Grands caractères, fonte de type Titre
      lblTitre.SetFont("Font.Title");
      // Libellé du titre
      lblTitre.SetText("Home Sweet Home");

      // Chargement de la photo et calibrage en fonction de la résolution de l'appareil
      if (Device.IsVGA())
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",280,180);
      }
      else
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",140,90);
      }

      // Petite fonte pour la légende
      lblLegende.SetFont("Font.Small");
      // Libellé de la légende
      lblLegende.SetText("This is my house!");
      // La légende doit être centrée
      lblLegende.SetAlign("Center","Top");

   }
   void Activated()
   {
      // Premièrement, effacement de l'écran
      Controls.Clear();
   
      // Ajout de l'élément 'Titre' dans l'écran
      Controls.Add(lblTitre);

      // Positionnement du titre en haut et à gauche de l'écran
      // sans changer sa hauteur ni sa largeur
      lblTitre.SetBounds(0,0,GetWidth(),GetHeight());

      // Ajout de l'image sur l'écran
      Controls.Add(imgMaMaison);

      // Centrage de l'image en fonction de la résolution
      if (Device.IsVGA())
      {
            imgMaMaison.SetBounds(100,50);
      }
      else
      {
            imgMaMaison.SetBounds(50,25);
      }

      // Ajout de la légende sur l'écran
      Controls.Add(lblLegende);
   
      // Positionnement de la légende sous la photo, centrée
      if  (Device.IsVGA())
      {
         lblLegende.SetBounds(0,240,GetWidth(),GetHeight());
      }
      else
      {
         lblLegende.SetBounds(0,145,GetWidth(),GetHeight());
      }

   }
}


Répondre en citant  |   | Revenir en haut de page  | 
Montecristoff
Posté le: 04/03/2009 19:28

Bonsoir ubuntu,

Désolé pour le léger retard Wink

1) Pour l'évènement OnClick, c'est relativement simple : imaginons que l'on veuille lancer une application pour visionner la photo de la maison en plein écran. En reprenant mon exemple, cela donnera le code suivant :

Code:


class HomeSweetHomeApplet : Applet
{
   // Déclaration du titre
   Label lblTitre;

   // Déclaration de la photo
   Image imgMaMaison;

   // Déclaration de la légende
   Label lblLegende;

   // Préparation du contenu de l'écran
   void Load()
   {
      // Grands caractères, fonte de type Titre
      lblTitre.SetFont("Font.Title");
      // Libellé du titre
      lblTitre.SetText("Home Sweet Home");

      // Chargement de la photo et calibrage en fonction de la résolution de l'appareil
      if (Device.IsVGA())
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",280,180);
      }
      else
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",140,90);
      }

      // Définition de l'évènement Onclick pour capturer le clic sur la photo
      imgMaMaison.OnClick() =  imgMaMaison_OnClick;

      // Petite fonte pour la légende
      lblLegende.SetFont("Font.Small");
      // Libellé de la légende
      lblLegende.SetText("This is my house!");
      // La légende doit être centrée
      lblLegende.SetAlign("Center","Top");

   }
   void Activated()
   {
      // Premièrement, effacement de l'écran
      Controls.Clear();
   
      // Ajout de l'élément 'Titre' dans l'écran
      Controls.Add(lblTitre);

      // Positionnement du titre en haut et à gauche de l'écran
      // sans changer sa hauteur ni sa largeur
      lblTitre.SetBounds(0,0,GetWidth(),GetHeight());

      // Ajout de l'image sur l'écran
      Controls.Add(imgMaMaison);

      // Centrage de l'image en fonction de la résolution
      if (Device.IsVGA())
      {
            imgMaMaison.SetBounds(100,50);
      }
      else
      {
            imgMaMaison.SetBounds(50,25);
      }

      // Ajout de la légende sur l'écran
      Controls.Add(lblLegende);
   
      // Positionnement de la légende sous la photo, centrée
      if  (Device.IsVGA())
      {
         lblLegende.SetBounds(0,240,GetWidth(),GetHeight());
      }
      else
      {
         lblLegende.SetBounds(0,145,GetWidth(),GetHeight());
      }

   }

   void imgScreenshot_OnClick()
   {
         // Lancement de l'album photo pour visualiser la maison en plein écran
         Process.Start("\\Windows\\Menu Démarrer\\Programmes\\Album.lnk","MaMaison.jpg");
   }
}


2. Pour les icones de la barre d'applets et de l'applet manager (là où tu sélectionnes les applets que tu veux afficher ou non), il faut que tu choisisses une image de base au format png et que la déclines en 3 tailles (64x64, 32x32 et 16x16 pixels) pour ensuite les convertir au format jif. Elles doivent porter les noms suivants :
    Icon.Large.jif
    Icon.Medium.jif
    Icon.Small.jif

Et être placées dans le même dossier que l'applet.

Cool

Répondre en citant  |   | Revenir en haut de page  | 
ubuntu
Posté le: 05/03/2009 12:22

Merci .... mais !!!!

1) pour les icones Applets : Cela fonctionne ....
2) quand au script, quelque chose coince, rien ne se passe ?

--> exemple pour le lancement d'un player video :

Code:

class HomeSweetHomeApplet : Applet
{
   // Déclaration du titre
   Label lblTitre;

   // Déclaration de la photo
   Image imgMaMaison;

   // Déclaration de la légende
   Label lblLegende;

   // Préparation du contenu de l'écran
   void Load()
   {
      // Grands caractères, fonte de type Titre
      lblTitre.SetFont("Font.Title");
      // Libellé du titre
      lblTitre.SetText("Home Sweet Home");

      // Chargement de la photo et calibrage en fonction de la résolution de l'appareil
      if (Device.IsVGA())
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",280,180);
      }
      else
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",140,90);
      }

      // Petite fonte pour la légende
      lblLegende.SetFont("Font.Small");
      // Libellé de la légende
      lblLegende.SetText("This is my house!");
      // La légende doit être centrée
      lblLegende.SetAlign("Center","Top");

   }
   void Activated()
   {
      // Premièrement, effacement de l'écran
      Controls.Clear();
   
      // Ajout de l'élément 'Titre' dans l'écran
      Controls.Add(lblTitre);

      // Positionnement du titre en haut et à gauche de l'écran
      // sans changer sa hauteur ni sa largeur
      lblTitre.SetBounds(0,0,GetWidth(),GetHeight());

      // Ajout de l'image sur l'écran
      Controls.Add(imgMaMaison);

      // Centrage de l'image en fonction de la résolution
      if (Device.IsVGA())
      {
            imgMaMaison.SetBounds(100,50);
      }
      else
      {
            imgMaMaison.SetBounds(50,25);
      }

      // Ajout de la légende sur l'écran
      Controls.Add(lblLegende);
   
      // Positionnement de la légende sous la photo, centrée
      if  (Device.IsVGA())
      {
         lblLegende.SetBounds(0,240,GetWidth(),GetHeight());
      }
      else
      {
         lblLegende.SetBounds(0,145,GetWidth(),GetHeight());
      }

   }

   void imgScreenshot_OnClick()
   {
      // Lancement d'un player vidéo
      Process.Start("\\Program Files\\TCPMP\\player.exe");
   }

}


Répondre en citant  |   | Revenir en haut de page  | 
Montecristoff
Posté le: 05/03/2009 13:39

ubuntu,

Tu as oublie de declarer l'evenement OnClick de l'image.
Regarde l'exemple que j'ai donne juste au dessus.

Cool

Répondre en citant  |   | Revenir en haut de page  | 
ubuntu
Posté le: 05/03/2009 15:48

Montecristoff a écrit:
ubuntu,

Tu as oublie de declarer l'evenement OnClick de l'image.
Regarde l'exemple que j'ai donne juste au dessus.

Cool

Citation:


@Montecristoff

Même en rajoutant comme illustré en rouge si c'est bien de cela dont tu me parle.... cela cloche car dans ce cas Home2 refuse de se lancer .... grrrr j'y arriverais mais ... Confused



class HomeSweetHomeApplet : Applet
{
// Déclaration du titre
Label lblTitre;

// Déclaration de la photo
Image imgMaMaison;

// Déclaration de la légende
Label lblLegende;

// Préparation du contenu de l'écran
void Load()
{
// Grands caractères, fonte de type Titre
lblTitre.SetFont("Font.Title");
// Libellé du titre
lblTitre.SetText("Home Sweet Home");

// Chargement de la photo et calibrage en fonction de la résolution de l'appareil
if (Device.IsVGA())
{
imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",280,180);
}
else
{
imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",140,90);
}

// Définition de l'évènement Onclick pour capturer le clic sur la photo
imgMaMaison.OnClick() = imgMaMaison_OnClick;

// Petite fonte pour la légende
lblLegende.SetFont("Font.Small");
// Libellé de la légende
lblLegende.SetText("This is my house!");
// La légende doit être centrée
lblLegende.SetAlign("Center","Top");

}
void Activated()
{
// Premièrement, effacement de l'écran
Controls.Clear();

// Ajout de l'élément 'Titre' dans l'écran
Controls.Add(lblTitre);

// Positionnement du titre en haut et à gauche de l'écran
// sans changer sa hauteur ni sa largeur
lblTitre.SetBounds(0,0,GetWidth(),GetHeight());

// Ajout de l'image sur l'écran
Controls.Add(imgMaMaison);

// Centrage de l'image en fonction de la résolution
if (Device.IsVGA())
{
imgMaMaison.SetBounds(100,50);
}
else
{
imgMaMaison.SetBounds(50,25);
}

// Ajout de la légende sur l'écran
Controls.Add(lblLegende);

// Positionnement de la légende sous la photo, centrée
if (Device.IsVGA())
{
lblLegende.SetBounds(0,240,GetWidth(),GetHeight());
}
else
{
lblLegende.SetBounds(0,145,GetWidth(),GetHeight());
}

}

void imgScreenshot_OnClick()
{
// Lancement d'un player video pour test applicatif
Process.Start("\\Program Files\\TCPMP\\player.exe");
}
}


Qu'est ce qui cloche Question

Remarque si je recopie ton script tel quel cela plante également ?

Répondre en citant  |   | Revenir en haut de page  | 
Adidi
Posté le: 05/03/2009 16:01

Désolé si je viens comme un cheveux sur la soupe Rolling Eyes mais je regardais par curiosité et je trouve quand même bizarre:

ubuntu a écrit:
// Définition de l'évènement Onclick pour capturer le clic sur la photo
imgMaMaison.OnClick() = imgMaMaison_OnClick;


ubuntu a écrit:
void imgScreenshot_OnClick()
{
// Lancement d'un player video pour test applicatif
Process.Start("\\Program Files\\TCPMP\\player.exe");
}
}

Ne faudrait-il pas remplacer le "void imgScreenshot_OnClick()" en "void imgMaMaison_OnClick()"?

Répondre en citant  |   | Revenir en haut de page  | 
Montecristoff
Posté le: 05/03/2009 16:31

Adidi a écrit:
Ne faudrait-il pas remplacer le "void imgScreenshot_OnClick()" en "void imgMaMaison_OnClick()"?

Oui, bien sur. Merci Adidi.
Desole pour la syntaxe, j'ai tape ca trop vite...

Cool

Répondre en citant  |   | Revenir en haut de page  | 
ubuntu
Posté le: 05/03/2009 16:32

Adidi a écrit:
Désolé si je viens comme un cheveux sur la soupe Rolling Eyes mais je regardais par curiosité et je trouve quand même bizarre:

ubuntu a écrit:
// Définition de l'évènement Onclick pour capturer le clic sur la photo
imgMaMaison.OnClick() = imgMaMaison_OnClick;


ubuntu a écrit:
void imgScreenshot_OnClick()
{
// Lancement d'un player video pour test applicatif
Process.Start("\\Program Files\\TCPMP\\player.exe");
}
}

Ne faudrait-il pas remplacer le "void imgScreenshot_OnClick()" en "void imgMaMaison_OnClick()"?



J'ai essayé .... mais cela bloque également. N'étant pas programmateur et ne connaissant que très peu ce langage ... j'ai préféré ne pas modifier cette commande quoique cela aurais dû être plus logique. Mais bon l'un et l'autre Home se plante.

Répondre en citant  |   | Revenir en haut de page  | 
Montecristoff
Posté le: 05/03/2009 17:31

J'ai vraiment ete trop vite en oubliant un truc important et en faisant des fautes dans la syntaxe. vraiment desole ubuntu !

Pour recapituler doucement... voila ce qu'il faut ajouter dans le code initial :

> dans la methode de chargement :

Code:
// Empecher les clics d'etre interpretes par les controles pouvant etre dessous
imgMaMaison.SetTabStop(true);
// Definition de l'evenement Onclick pour capturer le clic sur la photo
imgMaMaison.OnClick = imgMaMaison_OnClick;


> puis ajouter la methode declaree :
Code:

void imgScreenshot_OnClick()
{
// Lancement d'un player video pour test applicatif
Process.Start("\\Program Files\\TCPMP\\player.exe");
}


Voila qui doit etre plus correct !

PS : les programmateurs, c'est pour les machines a laver... on parle generalement de programmeurs Wink


Cool

Répondre en citant  |   | Revenir en haut de page  | 
ubuntu
Posté le: 05/03/2009 22:32

Montecristoff a écrit:


PS : les programmateurs, c'est pour les machines a laver... on parle generalement de programmeurs Wink


Cool


Oupd désolé ...... erreur de syntaxe Wink

Répondre en citant  |   | Revenir en haut de page  | 
ubuntu
Posté le: 05/03/2009 22:34

Pour ceux que cela intéresse, voilà le script complet :

Code:

class HomeSweetHomeApplet : Applet
{
   // Déclaration du titre
   Label lblTitre;

   // Déclaration de la photo
   Image imgMaMaison;

   // Déclaration de la légende
   Label lblLegende;

   // Préparation du contenu de l'écran
   void Load()
   {
      // Grands caractères, fonte de type Titre
      lblTitre.SetFont("Font.Title");
      // Libellé du titre
      lblTitre.SetText("Home Sweet Home");

      // Chargement de la photo et calibrage en fonction de la résolution de l'appareil
      if (Device.IsVGA())
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",280,180);
      }
      else
      {
         imgMaMaison.Surface.LoadFromFile("MaMaison.jpg",140,90);
      }

      // Empecher les clics d'etre interpretes par les controles pouvant etre dessous
      imgMaMaison.SetTabStop(true);
      // Definition de l'evenement Onclick pour capturer le clic sur la photo
      imgMaMaison.OnClick = imgMaMaison_OnClick;

      // Petite fonte pour la légende
      lblLegende.SetFont("Font.Small");
      // Libellé de la légende
      lblLegende.SetText("This is my house!");
      // La légende doit être centrée
      lblLegende.SetAlign("Center","Top");

   }
   void Activated()
   {
      // Premièrement, effacement de l'écran
      Controls.Clear();
   
      // Ajout de l'élément 'Titre' dans l'écran
      Controls.Add(lblTitre);

      // Positionnement du titre en haut et à gauche de l'écran
      // sans changer sa hauteur ni sa largeur
      lblTitre.SetBounds(0,0,GetWidth(),GetHeight());

      // Ajout de l'image sur l'écran
      Controls.Add(imgMaMaison);

      // Centrage de l'image en fonction de la résolution
      if (Device.IsVGA())
      {
            imgMaMaison.SetBounds(100,50);
      }
      else
      {
            imgMaMaison.SetBounds(50,25);
      }

      // Ajout de la légende sur l'écran
      Controls.Add(lblLegende);
   
      // Positionnement de la légende sous la photo, centrée
      if  (Device.IsVGA())
      {
         lblLegende.SetBounds(0,240,GetWidth(),GetHeight());
      }
      else
      {
         lblLegende.SetBounds(0,145,GetWidth(),GetHeight());
      }

   }

   
   void imgMaMaison_OnClick()
   {
         // Lancement d'un player vidéo pour test applicatif
         Process.Start("\\Program Files\\TCPMP\\player.exe");
   }
}



@Montecristoff

MERCI pour ton aide Very Happy

Répondre en citant  |   | Revenir en haut de page  | 
Poster un nouveau sujet
Répondre au sujet




Voir le sujet suivant
Voir le sujet précédent

Forum version classique