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 :

quelques details graphique d'une fenetre.


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut quelques details graphique d'une fenetre.
    bonjour tout le monde,

    est ce quelqu'un aurais une idée comment je peut créer un raccourcis vers une fonction.
    je m'explique :

    par exemple je veut insérer un raccourci ( ctrl+ une touche) pour une fonction donnée.

    dans la barre de mainmenu je veut insérer des fonctionnalité a chaque case. par exemple en appuyant sur la touche quitter je ferme la fenetre en question.

    et en dernier lieux je veut savoir comment je créer des fenetres secondaire dans ma fenetre principale ou encore des onglet.

    merci a tous.

  2. #2
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut
    Pour la fonction Quitter c'est super simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TA::Quitter1Click(TObject *Sender)
    {
     Close();
    }
    Pour les onglet:

    Dans l'onglet win32 des palettes des composant, tu trouvera un PageControl, rajoute le a ta form, puis clique droit dessus, puis tu clique sur Nouvelle Page, et tu rajoute tes onglet...

  3. #3
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Salut,
    je te conseille d'aller lire quelques tutos pour comprendre les base du fonctionnement de BCB : http://cpp.developpez.com/cours/?page=borland

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    merci pour votre reponse,
    c'est bien de lire et de s'autoformer, mais pour ma part, vue le grand nombre de tâche a faire durant mon projet de fin d'étude avec une contrainte de temps très exigeante, je combine le fait de lecture et le fait de demande d'aide des gents dont le savoir faire peut me faire gagner même quelque heures de travail.

    il me reste su le point de vue de l'interface le problème de créer des raccourcis clavier ( ctrl+ touche = fonction) et en dernier lieux sur les parties de la mainmenu l'association de certains événements avec certaines touches.

    merci pour votre aide qui me sera du plus grande aide.

  5. #5
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Pour les raccourcies clavier, pour chaque TItemMenu tu as la propriété ShortCut qui définit la combinaison de touche raccourcie

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    merci pour votre reponse,


    il me reste dans ce sujet deux points que j'essaye de finir,

    le premier c'est d'associer aux Items de la barre d'outils du mainmenu des évènements exemple pour le composant quitter l'événement de la fermeture de la fenêtre ou encore la fonction de copier coller pour les composants copier coller, sachant que j'ai mis dans la fenêtre un composant TMainMenu et que j'ai creer les sous composant s que je désire et en plus j'ai voulu associer des événements près requis dans un composant ActionManeger a ces composant sans succès.

    la seconde c'est je veut pour un composant Label, je veut lorsque le curseur est sur ce dernier et quand j'apurerais sur la touche de F1, un message s'affiche ( ce message je veut le défier moi même).

    sachant que je cherche encore une solution sur des tutoriels, je serais bien ravis d'avoir une suggestion qui me permettrais de gagner un peut de temps merci.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    je vous propose de voir l'idee sur laquelle je me focalise, je creer une fonction qui permet d'identifier une frappe de clavier en particulier de la touche F1,
    puis je lui associe un message n'importe le quel.

    une fois cette fonction effectuée, je me place sur les evenements de mon composant voulu, et j'associe la fonction precedente a la fonction OnMouseMouve du composant.

    y a t'il une personne qui peut m'aider là dessus.merci.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Par exemple, déclarer en global :

    Pour la form je donne une OnMouseMove qui sera affectée à tous les autres composants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
    Target = (TControl*)Sender;
    }
    A partir de là, l'objet sous le curseur est mémorisé dans Target.

    Je fixe donc la propriété KeyPreview de la form principale à true et j'affecte une OnKeyDown à la form :

    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
     
    void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    if(Key == VK_F1)
        {
        Key = 0;
        if(Target != this) // ou sans ce test si on traite aussi Form1
            {
            //Pour faire écho ... pour tester...
            ShowMessage(Target->Name);
     
            // Donc du code qui va se résumer à faire :
            if(Target->ClassNameIs("TPanel"))
                {
                ((TPanel*)Target)->OnMouseMove = LaMethode; 
                return;
                }
            if(Target->ClassNameIs("TLabel"))
                {
                ((TLabel*)Target)->OnMouseMove = LaMethode; 
                return;
                }
            //...
            //...
            }
        }
    }
    On peut déclarer autant de méthodes que l'on veut dans la classe de TForm, en public.
    Pour les événementielles, il suffit de se baser sur le prototype attendu.
    Par exemple, si LaMethode est une OnMouseMove :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public :
    void __fastcall LaMethode(TObject *Sender, TShiftState Shift, int X, int Y);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void __fastcall TForm1::LaMethode(TObject *Sender, TShiftState Shift, 
                    int X, int Y);
    {
    //Pour pouvoir reprogrammer :
    Target = (TControl*)Sender;
     
    //le code de la méthode
    //...
    //...
    }
    Il faudra donc toujours raisonner par rapport au Sender qui est l'objet concerné par l'événement et non TForm1 qui ne fait que détenir la méthode (ce qui n'empèche pas que Form1 puisse être éventuellement le Sender...) !

    Comme je l'ai dit, j'utilise BCB3 Pro donc... je pense qu'il y a peut-être un meilleur code avec les versions ultérieures de BCB.

    Ca risque d'être assez compliqué (lourd) si on traite toutes les événementielles...

    A plus !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    bonjour a tous,

    en ce qui concerne le code que vous m'avez donner, " la honte", malgrais que je l'ai integrer dans mon code initiale sans pour autant qu'il me genere des erreurs, j'ai pas pu le fair tourner car il ne me procure pas de reponse,

    pouvez vous s'il vous plait me donner plus ample explication ou encore et sans paraitre tros exigent, un code,qui tourne, permettant d'avoir quand le curseur et sur un objet et en tapant sur la touche F1 du clavier un message.
    merci pour votre aide qui me permettra de finir mon projet.......

    en ce qui concerne les evenements liées au mainmenu j'ai pus en fin resoudre mon probleme, il faut faire comme suit :

    1- mettre dans la fentre un composant mainmenu
    2- construire cette barre d'outil selon la forme que l'on souhaite.
    3-deposer un action manger
    4-inserer des evenements dans ce action maneger
    5-double clic sur le composant main menu, cliquer sur la fonction voulue, dans l'evennemnt Onclic de cette fonction on met l'evenement souhaité.
    merci.

  10. #10
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Le problème est que maintenant je ne parviens plus à situer la difficulté !

    Soit tu débutes avec BCB, et il s'agit donc pour toi d'affecter des événementielles aux objets (là on se situe sur le plan statique, celui de la conception via d'interface de BCB).
    C'est l'impression que laisse entrevoir ta dernière intervention.
    Donc le conseil c'est effectivement de faire un tour sur les tutoriels !
    Mais si tu sais faire pour un TMenuItem, alors le reste ne devrait plus poser aucun problème puisque tu viens de découvrir (sans t'en rendre compte) que BCB est un RAD !
    Donc l'inspecteur d'objet est à utiliser à outrance !!!

    Soit il s'agit de les affecter différemment... comme si tu réalisais un BCB-like, donc d'une manière générale comme si tu cherchais à affecter ces événementielles dynamiquement (non plus via BCB, mais via l'exécutable que tu développes) !
    C'était l'impression que j'avais... sans doute à tord !

    Dans l’interface de BCB, la touche F1 ne sert qu’à lancer l’aide pour un composant que l’on a sélectionné sur la fiche (y compris ses propriétés et ses événementielles depuis l’inspecteur d’objets) !

    Sommes nous dans la phase de conception de ton programme (dans l'interface de BCB) ou dans le programme lui-même (l'exécutable du projet) ?

    Parce que des solutions qui ne correspondent pas à ton problème.... j'en ai des tonnes !

    A plus !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    pour repondre a votre question,

    oui je suis debutant avec BCB,

    mais ce que je veut faire c'est avec le code que je veut creer, faire que quand on a le curseur sur un objet et puis si on tape sur F1 on affiche un message.
    donc je veut que l'affichage se produit de mon executable ( votre premiere intuition etait la bonne).

    que dois je faire.

    merci pour votre patience!.

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

Discussions similaires

  1. créer une zone graphique dans une fenetre
    Par jlg75 dans le forum Windows
    Réponses: 12
    Dernier message: 13/01/2012, 00h04
  2. Mettre un JPG dans une fenetre graphique?
    Par scraven dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/04/2008, 01h31
  3. [Windev][fenetre] comment appeler une fenetre detail
    Par colfire_dev dans le forum WinDev
    Réponses: 3
    Dernier message: 13/02/2008, 14h50
  4. Interface graphique (passage d'une fenetre à une autre)
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 07/05/2007, 17h57
  5. [XSLT] comment detailler dans une fenetre popup
    Par Uzumaki Yamato dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 04/10/2006, 18h47

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