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

Affichage des résultats du sondage: Comment trouver une idée d'application à développer en C++ ?

Votants
1. Vous ne pouvez pas participer à ce sondage.
  • Pour créer une application qui n'existe pas encore?

    1 100,00%
  • Pour créer une application proche de l'utilisateur.

    0 0%
Sondage à choix multiple
C++Builder Discussion :

Positionner le curseur de la souris sur la ligne souhaitée quand on clique sur le noeud d'un TTrewView


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Positionner le curseur de la souris sur la ligne souhaitée quand on clique sur le noeud d'un TTrewView
    Salut à tous !!!
    D'avance désolé pour ceux qui trouveront ma question déplacée. Mais bon comme je cherche la solution, pour bien maitriser le sujet, je préfère poser simplement ma question, puisque je suis convaincu que d'autres personnes ont la solution que je recherche.
    Mon problème est ceci :
    Je suis entrain de développer un logiciel d'étude biblique, et donc j'ai mis tous les livres dans un TTrewView (je mettrai une capture d'écran pour vous donner une idée). Ce que je souhaite faire maintenant, c'est que lorsque l'utilisateur clique sur un verset d'un livre quelconque (je précise qu'une bible est un ensemble de 66 livres), que le curseur de la souris se déplacer sur le verset du livre en question.
    Pour le moment, voici ce que moi je fais (je mets le bout de code que j'utilise dans une balise "code") :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //Ce premier bout de code appelle la deuxième fonction en bas
     
    // Je positionne le curseur
    	for (int i = 0; i < GrBPanelPages->ControlCount; i++) {
    		if (GrBPanelPages->Controls[i]->Name == "RDetailsGe") {
    			if (((TRichEdit *)(GrBPanelPages->Controls[i]))->CanFocus()) {
    				SetCurseurPosition(grandPere,
    				((TRichEdit *)(GrBPanelPages->Controls[i])), chapitre, verset);
    			}
    		}
    	}


    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
    37
    38
    39
    40
     
    // Voici la fonction qui est appelée par le bout de code ci-dessus 
     
    void __fastcall TFormBJesusChrist::SetCurseurPosition (
    				TTreeNode * grandPere, TControl * controlUse,
    							UnicodeString chapitre, int verset)
    {
    	// On donne le focus
    	((TRichEdit *)controlUse)->SetFocus();
    	// Pour changer la couleur
    	int numLigne = ((TRichEdit *)controlUse)->Lines->Count;
     
    	FProgressBar = new TFProgressBar (this, 0, numLigne);
    	FProgressBar->LabelOfUserToNormal->Visible = true;
    	FProgressBar->Show();
     
    	PutColorInTextOfBook (controlUse);
    	// on récupère le nom
    	int nbLines = 0;
    	if (m_ListeOfGrandPereEnCours != NULL &&
    				m_ListeOfGrandPereEnCours->Count > 1) {
    		nbLines = GetNbLinesOfListeOfGrandPeres (
    				m_ListeOfGrandPereEnCours, grandPere, chapitre);
    	}else {
    		nbLines = GetNbLinesOfListeOfChapitres (
    					m_ListeOfChapitresEnCours, chapitre);
    	}
    	// Pour positionner le curseur
    	int correction = 0, pas = 0;
    	if (fmod (nbLines, 2) == 0) {
    		pas = nbLines + nbLines / 2;
    	}else {
    		pas = nbLines + nbLines / 3;
    	}
    	correction = (pas < nbLines) ? pas : nbLines;
    	((TRichEdit *)controlUse)->SelStart =
    	((TRichEdit *)controlUse)->Perform (EM_LINEINDEX,
    					correction + nbLines + verset - 1, 0);
    	FProgressBar->Close();
    }
    Cela fonctionne, mais il ne positionne pas le curseur sur la ligne exacte que je désire. Et pour corriger cela, j'ai fait des gimnastiques, en créant des pas et des variables pour corriger le problème de positionnement exact sur la ligne désirée, mais rien n'est fait.
    Alors si quelqu'un a compris mon problème et peut m'aider, je suis preneur. Je crois que tout est possible à celui qui croit, donc je crois que je trouverai la solution avec vous. Merci d'avance pour vos réponses. S'il y a des points pas trop clairs, écrivez-moi, je vous répondrai.
    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Bonjour,

    Je pense qu'il est difficile de répondre sans avoir une capture d'écran du programme lancé et une autre de la fenêtre en édition dans C++Builder.

    La référence de position est parfois relative à un autre composant qui peut lui-même avoir une position relative.
    Il faut donc voir exactement ce que vous essayez de faire pour trouver le bon calcul.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Envoi de la capture d'écran
    Citation Envoyé par gandf Voir le message
    Bonjour,

    Je pense qu'il est difficile de répondre sans avoir une capture d'écran du programme lancé et une autre de la fenêtre en édition dans C++Builder.

    La référence de position est parfois relative à un autre composant qui peut lui-même avoir une position relative.
    Il faut donc voir exactement ce que vous essayez de faire pour trouver le bon calcul.


    Merci Gandf pour ta réponse. Je viens de faire une capture d'écran du programme que j'ai laissé sur mon pc. J'ai mis en surligne jaune l'emplacement de la souris après exécution (ligne EX1V7), et j'ai fait une surligne rouge sur le numéro de la ligne EX1V12 qui devait être en haut (car juste sur le coté gauche, dans le scrollbar, la ligne sélectionnée est en gras et c'est "Verset 12"), à la place de la ligne EX1V7.Nom : Capture1.PNG
Affichages : 179
Taille : 93,2 Ko

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Je pense qu'il faut ajouter la hauteur (Height) du TMemo contenant le résumé à la position de hauteur du curseur.
    Si c'est proche du résultat mais pas exact, c'est qu'il y a la hauteur d'un autre composant à ajouter (scrollbox, ...).
    Ça dépend de la hiérarchie de positionnement des composants.

    Enfin, si j'ai bien compris, c'est le curseur de la souris que tu peux positionner, pas l'ascenseur du Memo ou le curseur du clavier ?

Discussions similaires

  1. Positionner le curseur de la souris
    Par Nuclear88 dans le forum Débuter
    Réponses: 1
    Dernier message: 25/04/2013, 18h02
  2. Réponses: 3
    Dernier message: 10/10/2011, 17h13
  3. [PrestaShop] Template prestashop tableau sur une ligne comment le faire passer sur plusieurs lignes
    Par ptitepo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/12/2010, 02h47
  4. Positionner le curseur de la souris
    Par Ggamer dans le forum wxPython
    Réponses: 1
    Dernier message: 20/01/2008, 18h38
  5. Insérer un code quand on clique sur un smiles
    Par Blade dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/12/2004, 01h10

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