Bonjour à toutes et à tous,
je viens vers vous pour avoir de l'aide.
Je voudrais coder une application (Embarcadero XE3 C++) qui me permettrait de créer des documents composites: images + texte.
Les problèmes que je rencontre sont:
enregistrer les données texte+images dans un fichier
insérer des images (bmp) et pouvoir les déplacer indépendamment et quand je le veux; le nombre d'images est inconnu au
moment ou l'utilisateur lance l'application .
Je vous soumet le code qui me sert de test.
Les images statiques ne posent pas de problèmes graves.
Les images insérées dynamiquement sont déplaçables tant qu'une autre image n'a pas été insérée.
Ce problème vient peut être du fait que toutes les images insérées dynamiquement portent le même nom....
Le fonctionnement que je voudrais obtenir c'est: cliquer sur l'image que je veux déplacer et bouger la souris pour la déplacer
(jusqu'à relâchement du bouton de la souris).
Les pistes que j'ai explorées sans succès sont : ActiveControl et this.
Une des questions que je me pose est: peut on obtenir ce fonctionnement en partant d'un RichEdit?
Je pense que ma façon de coder vas vous paraitre naïve.
Merci de me consacrer un peu de votre temps et de partager vos connaissances.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int pt_clique_x; int pt_clique_y; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (GetAsyncKeyState(VK_LBUTTON)) //while (GetAsyncKeyState(VK_LBUTTON)) { Image2->Top=Image2->Top+Y-pt_clique_y; Image2->Left=Image2->Left+X-pt_clique_x; } if (GetAsyncKeyState(VK_RBUTTON) && GetAsyncKeyState(VK_MBUTTON)) { if (pt_clique_x<X || pt_clique_y<Y) { Image2->Height = Image2->Height+(Y-pt_clique_y); Image2->Width = Image2->Width+(X-pt_clique_x); } else { Image2->Height = Y; //oui pour retrecir Image2->Width = X; //oui pour retrecir } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { pt_clique_x=X; //variable globale qui memorise la valeur en X du pt cliqué pt_clique_y=Y; //variable globale qui memorise la valeur en X du pt cliqué } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { //AnsiString nom="image_"; Image3 = new TImage(this); //Image3->Name=nom; Image3->Left = 100; Image3->Top = 100; Image3->Parent = Form1; Image3->Picture->LoadFromFile("D:\\Bibliothèques\\Mes images\\Capture.bmp"); Image3->OnMouseMove = Image3MouseMove; //delete Image3; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image3MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (GetAsyncKeyState(VK_LBUTTON)) //while (GetAsyncKeyState(VK_LBUTTON)) { Image3->Top=Image3->Top+Y-pt_clique_y; Image3->Left=Image3->Left+X-pt_clique_x; } }
Partager