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

C++Builder Discussion :

Page personnalisée par l'utilisateur dans l'application


Sujet :

C++Builder

  1. #1
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut Page personnalisée par l'utilisateur dans l'application
    Bonjour,

    Quel est le moyen le plus simple pour créer une page entièrement personnalisable par l'utilisateur dans mon application?
    Il faudrait qu'ils sachent ajouter des champs de texte tels que nom, prénom, adresse... ainsi que des scrollboxs et des images.
    Ce qui serait génial c'est de pouvoir construire un modèle où l'on puisse déplacer ces différents champs.

    Que me conseillez-vous de faire ?
    Merci d'avance!

    Cordialement,
    Rodrigue
    Rodrigue

  2. #2
    Membre actif

    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 44
    Points : 297
    Points
    297
    Par défaut
    2 suggestions :
    - créer des composants de manière dynamique en lisant des infos dans un fichier de type "dat", "cfg" ou "ini" éditable par l'utilisateur
    - créer des compsants de manière dynamique et interactive par l'intermédiaire de boîtes de dialogues pour la saisie des différents paramètres

    il y a sans doute d'autres options. le tout à étudier en fonction du but recherché. par exemple, s'il s'agit de créer une page une fois pour toute, un fichier de configuration est sans doute à considérer surtout si les paramètres sont saisis lors de l'installation.

    cryptonyx

  3. #3
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Merci pour ta réponse.

    J'aimerais que la disposition des différents composants puissent être réglées par l'utilisateur via la souris. Je ne vois pas bien comment faire, j'ai essayé le code suivant mais le fait que je clique sur le bouton, l'évènement onmousemove n'a plus accès au canvas de la form donc la position du bouton ne se met pas à jour :
    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
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
    {
       Pressed = false;
    }
    //---------------------------------------------------------------------------
     
     
    void __fastcall TForm1::Button1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       Pressed = true;
    }
    //---------------------------------------------------------------------------
     
     
    void __fastcall TForm1::Button1MouseUp(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       Pressed = false;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
       Label1->Caption = (AnsiString)X;
       Label2->Caption = (AnsiString)Y;
     
       if (Pressed && Shift.Contains(ssLeft)) // vérifie que le bouton est enfoncé
       {
          Button1->Left = X;
          Button1->Top = Y;
       }
    }
    //---------------------------------------------------------------------------
    Si tu as une idée pour contrer ce problème ...

    Cordialement,
    Rodrigue
    Rodrigue

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Il faut créer un composant que tu viendras superposer au composant à déplacer.
    Ainsi il conserve le déplacement de la souris.
    A ta disposition
    Christophe MERLIER

  5. #5
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Citation Envoyé par Rodrigue
    J'aimerais que la disposition des différents composants puissent être réglées par l'utilisateur via la souris.
    Je vous donne un début de solution pour déplacer un composant avec la souris. Dans la classe principale vous déclarez deux variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bool Souris;
    TControl* Composant;
    La première dit si un objet a été double-cliqué, le deuxième l'adresse du composant concerné. Au constructeur de la classe principale on initialise la variable booléenne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    __fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
    {
    Souris=false;
    }
    Quand on double-clique sur l'objet, on renseigne les variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Edit1DblClick(TObject *Sender)
    {
    Souris=true;
    Composant=(TControl*)Sender;
    }
    Il faudra réorienter tous les objets concernés par un double clic ici pour éviter d'avoir à dupliquer les fonctions.

    Mouvement à l'intérieur de l'objet même (idem il faudra centraliser ici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Edit1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    if(Souris) FormMouseMove(Sender,Shift,X+Composant->Left,Y+Composant->Top);
    }
    C'est le MouseMove de la forme principale qui prend la main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    if(Souris)
       {
       if(Shift.Contains(ssLeft))
          {
          Composant->Left=X;
          Composant->Top=Y;
          }
       else Souris=false;
       }
    }
    Il y a peut-être plus simple. Toujours est-il que si on utilise les propriétés du composant pour que son déplacement soit possible, il se transforme en fenêtre, j'ai pensé que vous ne cherchiez pas ce résultat mais simplement à déplacer le composant.

    Quand on double-clique sur le composant, il se déplace aussi longtemps que le bouton gauche est appuyé. À vous d'adapter ce début pour plusieurs composants.

    À bientôt
    Gilles

  6. #6
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Bonjour,

    Génial , ça fonctionne !
    Je vais essayer d'attribuer le même gestionnaire d'évènement à tous les composants de la même classe...

    Merci beaucoup !
    Cordialement,
    Rodrigue
    Rodrigue

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2009, 22h55
  2. [Conception] Personnalisation page WEB par les utilisateurs ?!
    Par coboy dans le forum Webdesign & Ergonomie
    Réponses: 1
    Dernier message: 23/05/2008, 16h20
  3. connaitre le temps passé par l'utilisateur dans une page
    Par mustapha085 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/03/2008, 18h01
  4. Récuperer la page demandée par l'utilisateur
    Par theskel dans le forum Apache
    Réponses: 1
    Dernier message: 11/01/2007, 19h42
  5. Réponses: 5
    Dernier message: 27/09/2005, 17h25

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