Gambas France BETA


Pas de compte ? Incription

Calquer toutes les form d'un projet...

Ce sujet est résolu.

1
AuteurMessages
spheris#1 Posté le 13/2/2017 à 10:26:27
Bonjour,
Je voudrais que toutes les form (10 forms) de mon projet soit en 1024x768 avec fond gris foncé, et centré sur l'écran.
Auriez-vous l'astuce pour faire ça rapidos?

Aujourd'hui dans chaque form je mets :

1
2
3
4
5
6
PUBLIC SUB Form_open()
ME.Width = 1024
ME.Height = 768
ME.Center()
ME.background = Color.DarkGrey
END

;)
didier18#2 Posté le 13/2/2017 à 18:44:05
Bonjour spheris

Tu peux peut être partir sur un truc comme ça (comme base de dé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
' Gambas class file

PUBLIC frm AS NEW Form[] 'on créé un tableau de formulaires

PUBLIC SUB Form_Open()
DIM i AS INTEGER
FOR i = 0 TO 2 'on va créer 3 formulaires
frm.Add(NULL, frm.Count) 'on ajoute un formulaire et on le compte
frm[i] = NEW Form 'on créé un nouveau formulaire
frm[i].Tag = i 'on met le numéro du formulaire dans son tag, ce sera plus facile pour y faire référence
WITH frm[i] 'ici on défini les dimensions de tous les formulaires
.Width = 300
.Height = 250
END WITH
SELECT i
CASE 0
WITH frm[i] 'ici on défini l'emplacement du formulaire etc...
.x = 10
.y = 10
.Background = Color.Blue
.Show
END WITH
CASE 1
WITH frm[i]
.x = 50
.y = 50
.Background = Color.red
.Show
END WITH
CASE 2
WITH frm[i]
.x = 100
.y = 100
.Background = Color.Yellow
.Show
END WITH
END SELECT
NEXT
END

Il y a certainement plus ergonomique, mais si ça peut aider...

Bonne journée.
spheris#3 Posté le 13/2/2017 à 19:37:18
merci didier18,
une bonne piste certainement.
Mais mes form existent déjà et sont déjà bien remplis.

peut être un truc comme ça :

1
2
3
4
5
6
7
8
DIM mesform AS form[] = ["nomduform1", "nomduform2", "nomduform3", "nomduform4", "nomduform5", "nomduform6"]
DIM a AS INTEGER

FOR a = 0 TO 5
mesform[a].width = 1024
mesform[a].height = 768
mesform[a].Background = Color.DarkGrey
NEXT


sauf que cela ne fonctionne pas
;)
didier18#4 Posté le 13/2/2017 à 20:36:19
Le problème doit être ailleurs car ici en ajoutant ce code cela fonctionne...
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
' Gambas class file

PUBLIC frm AS NEW Form[] 'on créé un tableau de formulaires

PUBLIC SUB Form_Open()
DIM i AS INTEGER
FOR i = 0 TO 2 'on va créer 3 formulaires
frm.Add(NULL, frm.Count) 'on ajoute un formulaire et on le compte
frm[i] = NEW Form 'on créé un nouveau formulaire
frm[i].Tag = i 'on met le numéro du formulaire dans son tag, ce sera plus facile pour y faire référence
WITH frm[i] 'ici on défini les dimensions de tous les formulaires
.Width = 300
.Height = 250
END WITH
SELECT i
CASE 0
WITH frm[i] 'ici on défini l'emplacement du formulaire etc...
.x = 10
.y = 10
.Background = Color.Blue
.Show
END WITH
CASE 1
WITH frm[i]
.x = 50
.y = 50
.Background = Color.red
.Show
END WITH
CASE 2
WITH frm[i]
.x = 100
.y = 100
.Background = Color.Yellow
.Show
END WITH
END SELECT
NEXT

WAIT 2

FOR i = 0 TO 2
frm[i].width = 1024
frm[i].height = 768
frm[i].Background = Color.DarkGray
NEXT
END

Après la temporisation de 2 secondes les formulaires (qui sont déjà créés) sont bien redimensionnés et changés de couleur...
N'aurais-tu pas "vérrouillé" (peut être involontairement) tes formulaires ? (du genre Enabled = False ou Resizable = False)
Jack#5 Posté le 14/2/2017 à 08:26:38
Perso, puisque tes forms sont créés avec des valeurs différentes, je passerai par le .settings
A moins que tu les mettent en public ce qui ne serait pas forcément une bonne chose. Ca dépend de ce que tu as dedans.
Pour un code démocratique nationalisons Gambas.
gambix#6 Posté le 14/2/2017 à 15:48:51
Faire simple !Bon allez la solution par surcharge de la classe Form :


Créez une classe Form.class :



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
EXPORT
PUBLIC CONST _Properties AS STRING = "*,Standart"

PROPERTY Standart AS BOOLEAN
PRIVATE $bStandart AS BOOLEAN


PRIVATE FUNCTION Standart_Read() AS BOOLEAN

RETURN $bStandart

END

PRIVATE SUB Standart_Write(Value AS BOOLEAN)


$bStandart = Value
IF $bStandart THEN

ME.Background = Color.DarkGray
ME.Resize(1024, 768)
ME.Center
ELSE

ME.Background = Color.Background

ENDIF


END


Puis dans chaque formulaire :
1
2
3
PUBLIC SUB _New()
ME.Standart = TRUE
END



Il y a aussi l'encapsulage sinon :


Dans un module:

1
2
3
4
5
6
7
8
9
10
11
PUBLIC SUB STandarize(hForm AS form)

WITH hForm

.Background = Color.DarkGray
.Resize(1024, 768)
.Center

END WITH

END


Puis dans le formulaire :


1
2
3
4
5
PUBLIC SUB _New()

MModule.Standarize(ME)

END
Moins de texte dans une signature c'est agrandir son espace.
spheris#7 Posté le 15/2/2017 à 19:35:23
Merci, la deuxième soluce ne m'est pas inconnue et je vais plutôt utiliser celle là.
Par contre intéressante solution que la première.
Cela veut simplement dire que nous pouvons créer des propriétés de chaque widget à foisons et leur donner le nom que nous voulons?
Super pratique.
1