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); } } }
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.
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(); }
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.
Partager