J'ai utilisé
pour basculer les deux images en superposées. Je voudrais savoir comment identifier, par programme, quelle image est devant (ou arrière)?Code:Image1->BringToFront() ou Image2->BringToFront();
Merci
Version imprimable
J'ai utilisé
pour basculer les deux images en superposées. Je voudrais savoir comment identifier, par programme, quelle image est devant (ou arrière)?Code:Image1->BringToFront() ou Image2->BringToFront();
Merci
L'ordre de superposition des contrôles dans une fenêtre (ordre Z) correspond à l'ordre (inversé ou non, je ne m'en souviens plus) des contrôles dans la propriétés Controls de la fenêtre.
Il te suffit donc d'examiner cette propriété pour avoir la réponse à ta question.
Un petit exemple pour mettre cela en évidence. Une fiche avec deux images. Un premier bouton qui utilise alternativement BringToFront() sur l'une ou l'autre image.
un deuxième bouton qui affiche l'orde de superposition comme suit:
Tu peux vérifier que ce bouton affiche "Image1;Image2;" si Image2 est au premier plan et "Image2;Image1;" dans le cas inverseCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 AnsiString ordre; for (int i=0;i<ControlCount;i++) { if (!lstrcmp(String(Controls[i]->ClassName()).c_str(), "TImage")) { TImage *img = (TImage *) Controls[i]; ordre += img->Name; ordre += ";"; } } ShowMessage(ordre.c_str());
Merci josse95
J'ai fait exactement comme tu as écrit: poser deux images sur un form et ton code marche!
Mais, si je pose les deux images dans un GroupBox, cela ne marche plus. J'ai l'impression que le Controls ne donne que l'ordre de composants directement installés sur le form.
Merci d'avance
Oui, ça marche, il suffit d'ajouter son parent TabSheet4:
Code:
1
2
3
4
5
6
7
8
9
10
11
12 AnsiString ordre; for (int i=0;i<TabSheet4->ControlCount;i++) { if (!lstrcmp(String(TabSheet4->Controls[i]->ClassName()).c_str(), "TImage")) { TImage *img = (TImage *) TabSheet4->Controls[i]; ordre += img->Name; ordre += ";"; } } ShowMessage(ordre.c_str());