Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
ubuntu Utilisateur néophyte
Inscrit le: 21 Jan 2009 Messages: 14
|
#1 Posté le: 27/02/2009 10:48 Sujet du message: ajout de l'évenement onclick dans une applet ? |
|
|
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());
}
}
}
|
|
|
Revenir en haut de page |
|
|
Montecristoff Visiteur en Or
Inscrit le: 30 Oct 2007 Messages: 2975
|
#2 Posté le: 04/03/2009 19:28 Sujet du message: |
|
|
Bonsoir ubuntu,
Désolé pour le léger retard
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.
_________________
|
|
Revenir en haut de page |
|
|
ubuntu Utilisateur néophyte
Inscrit le: 21 Jan 2009 Messages: 14
|
#3 Posté le: 05/03/2009 12:22 Sujet du message: |
|
|
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");
}
}
|
|
|
Revenir en haut de page |
|
|
Montecristoff Visiteur en Or
Inscrit le: 30 Oct 2007 Messages: 2975
|
#4 Posté le: 05/03/2009 13:39 Sujet du message: |
|
|
ubuntu,
Tu as oublie de declarer l'evenement OnClick de l'image.
Regarde l'exemple que j'ai donne juste au dessus.
_________________
|
|
Revenir en haut de page |
|
|
ubuntu Utilisateur néophyte
Inscrit le: 21 Jan 2009 Messages: 14
|
#5 Posté le: 05/03/2009 15:48 Sujet du message: Re: |
|
|
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.
|
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 ...
|
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
Remarque si je recopie ton script tel quel cela plante également ? |
|
Revenir en haut de page |
|
|
Adidi Utilisateur néophyte
Inscrit le: 10 Oct 2008 Messages: 43
|
#6 Posté le: 05/03/2009 16:01 Sujet du message: |
|
|
Désolé si je viens comme un cheveux sur la soupe 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()"? |
|
Revenir en haut de page |
|
|
Montecristoff Visiteur en Or
Inscrit le: 30 Oct 2007 Messages: 2975
|
#7 Posté le: 05/03/2009 16:31 Sujet du message: Re: |
|
|
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...
_________________
|
|
Revenir en haut de page |
|
|
ubuntu Utilisateur néophyte
Inscrit le: 21 Jan 2009 Messages: 14
|
#8 Posté le: 05/03/2009 16:32 Sujet du message: Re: |
|
|
Adidi a écrit: | Désolé si je viens comme un cheveux sur la soupe 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. |
|
Revenir en haut de page |
|
|
Montecristoff Visiteur en Or
Inscrit le: 30 Oct 2007 Messages: 2975
|
#9 Posté le: 05/03/2009 17:31 Sujet du message: |
|
|
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
_________________
|
|
Revenir en haut de page |
|
|
ubuntu Utilisateur néophyte
Inscrit le: 21 Jan 2009 Messages: 14
|
#10 Posté le: 05/03/2009 22:32 Sujet du message: Re: |
|
|
Montecristoff a écrit: |
PS : les programmateurs, c'est pour les machines a laver... on parle generalement de programmeurs
|
Oupd désolé ...... erreur de syntaxe |
|
Revenir en haut de page |
|
|
ubuntu Utilisateur néophyte
Inscrit le: 21 Jan 2009 Messages: 14
|
#11 Posté le: 05/03/2009 22:34 Sujet du message: |
|
|
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 |
|
Revenir en haut de page |
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|
|