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.
|