Gambas France BETA


Pas de compte ? Incription

DrawingArea et les classes

Ce sujet est résolu.

1
AuteurMessages
ivan_r#1 Posté le 24/10/2014 à 00:41:17
Un problème avec drawingArea et les classes

Dans une feuille, je place 2 boutons

J'ajoute une classe classDessin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
' Gambas class file

INHERITS DrawingArea

PUBLIC SUB _new()
ME.x = 0
ME.Y = 0
ME.Background = Color.Red
ME.h = ME.Parent.H
ME.w = ME.Parent.w

ME.cached = TRUE

Draw.Begin(ME)
Draw.Line(0, 0, ME.W, ME.H)
Draw.end

END


une classe classPanel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
' Gambas class file

INHERITS Panel

PUBLIC affichages AS NEW Collection

PUBLIC SUB _new(x AS INTEGER, y AS INTEGER, w AS INTEGER, h AS INTEGER)

ME.x = x
ME.y = y
ME.w = w
ME.h = h

END


et la feuille contient le code suivant:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PRIVATE cp AS ClassPanel

PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
DIM cd AS ClassDessin

cp = NEW ClassPanel(ME, Button1.x, 0, Button1.w, 100)
cp.Visible = FALSE
cd = NEW ClassDessin(cp)
END

PUBLIC SUB Button1_Click()
cp.Visible = NOT cp.Visible

END

PUBLIC SUB Button2_Click()
DIM p AS NEW ClassPanel(ME, Button2.x, 0, Button2.w, 100)
DIM d AS NEW ClassDessin(p)
END


Quand on clique sur Button1, seul un panneau rouge s'affiche, sans ligne en diagonale alors que quand on clique sur Button2, la ligne en diagonale s'affiche.

Les 2 affichages sont issus des mêmes classes mais l'affichage ne réagit pas de la même manière.

J'aimerai bien trouver pourquoi...
Si vous avez des idées à me soumettre...
Utilisateur de Gambas 3.5.4 sur EEEPC sous Debian, linutop 5 sous Ubuntu à la sauce Linutop, carte Radxa sous Ubuntu
Reivillo#2 Posté le 24/10/2014 à 09:39:12
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonjour ivan_r.

Sur ta feuille:
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
PUBLIC cd AS ClassDessin'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PUBLIC cp AS ClassPanel'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

PUBLIC SUB Form_Open()

' Dim cd As ClassDessin

cp = NEW ClassPanel(ME, Button1.x, 0, Button1.w, 100)
cp.Visible = FALSE
cd = NEW ClassDessin(cp)

END

PUBLIC SUB Button1_Click()

cp.Visible = NOT cp.Visible

END

PUBLIC SUB Button2_Click()

DIM p AS NEW ClassPanel(ME, Button2.x, 0, Button2.w, 100)
DIM d AS NEW ClassDessin(p)

END


reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
vuott#3 Posté le 24/10/2014 à 10:07:45
Ne cedere ineluctabili possimusHow Reivillo has already shown, the problem is the "local" declaration of "cd As ClassDessin".
So, you can use the "global" solution proposed by our friend Reivillo, or you can keep still at a "local" level in this way:
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
PRIVATE cp AS ClassPanel


PUBLIC SUB Form_Open()

cp = NEW ClassPanel(ME, Button1.x, 0, Button1.w, 100)
cp.Visible = FALSE

END

PUBLIC SUB Button1_Click()

DIM cd AS ClassDessin

cp.Visible = NOT cp.Visible
cd = NEW ClassDessin(cp)


END

PUBLIC SUB Button2_Click()

DIM p AS NEW ClassPanel(ME, Button2.x, 0, Button2.w, 100)
DIM d AS NEW ClassDessin(p)

END
« Vita non suavis esse potest, nec Mors amara. »
ivan_r#4 Posté le 24/10/2014 à 12:37:34
Z'êtes des bêtes, les gars, merci !
Utilisateur de Gambas 3.5.4 sur EEEPC sous Debian, linutop 5 sous Ubuntu à la sauce Linutop, carte Radxa sous Ubuntu
Reivillo#5 Posté le 24/10/2014 à 22:08:40
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Merci pour le Retour...

Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
1