Bonjour, à tous !
Je me retrouve devant un problème, disons... de présentation d'un programme.
J'ai un tableau 9x9 comprenant des chiffres entre -9 et 9. Dans ce tableau, j'ai un "pion" représenté par un TRadioButton qui doit pouvoir se déplacer. Lorsque je clique sur une case, je veux que mon TRadioButton aille sur cette case. Or je n'ai pas envie de créer 81 procédures qui pointent vers les 81 cases qui me permettront de déplacer ce "pion".
J'ai déjà repéré la méthode de la calculatrice avec le Sender as TButton mais je n'ai pas très bien compris le principe parce que, lorsque j'utilise cette méthode, rien ne bouge.
Voici mon programme avec, comme exemple de procédure, le déplacement vers le Button2.
Ma question se porte sur la partie en gras.
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150 unit Nouvelle_partie; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; Button17: TButton; Button18: TButton; Button19: TButton; Button20: TButton; Button21: TButton; Button22: TButton; Button23: TButton; Button24: TButton; Button25: TButton; Button26: TButton; Button27: TButton; Button28: TButton; Button29: TButton; Button30: TButton; Button31: TButton; Button32: TButton; Button33: TButton; Button34: TButton; Button35: TButton; Button36: TButton; Button37: TButton; Button38: TButton; Button39: TButton; Button40: TButton; Button41: TButton; Button42: TButton; Button43: TButton; Button44: TButton; Button45: TButton; Button46: TButton; Button47: TButton; Button48: TButton; Button49: TButton; Button50: TButton; Button51: TButton; Button52: TButton; Button53: TButton; Button54: TButton; Button55: TButton; Button56: TButton; Button57: TButton; Button58: TButton; Button59: TButton; Button60: TButton; Button61: TButton; Button62: TButton; Button63: TButton; Button64: TButton; Button65: TButton; Button66: TButton; Button67: TButton; Button68: TButton; Button69: TButton; Button70: TButton; Button71: TButton; Button72: TButton; Button73: TButton; Button74: TButton; Button75: TButton; Button76: TButton; Button77: TButton; Button78: TButton; Button79: TButton; Button80: TButton; Button81: TButton; Button82: TButton; pion: TRadioButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); type tableau = array [1..9, 1..9] of integer; var i : integer; begin randomize;//On définit le plateau de jeu For i := 2 to 82 do Begin TButton(Self.FindComponent('Button'+IntToStr(i))).Caption := IntToStr(random (19)-9); TButton(Self.FindComponent('Button'+IntToStr(i))).Visible := True; end; //On définit aléatoirement la position du pion pion.Caption := ''; pion.Width := 17; pion.Height := 17; pion.Top := 76 + 24*random(9); pion.Left := 285 + 24*random(9); pion.Visible := True; pion.Parent := Form1; pion.Checked := True; For i := 2 to 82 do begin if (TButton(Self.FindComponent('Button'+IntToStr(i))).Top = pion.Top-4) and (TButton(Self.FindComponent('Button'+IntToStr(i))).Left = pion.Left-5) then TButton(Self.FindComponent('Button'+IntToStr(i))).Caption := ''; end; end; procedure TForm1.Button2Click(Sender: TObject); begin pion.Top:=Button2.Top+4; pion.Left:=Button2.Left+5; Button2.Caption:=''; end; end.
Le Button1 est un bouton à part car c'est le bouton qui initialise tout le plateau.
J'espère avoir tout dit.
Merci pour vos futures réponses
Partager