Bonjour
je suis nouveau en programmation en Pascal et j'ai des problèmes avec Lazarus. Je cherche un cours de cours de programmation événementielle mais je n'en trouve pas.
Bonjour
je suis nouveau en programmation en Pascal et j'ai des problèmes avec Lazarus. Je cherche un cours de cours de programmation événementielle mais je n'en trouve pas.
Tu peux regarde ces sildes :
http://liris.cnrs.fr/~fduchate/ens/L...ementielle.pdf
Cependant, son contenu est plus orienté présentation/principe qu’utilisation.
Il serai peut-être utile de nous détaillé ton problème....
Cordialement,
Patrick Kolodziejczyk.
Si une réponse vous a été utile pensez à![]()
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
le message d'erreur que je rcoit est: unit1.pas(67,26) Error: Only class class methods, class properties and class variables can be accessed in class methods
c quand j'appelle une procedure tform1... C Sender:Objet qui me gene
C'est un problème de compilation au niveau de ton code. Ce que dit le message d'erreur, c'est que tu tente d'appeler quelque chose que tu n'est pas sensé pouvoir utiliser à l'endroit où tu es (à savoir dans une méthode de classe).
Pour le détail, je vais laisser répondre les spécialistes en Pascal, une fois que tu nous aura donner ton code.
Peux-tu nous donner l'ensemble du code concerné en utilisant la balise code ?
Cordialement,
Patrick Kolodziejczyk.
Note: Ton sujet va très probablement être déplacer ici : Pascal
Si une réponse vous a été utile pensez à![]()
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
mon code:
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 unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; type { TForm1 } TForm1 = class(TForm) resultat: TLabeledEdit; result: TButton; Edit1: TEdit; Edit2: TEdit; adddition: TLabel; procedure Edit1KeyPress(var Key: char); procedure Edit2KeyPress(var Key: char); procedure resultatChange(); procedure resultClick(); private { private declarations } public { public declarations } end; var Form1: TForm1; a,b,c:string; sender:tobject; implementation {$R *.lfm} { TForm1 } procedure affiche(d:string); begin write(d); end; procedure TForm1.Edit1KeyPress(var Key: char); begin b:=key; end; procedure TForm1.Edit2KeyPress(var Key: char); begin a:=key; end; procedure TForm1.resultatChange(); begin write(c); end; procedure TForm1.resultClick(); begin c:=a+b; tform1.resultatChange(); end; end.
Aïe, il y a du travail
1. Il n'est pas possible d'utiliser write dans un composant : les composants qui acceptent une légende possèdent une propriété Caption ou Text qui contiendra le texte à afficher.
2. Les événements liés à un composants ont des syntaxes imposées par l'implémentation. Par exemple, l'appui sur une touche dans un TEdit provoquera un événement à gérer comme suit :
Pour obtenir ce squelette, il faut double-cliquer sur OnKeyPress de la page Evénements du composant (dans l'inspecteur d'objets).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char); begin end;
3. Il ne faut pas définir des variables qui existent déjà (Sender) ou utiliser des identificateurs qui ont un sens particulier dans certains contextes (result).
4. L'emploi systématique de variables globales est source inévitable de confusion. Ici, par exemple, les variables a, b et c peuvent être déclarées dans la partie private de la fiche.
Tout ceci laisse penser qu'il serait préférable de suivre un cours d'initiation à Free pascal et/ou Lazarus avant de tenter de gérer des événements.
Ma préférence irait au cours Eric Thirion qui fournit les bases nécessaires (en particulier, les événements y sont bien expliqués).
Cordialement,
Gilles
Partager