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

Flex Discussion :

Flex- dessiner un rectangle


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut Flex- dessiner un rectangle
    Bonjour,
    j'ai honte de poster cela mais je n'arrive pas a dessiner un rectangle :
    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
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
        layout="absolute" initialize="initNew()" 
        width="320" height="370">
     
    <mx:Script>
    	<![CDATA[
    	import flash.display.Graphics;
    		private function initNew () : void 
    		{
    var rectangleUni:Shape = new Shape();// Instance de l'objet d'affichage
    rectangleUni.graphics.beginFill(0x86B1FB);// Le rectangle sera rempli de bleu
    rectangleUni.graphics.drawRect(0, 0, 100, 30);// dessin du rectangle avec la méthode drawRect(x, y, width, height)
    // Positionnement et affichage du rectangle dans la séquence
    rectangleUni.x = rectangleUni.y = 50;
    addChild(rectangleUni);
    }
     
    	]]>
    </mx:Script>
     
    </mx:Application>
    Il me marque une erreur a la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TypeError: Error #1034: Echec de la contrainte de type*: conversion de flash.display::Shape@3c0d4c1 en mx.core.IUIComponent impossible.
     
    merci de votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    addChild()
    Note: While the child argument to the method is specified as of type DisplayObject, the argument must implement the IUIComponent interface to be added as a child of a container. All Flex components implement this interface.
    Shape n'implémente pas IUIComponent, ce n'est pas un composant Flex.

    Sinon tu peux simplement utiliser la propriété graphics de ton container (Application ici).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    ok
    en faites, je vous explique mon problème :

    J'ai un éditeur de texte (RichTextEditor) qui permet à l'utilisateur de rentrer son texte. Une fois validé, le texte écrit est envoyé dans ue texterea créé a cette effet.
    J'ai mis un événement FOCUS IN sur la textearea. Je voudrais donc que lorsque l'utilisateur a sélectionné la textarea, qu'un rectangle de sélection apparaisse sur le texte pour montrer à l'utilisateur que la textarea a bien été sélectionné.
    Rectangle qui disparaitrait une fois le focus enlevé.

    Le problème c'est que je ne sais pas comment faire pour ajouter ce rectangle pour montrer que mon texte a été sélectionné!!

    Quelqu'un a une idée?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Désolé mais j'ai rien compris !!!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    En faite, j'ai une textarea. Dedans j'y insère du texte d'une manière particulière mais ma textarea n'est pas éditable.
    Je voudrais qu'il apparaise un rectangle autour de ma textarea quand l'utilisateur clic sur la textarea

    ???

  6. #6
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Salut,

    Voici ce que tu cherches :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    taTextArea.drawFocus(true);
    Salut

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Donc en réalité tu râles contre le fait qu'Adobe ait décidé de ne pas afficher le rectangle du focus lorsqu'un TextArea n'est pas éditable.
    A noter que si on utilise la tabulation pour se positionner sur un TextArea non éditable le rectangle de focus est toujours affiché, par contre lorsque la sélection est faite avec la souris il ne l'est pas !

    ça m'agace aussi, rassure toi...

    La solution est de créer une classe dérivée de TextArea et de modifier juste le test sur editable dans focusInHandler :

    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
    package myPackage
    {
    	import mx.controls.TextArea;
    	import flash.events.FocusEvent;
    	import mx.managers.IFocusManager;
     
    	public class MyTextArea extends TextArea
    	{
    		public function MyTextArea()
    		{
    			super();
    			editable = false ;
    		}
     
    	    override protected function focusInHandler(event:FocusEvent):void
    	    {
    	        var fm:IFocusManager = focusManager;
     
    	        if (fm)  // suppression du test sur editable
    	            fm.showFocusIndicator = true;
     
    	        super.focusInHandler(event);
    	    }
     
    	}
    }

  8. #8
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Ha oui, bien vu jylax j'avais pas capté que c'était lors du click qu'il voulait le focus
    Ben pour cela aussi il y a une solution simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:TextArea id="lol" editable="false" click="lol.drawFocus(true)" />
    Voilà

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    En faites, pour l'instant pour ma textarea j'ai enlever les bords et j'ai mis un fond transparents.
    Je veux juste ajouter un rectangle avec un fond gris clair par exemple,par dessus le texte de ma tetxarea, et cela sera moi qui définirait la taille de ce rectangle.

    Comme ici :


    Mon rectangle ne serait alors ici pas le rectangle de la textarea!!

    Vous avez compris ou pas?

    Car ToniConti, avec ta méthode peut on définir la taille du rectangle ou est ce directement la taille de la textarea??

    merci de votre aide

  10. #10
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Ha ok donc c'est bel et bien un rectangle que tu veux dessiner !
    (comme c'est mis dans le titre du topic d'ailleurs )

    Ben là c'est une autre paire de manche
    Pour répondre à ta question, ma méthode ne sert qu'à montrer que le focus est sur la TextArea même si celle-ci n'est pas éditable. Donc ce rectangle aura toujours une taille égale à celle de la TextArea.

    Ce que tu voudrais faire c'est quelque chose qui n'est pas prévu à la base.
    Donc avant que tu te lances là dedans, j'ai envie de te demander si c'est vraiment indispensable et s'il n'existerait pas déjà un composant existant qui te conviendrait

    Je sais pas si tu as déjà été voir du coté de Flex Explorer (http://examples.adobe.com/flex3/comp.../explorer.html)
    mais en général ça donne des idées.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    En faites, ma première idée était bien d'afficher le rectangle de ma textarea mais le problème c'est que suivant le texte entré par l'utilisateur, la taille ne correspond plus.

    Donc j'ai cherché sur plusieurs forum pour savoir comment régler automatiquement la largeur et la hauteur de ma Textarea en fonction du texte à l'intérieur mais je n'ai rien trouvé la dessus.

    A tu une idée?

  12. #12
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    J'ai un truc qui ressemble dangereusement à une solution si tu veux !

    L'idée est d'utiliser un composant Text au lieu d'un TextArea. Il a l'avantage de d'adapter au texte qu'on lui envoie contrairement à l'autre.

    Il reste un ou deux truc à améliorer par contre. Pour l'instant pour chaque retour à la ligne dans ton TextArea, le composant Text verra sa hauteur augmenter de quoi acceuillir une ligne suplémentaire. C'est déjà pas mal !Par contre pour les retour à la ligne automatique (sans appuyer sur la touche enter) là ca ne fonctionne pas.

    De plus tu peux également agir sur le .drawFocus(true) qui aura pour effet de faire apparaitre un beau rectangle bleuté autour du texte ! Et dans ce cas, le rectangle sera ajusté à la saisie de l'utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <mx:Button label="Valider" click="maText.text=maTextArea.text;maText.drawFocus(true)" />
    Je t'ai mis ça en une ligne pour faire simple mais il vaut mieux faire cela plus proprement.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Ok et la largeur du composant texte, elle peut être géré automatiquement ou pas? Car moi c'est surtout la largeur qui me pose problème

    merci de ta réponse

  14. #14
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Heu non mais par contre j'ai trouvé de quoi t'orienter : 'fin une solution à tester quoi.
    http://www.flexx.fr/forum/viewtopic....70089a3cfff093

    EDIT : hum... j'ai testé mais c'est peu concluant... à vrai dire cela ne change rien. Je pense qu'à moins que quelqu'un aie une autre solution, tu vas être obligé de travailler sur le texte avant de l'envoyer à ton composant Text.

    Par travailler j'entend par exemple compter le nombre de caractère entre chaque \n et insérer manuellement les \n après le nombre de caractère qui correspondra à la longueur souhaitée. Et après tu l'envoie à ton composant Text et là il s'ajustera tout seul au texte.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    NOn deja text cela ne me convient pas.

    Et pourquoi le Textfield, c'est quoi la solution car j'ai pas compris!!!

  16. #16
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Et pourquoi un Text ne conviendrait pas ? Vu l'utilisation que tu nous as dit que t'allais en faire, il conviendrait mieux qu'un TextArea !

    Tu veux faire un chat en Flex peut être ?

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    Non en faite ce que je fait est simple. J'ai une interface, si tu l'utilisateur click sur le bouton "Texte" une Pop up s'ouvre avec un éditeur de texte (RichTextEditor). A chaque ouverture de cette Pop up, une textarea est cré. Quand l'utilisateur valide son choix, le texte de l'éditeur de texte est ajouté dans la textearea.

    Ensuite, l'utilisateur a la possibilité de déplacer cette textarea (fonction drag and drop).

    Moi ce que je voudrais maintenant, c'est lorsqu'il click sur la texarea, un rectangle de sélection apparaisse autour du TEXTE de la textarea avec deux petit icône : supprimer et modifier.


    Voila mais pour le rectangle de sélection et les petits icônes je ne sais plus faire car en premier lieu, je ne sais pas comment gérer la largeur et la hauteur du TEXTE écrit par l'utilisateur???

    Tu a compris? Si oui tu a des pistes?
    merci

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Non en faite ce que je fait est simple
    C'est tellement simple que pas grand monde comprend ce que tu essais de nous dire !!

    Malgré beaucoup de bonne volonté je n'ai toujours pas bien saisi... On a l'impression que tu nous parles de choses différentes. Qu'est-ce que le drag/drop vient faire...

    Il faudrait isoler tes fonctions et tes problèmes et les poser un par un.

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 134
    Par défaut
    J'ai dit que le but de mon application est simple mais pas que le codage de celle est simple!!!!


    J'ai juste un problème la :

    Moi ce que je voudrais maintenant, c'est lorsqu'il click sur la texarea, un rectangle de sélection apparaisse autour du TEXTE de la textarea avec deux petit icône : supprimer et modifier.


    Voila mais pour le rectangle de sélection et les petits icônes je ne sais plus faire car en premier lieu, je ne sais pas comment gérer la largeur et la hauteur du TEXTE écrit par l'utilisateur???
    Tu a compris ou pas?

  20. #20
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Justement c'est le but qu'on ne comprend pas !!!


    Enfin bon je vais tenter de t'aider.

    Tu devrais essayer ceci :
    container VBox
    --objet Text aligné en largeur à 100%, hauteur non définie (elle s'adaptera au texte)
    --container HBox width="100%" alignement horizontal centré
    ----objet Image modifier
    ----objet Image supprimer

    Avec ça tu devrais y voir un peu plus clair...

Discussions similaires

  1. [C#][Direct3D] Comment dessiner un rectangle
    Par FraktaL dans le forum DirectX
    Réponses: 3
    Dernier message: 26/10/2005, 00h29
  2. Réponses: 14
    Dernier message: 13/10/2005, 15h00
  3. Dessiner un rectangle sur une forme
    Par Neo41 dans le forum MFC
    Réponses: 6
    Dernier message: 13/08/2005, 01h08
  4. [VB.NET] Dessiner plusieurs rectangles.
    Par Emcy dans le forum Windows Forms
    Réponses: 9
    Dernier message: 23/03/2005, 16h57
  5. Dessiner un rectangle avec bords et texte ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 17h17

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