Bonjour tout le monde,
Voilà, tout est dit. Quand je faisais du VB.Net il suffisait de rajouter <composant>.<événement> après la clause Handles. Mais après moultes recherches en Delphi, je ne trouve pas
Merci d'avances
Bonne soirée
Version imprimable
Bonjour tout le monde,
Voilà, tout est dit. Quand je faisais du VB.Net il suffisait de rajouter <composant>.<événement> après la clause Handles. Mais après moultes recherches en Delphi, je ne trouve pas
Merci d'avances
Bonne soirée
C'est pas très précis, mais tu peux affecter dynamiquement les évènements comme ceci:
Si tu As
tu peux affecter a un autre bouton de cette manièreCode:
1
2
3
4 procedure TForm.BitBtn1Click(Sender:TObject); begin // end;
En fait tu peux faire cela, avec une méthode de ton cru, pas forcément défini avec le 1er bouton...Code:
1
2
3begin ... UnAutreBouton.OnClick := BitBtn1Click;
Le principal étant que la méthode affecté soit exactement du même prototype que les méthodes affectées habituellement aux évènements concernés
Facile :).
En mode désign (avant de compiler) tu peux aller dans l'onglet Événements de l'inspecteur d'objets et sélectionner l'événement désiré dans la liste à droite de l'événement qui doit être géré.
Si tu veux le faire en code, il suffit d'indiquer à la propriété événement de l'objet quelle méthode doit être exécutée lors du soulèvement de l'événement.
Bon dev!Code:
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 TForm1 = class(TForm) btn1: TButton; btn2: TButton; procedure btn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); begin Showmessage('Click de bouton!'); end; procedure TForm1.FormCreate(Sender: TObject); begin btn2.OnClick := btn1Click; //On assigne l'événement OnClick de btn1 à btn2 end;
[EDIT]
TicTacToe a été plus rapide ;)
;) slimjoe qq sec on dirait
J'ajouterai, que tu n'es pas obligé de faire cela par code, mais que l'on peut tout a fait "repiquer" la méthode Click du bouton 1 et l'affecter dans l'inspecteur d'objets/ onglet évènement sur la méthode 'OnClick' du bouton 2.
-> La liste déroulante te présentera toute les méthodes candidates et compatible pour ton bouton2 -> donc la méthode BitBtnClick du bouton1.
Salut :)
Attention toutefois, il faut que les types d'évènements soient identiques.
Exemple:
Tu ne peux pas assigner un OnClick (de type TNotifyEvent) à un OnKeyPress (de type TKeyPressEvent).
Merci bcp à vous 3 d'avoir répondu si vite! :)
C'est ce que je voulais savoir, merci.
Mais en fait, je fais un morpion donc j'ai 9 Images et dès que je clique sur une des images je voudrais appeler la procédure événementielle qui met une croix ou un rond.
Mais le nom de l'image est en dur dans le code et je vois pas comment faire...SI vous avez une idée :oops: :
Code:
1
2
3
4
5 procedure TformClient.Image1Click(Sender: TObject); begin Image1.Picture.LoadFromFile('croix.jpg'); end;
:koi: Je ne comprends pas bien pourquoi ça pose un problème...Citation:
Envoyé par eultartuffe
:bug: ou est le 3éme?? je vois que 2 person :lol:Citation:
Envoyé par eultartuffe
c'est qoi morpion ?? :oops:Citation:
Envoyé par eultartuffe
chaque objet à une propriété "tag", aussi pour tes 2 imagesCitation:
Envoyé par eultartuffe
Code:
1
2
3 const MesImage:array[1..2] of string=('image1.bmp','image2.bmp');
C'est moi: le modo qui restaure ses posts plus vite que son ombre :aie:Citation:
Envoyé par edam
http://fr.wikipedia.org/wiki/Morpion_%28jeu%29Citation:
Envoyé par edam
Sinon, pour en revenir au problème initial, voila ce que je ferais:
Afficher un TImage avec les 4 traits du plateau. Avec l'évènement OnMouseDown, tu récupères les coordonnées du click et avec ces coordonnées, tu calcules la case cliquée.
Un tableau de 3x3 où chaque case aurait 3 états: vide, croix et rond. Avec la case cliquée, tu renseignes correctement ce tableau.
Dans le OnPaint du TImage, avec le tableau, tu dessines ce qu'il faut:
rien (c'est le plus facile :lol:
une croix (MoveTo et LineTo)
un rond (DrawEllipse)
Et voila ;)
OK merci j'aurais pas penser à ça...C'est pas bête du tout! :D
Mais par contre je vois pas comment je peux calculer quelle case on sélectionne... (Je suis débutant j'avais oublié de le signaler :oops: )
A moins que dans le tableau je renseigne la position de la case sur la TImage?
Merci :aie:Citation:
Envoyé par eultartuffe
Ben c'est assez simple:Citation:
Envoyé par eultartuffe
ONMouseDown renvoit les coordonnées X et Y de la souris au moment du click. Ensuite, il te suffit de tester si le curseur est dans telle ou telle case. Cela pourrait donner ceci:
Dans le cas où les lignes verticales du plateau sont à X=10 et X=20 sur l'image. Ensuite, tu fais pareil pour la ligne et tu as la case cliquée ;)Code:
1
2
3
4
5
6
7
8 if X < 10 then //Première colonne else if (X > 10) and (X < 20) then //Seconde colonne else //Troisième colonne
Daccord merci bcp je vais essayer ça :P
Si ton problème est résolu, clique sur :resolu: Merci.Citation:
Envoyé par eultartuffe