Gambas France BETA


Pas de compte ? Incription

Exemple 13 :

Gérer les Tab d'un TabStrip indépendamment :



Un exemple téléchargeable sur la forge de Gambas nous servira de base : TabStrip

Notre souci, ici, est la gestion des évènements liés à la position de la Form sachant que le premier Tab implique que la Form n'est pas "resizable" alors que les deux autres le sont.
Nous voulons que la Form soit toujours centrée et retrouve ses dimensions initiales quand le premier Tab est cliqué ou quand c'est lui qui est affiché.

pour cela nous utilisons deux évènements concernant les TabStrip :
1
PUBLIC SUB TabStrip1_Arrange()
et
1
PUBLIC SUB TabStrip1_Click()


Plus qu'un long discours voici l'intégralité du code de notre exemple :
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
' Gambas class file

PUBLIC SUB Form_State() ' <------------------------------------------------------ évènement marquant les changements d'état de la Form (maximized, minimized, fullscreen)

' If Me.Maximized And Me.FullScreen Then Me.FullScreen = False 'pour empêcher les deux en même temps

END

PUBLIC SUB TabStrip1_Arrange() '<------------------------------------------------ lors du rangement par les TabStrip, cet évènement permet de rendre compte d'un état du tabstrip

SELECT CASE TabStrip1.Index '<----------------------------------------------- l'index des onglets commence à zéro pour le premier
CASE 0
'-------- pour avoir les deux en même temps ----------- DECOMMENTER LA LIGNE DE FORM_STATE() et inversement commenter celles entre les pointillés
IF ME.Maximized AND ME.FullScreen THEN
ME.Maximized = TRUE
ME.FullScreen = FALSE
ENDIF
'-------- pour avoir les deux en même temps -----------
IF ME.Maximized THEN ME.Maximized = FALSE
IF ME.FullScreen THEN ME.FullScreen = FALSE
ME.Resizable = FALSE '<-------------------------------------------- la form n'est pas resizable si on clique sur le premier onglet
ME.Center
CASE 1
ME.Resizable = TRUE '<--------------------------------------------- la form est resizable si on clique sur le second
CASE 2
ME.Resizable = TRUE '<--------------------------------------------- la form est resizable si on clique sur le troisième
END SELECT

END

PUBLIC SUB TabStrip1_Click() '<------------------------------------------------- lors d'un click sur un des tab du tabstrip, cet évènement permet de rendre compte de l'action sur un onglet du tabstrip

SELECT CASE TabStrip1.Index
CASE 0
mesuresOrigine()
ME.Center
'----------- GROS BUG ----------- <------------------------------- ce bug fait perdre les dimensions et la position
' Case 1 ' ce qui est le contraire de ce que l'on cherchait
' Me.center ' décommenter et tester
' Case 2
' Me.center
'----------- GROS BUG -----------
END SELECT

END

PUBLIC SUB Form_Open() '<-------------------------------------- au moment de l'ouverture du programme on sauvegarde les dimensions et position de la Form

Settings["orig/Top"] = ME.Top
Settings["orig/Left"] = ME.Left
Settings["orig/Height"] = ME.Height
Settings["orig/Width"] = ME.Width

END

PUBLIC SUB mesuresOrigine() '<--------------------------------- on peut rappeler ces dimensions et position grâce à une procédure, utilisée dans TabStrip1_Click()

ME.Width = Settings["orig/Width"]
ME.Height = Settings["orig/Height"]
ME.Top = Settings["orig/Top"]
ME.Left = Settings["orig/Left"]

END

PUBLIC SUB Menu1_Click() '<----------------------------------- menu pour mettre en plein écran sauf si la form n'est pas resizable

IF ME.Resizable THEN
ME.FullScreen = NOT ME.FullScreen
ENDIF

END


Une image dans l'IDE (regarder les propriétés de chaque élément) :



====================



====================

Navigation :



<-- Liens du Wiki : <--
<-- Accueil du WIKI : <--

====================

Documentation :



====================