Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/11/2007, 12h35   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
Par défaut [Forms 6i] Ascenseur dans un canevas onglet

Salam à tou(te)s,

Je développe sous forms 6i et mon application doit être mise en place sur des machines avec des écrans 15'' d'où la nécéssité de mettre un ascenseur dans mon canevas. Le problème c'est que j'utilise un canevas à onglet et je voudrais mettre un ascenseur dans les pages de qlq onglets.
J'ai trouvé une réponse à cette question dans un autre sujet :
http://www.developpez.net/forums/sho...ight=ascenseur
Mais je n'arrive pas à insérer un canevas empilé dans la page de l'onglet.

Qlq aurait il une idée de comment faire..???

Merci à tou(te)s pour votre attention.
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2007, 14h14   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Tu ne l'insère pas dedans.

Un canvas empilé est autonome. Il suffit de l'afficher ou le cacher âr
Code :
1
2
SHOW_VIEW('MON_CAN_EMPILE');
HIDE_VIEW('MON_CAN_EMPILE');
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2007, 15h14   #3
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
Citation:
Envoyé par McM Voir le message
Tu ne l'insère pas dedans.

Un canvas empilé est autonome. Il suffit de l'afficher ou le cacher âr
Code :
1
2
SHOW_VIEW('MON_CAN_EMPILE');
HIDE_VIEW('MON_CAN_EMPILE');
Salam,

Oui mais je fais comment pour l'ascenseur???
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2007, 18h32   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
L'ascenseur est dans les propriétés du canvas.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 10h42   #5
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
Citation:
Envoyé par McM Voir le message
L'ascenseur est dans les propriétés du canvas.
Salam,

Je sais, mais comment je fais pour faire le lien entre le canevas empilé et la page de l'onglet???
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 14h33   #6
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Can not do it !!!
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 14h57   #7
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 133
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 133
Points : 33
Points : 33
Citation:
Envoyé par Garuda Voir le message
Can not do it !!!
Salam,

T'es sur?? Ya pas un moyen?
kikouu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 15h48   #8
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

J'ai déja réalisé un canvas onglets qui affiche canvas empilé

quel est la largeur de ton canvas intégral ?
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 16h14   #9
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Citation:
Envoyé par salim11 Voir le message
Salut,

J'ai déja réalisé un canvas onglets qui affiche canvas empilé

quel est la largeur de ton canvas intégral ?
Oui, bien sur , mais c'est un peu de la bidouille ! Il faut synchroniser l'affichage du canvas (WHEN-NEW-TAB...) avec le changement d'onglet. Par contre, ca ne marchera pas quand tu navigueras d'un item sur un autre canevas vers un item sur ton canevas empilé (les onglets seront desynchronisés ). NB : Un tab canvas, c'est déja un canevas empilé !
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 17h20   #10
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Je ne comprends pas qu'est ce que tu veux synchoniser. Le canvas onglet et canvas empilé partagent le même block de données.

tu trouveras ci-joint un module généré par designer.
Fichiers attachés
Type de fichier : zip EMPE0002.zip (47,3 Ko, 21 affichages)
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 17h47   #11
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Ok allons y ! block1.item1 - > canevas1 (empilé) ->onglet 1 block1.item2 - > canevas2 (empilé) ->onglet 2 Quand tu cliques sur onglet 1 (when-new-tab-changed), tu affiches Canevas1 ("show_view&quot ou tu fais un "go_item('block1.item1')" . d'ac ? Idem pour onglet 2 Maintenant imagines que pour une raison ou une autre (navigation au clavier ou un "go_item" dans le code) tu te retrouves sur item2 alors que onglet1 est affiché au premier plan. Il faut bien mettre onglet2 au premier plan, Non ? Eh beh c'est ca la synchro. Et en l'occurence c'est pas de la tarte (tu le mets ou, ton "show_view" ??) Oui je sais, designer sait faire ! Il le faisait même avant que les onglet existe dans Forms (4.5). Ca veut pas dire : - que c'est facile - que c'est maintenable (oh que non) PS : je sais, le message est illisible, mais j'arrive plus à faire marcher correctement l'éditeur : plus de smiley, pas de CR/LF. dernière version de firefox en cause ???
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 19h08   #12
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
test dernière version de Firefox :
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 16h02   #13
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Puisque ca a l'air de vouloir remarcher sur mon pc, je reprends le message
Citation:
Je ne comprends pas qu'est ce que tu veux synchoniser. Le canvas onglet et canvas empilé partagent le même block de données.
Ok allons y !
block1.item1 - > canevas1 (empilé) ->onglet 1
block1.item2 - > canevas2 (empilé) ->onglet 2

Quand tu cliques sur onglet 1 (when-new-tab-changed), tu affiches Canevas1 ("show_view") ou tu fais un go_item"('block1.item1')" . d'ac ?

Idem pour onglet 2

Maintenant imagines que pour une raison ou une autre (navigation au clavier ou un "go_item" dans le code) tu te retrouves sur item2 alors que onglet1 est affiché au premier plan. Il faut bien mettre onglet2 au premier plan, Non ?
Eh ben, c'est ca la synchro. Et en l'occurrence c'est pas de la tarte (tu le mets ou ton "show_view" , dans ce cas là ??)
Oui je sais, designer sait faire !
Il le faisait même avant que les onglet existe dans Forms (4.5).
Ca veut pas dire :
- que c'est facile
- que c'est maintenable (oh que non)
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 17h14   #14
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Une petite remarque, à ma connaissance il n'existe pas de trigger when-new-tab-changed mais when-tab-page-changed .

C'est vrai je génère mes formes avec designer,ce dernier fait beaucoups de choses à ma place .

Code :
1
2
3
 
Quand tu cliques sur onglet 1 (when-new-tab-changed), tu affiches Canevas1
 ("show_view") ou tu fais un go_item"('block1.item1')" . d'ac ?
Entièrement d'accord avec vous.

Code :
1
2
3
4
 
Maintenant imagines que pour une raison ou une autre (navigation au clavier ou un "go_item" dans le code) tu te retrouves sur item2 alors que onglet1 est affiché au premier plan. Il faut bien mettre onglet2 au premier plan, Non ? 
Eh ben, c'est ca la synchro. Et en l'occurrence c'est pas de la tarte (tu le mets ou ton "show_view" , dans ce cas là ??) 
Oui je sais, designer sait faire !
Voici comment designer le fait( canvas onglets 2 pages), j'ai beaucoups appris de designer :

- création de la bibliothèque(package) qui gére les canvas onglets :
Spécifications
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PACKAGE CGLT$TAB_BLOCKS IS

activate boolean := FALSE;
FUNCTION CGLT$FND_MASTER_TAB_CVS(l_item in VARCHAR2) RETURN 
VARCHAR2;
FUNCTION CGLT$FND_NAV_ITEM(in_tab in varchar2) RETURN VARCHAR2;
FUNCTION CGLT$FND_TAB(in_block in varchar2) RETURN VARCHAR2;
FUNCTION CGLT$FND_TAB_STACK_CVS(in_tab in varchar2) RETURN 
CGLT$TAB_BLOCKS.stack_canvas_type;

PROCEDURE CGLT$NEW_BLOCK;

PROCEDURE CGLT$TAB_CHANGED;-- procédure
 qui gère le changement de page dans un canvas à onglets.
END CGLT$TAB_BLOCKS;
BODY
Code :
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
 
PACKAGE BODY CGLT$TAB_BLOCKS IS
 
----------------------------------------------------------------------
-- These are the different Types used to define the package variables
----------------------------------------------------------------------
 
  -- Type for table of stacked canvases for a named tab 
  type stack_canvas_type IS TABLE of varchar2(50) INDEX BY BINARY_INTEGER;  
 
 
------------------------------------------------------
-- These are the actual variables used in the code
------------------------------------------------------
  stack_cvs  stack_canvas_type;     -- PL/SQL table with all stacked canvases with name CG$POPUP_ that
                                    -- relate to any of the tabs
 
-------------------------------------------------------------------------------------------------------
FUNCTION CGLT$FND_MASTER_TAB_CVS(l_item IN VARCHAR2) RETURN VARCHAR2 IS
 
  c_val		VARCHAR2(200);
  item_cvs VARCHAR2(61) := get_item_property(l_item, ITEM_CANVAS);
  r_grp	     RecordGroup := Find_Group('CGLT$CVS_DATA');	-- record group containing tab data
  r_count    number := Get_Group_Row_Count(r_grp);		-- and the number of records in it
 
BEGIN
  FOR i IN 1..r_count LOOP
 
    c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
    IF instr(upper(item_cvs), c_val) > 0 THEN
      RETURN c_val;
    END IF;
 
    c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.PAGE', i);
    IF instr(upper(item_cvs), c_val) > 0 THEN
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
      RETURN c_val;
    END IF;    
 
    c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.STACK_CANVAS', i);
    IF instr(upper(item_cvs), c_val) > 0 THEN
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
      RETURN c_val;
    END IF;
 
  END LOOP;
  RETURN NULL;
 
EXCEPTION
  WHEN OTHERS THEN
    message('Unexpected Error in CGLT$FND_MASTER_TAB_CVS');
    pause;
 
END CGLT$FND_MASTER_TAB_CVS;
 
--------------------------------------------------------------------------------------------------------
FUNCTION CGLT$FND_NAV_ITEM(in_tab IN varchar2) RETURN VARCHAR2 IS
 
  c_val		VARCHAR2(200);
  r_grp	     RecordGroup := Find_Group('CGLT$CVS_DATA');	-- record group containing tab data
  r_count    number := Get_Group_Row_Count(r_grp);		-- and the number of records in it
 
BEGIN
  FOR i IN 1..r_count LOOP
    c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.NAME', i);
 
    IF c_val = upper(in_tab) THEN
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.NAV_ITEM', i);
      RETURN c_val;
    END IF;
 
  END LOOP;
  RETURN NULL;
 
EXCEPTION
  WHEN OTHERS THEN
    message('Unexpected Error in CGLY$FND_NAV_ITEM');
    pause;
END CGLT$FND_NAV_ITEM;
 
-------------------------------------------------------------------------------------------------------
FUNCTION CGLT$FND_TAB(in_block IN varchar2) RETURN VARCHAR2 IS
 
  c_val		   VARCHAR2(200);
  l_start    number := 1;
  l_end      number;
  is_instr   BOOLEAN := false;
  block_name VARCHAR2(80);
  r_grp	     RecordGroup := Find_Group('CGLT$CVS_DATA');	-- record group containing tab data
  r_count    number := Get_Group_Row_Count(r_grp);		-- and the number of records in it
 
BEGIN
  FOR i IN 1..r_count LOOP
    c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.BLOCKS', i);
 
    l_end := instr(c_val,',');
 
    IF l_end > 0 THEN -- there are multiple comma-delimited block names for this tab
      LOOP
        block_name := substr(c_val,l_start,l_end - l_start);
        l_start := l_end + 1;
        l_end := instr(c_val,',',l_start);
 
        IF (block_name = in_block) THEN
          is_instr := true;
          EXIT;
        END IF;
 
        IF (l_end = 0) THEN
          EXIT;
        END IF;
 
      END LOOP;
    ELSIF (c_val = in_block) THEN -- only one block name for this tab
      is_instr := true;
    END IF;
 
		IF (is_instr) THEN
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.NAME', i);
      RETURN c_val;
    END IF;
 
  END LOOP;
  RETURN NULL;
 
EXCEPTION
  WHEN OTHERS THEN
    message('Unexpected Error in CGLT$FND_NAV_ITEM');
    pause;
END CGLT$FND_TAB;
 
-------------------------------------------------------------------------------------------------------
FUNCTION CGLT$FND_TAB_STACK_CVS(in_tab IN varchar2) RETURN CGLT$TAB_BLOCKS.stack_canvas_type IS
 
  c_val		VARCHAR2(200);
  l_start       number := 1;
  l_end         number;
  stck_cnvs     CGLT$TAB_BLOCKS.stack_canvas_type;
  j             number := 1;
  r_grp	     RecordGroup := Find_Group('CGLT$CVS_DATA');	-- record group containing tab data
  r_count    number := Get_Group_Row_Count(r_grp);		-- and the number of records in it
 
BEGIN
  FOR i IN 1..r_count LOOP
    c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.NAME', i);
 
    IF c_val = upper(in_tab) THEN
      --------------------------------------
      -- Is there more than one stacked canvas for this tab
      --------------------------------------
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.STACK_CANVAS', i);
      l_end := instr(c_val,',');
 
      IF l_end > 0 THEN
        LOOP
          stck_cnvs(j) := substr(c_val,l_start,l_end - l_start);
 
          l_start := l_end + 1;
          l_end := instr(c_val,',',l_start);
 
	  j := j + 1; -- point to next canvas
 
          --------------------------------------
          -- If Last stacked canvas then return the table of stacked canvases
          --------------------------------------
          IF l_end = 0 THEN
            stck_cnvs(j) := substr(c_val,l_start);
            RETURN stck_cnvs;
          END IF;
        END LOOP;
 
      --------------------------------------
      -- If there is only one stacked canvas for the tab
      -- not necessary to loop
      --------------------------------------
     ELSE
        IF (c_val IS NOT NULL) THEN
          stck_cnvs(j) := c_val;
          RETURN stck_cnvs;
        END IF;
      END IF;
    END IF;
  END LOOP;
  RETURN stck_cnvs;
 
EXCEPTION
  WHEN OTHERS THEN
    message('Unexpected Error in CGLT$FND_TAB_STACK_CVS');
    pause;
END CGLT$FND_TAB_STACK_CVS;
 
-------------------------------------------------------------------------------------------------------
PROCEDURE CGLT$NEW_BLOCK IS
 
  l_tab  varchar2(50)  := CGLT$FND_TAB(name_in('system.trigger_block'));
  l_item varchar2(100) := name_in('system.cursor_item');
  l_stack_canvases     CGLT$TAB_BLOCKS.stack_canvas_type;  -- List of stacked canvases for the new active tab
  tab_win VARCHAR2(61);
  tab_cvs VARCHAR2(61);
  c_val VARCHAR2(200);
  r_grp	     RecordGroup := Find_Group('CGLT$CVS_DATA');	-- record group containing tab data
  r_count    number := Get_Group_Row_Count(r_grp);		-- and the number of records in it
 
BEGIN
 
  tab_cvs := CGLT$FND_MASTER_TAB_CVS(l_item);
 
  IF (tab_cvs IS NOT NULL) THEN
 
    IF l_tab IS NULL THEN
      l_tab := get_canvas_property(tab_cvs,topmost_tab_page);
    END IF;
 
    set_canvas_property(tab_cvs,topmost_tab_page,l_tab);
    l_stack_canvases := CGLT$FND_TAB_STACK_CVS(l_tab);
 
    --------------------------------------
    -- This shouldn't be necessary, but due to some unexpected behavior
    -- this workaround makes sure the cursor is still in the item that it
    -- was in before we changed the active tab
    --------------------------------------
    SYNCHRONIZE;
    go_item(l_item);
 
    FOR i IN 1..r_count LOOP
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
      IF (c_val = tab_cvs) THEN
        tab_win  := Get_Group_Char_Cell('CGLT$CVS_DATA.WINDOW', i);
        EXIT;
      END IF;
    END LOOP;
 
    /*FOR i IN 1..r_count LOOP
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.WINDOW', i);
      IF (c_val = tab_win) THEN
        c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
        hide_view(c_val);
      END IF;
    END LOOP;*/
 
    show_view(tab_cvs);
 
    IF l_stack_canvases.count > 0 THEN
      FOR i IN l_stack_canvases.first..l_stack_canvases.last LOOP
        show_view(l_stack_canvases(i));
      END LOOP;
    END IF;
  END IF;
END CGLT$NEW_BLOCK;
 
-------------------------------------------------------------------------------------------------------
PROCEDURE CGLT$TAB_CHANGED IS
 
  l_stack_canvases   CGLT$TAB_BLOCKS.stack_canvas_type;  -- List of all stacked canvases for the active tab
  l_nav_item         varchar2(100);               -- item to navigate to for the active tab
  l_tab              varchar2(50) := name_in('system.tab_new_page');  -- The new active tab
  j                  integer := 1;
  tab_cvs            VARCHAR2(61);
  tab_win VARCHAR2(61);
  c_val VARCHAR2(200);
  r_grp	     RecordGroup := Find_Group('CGLT$CVS_DATA');	-- record group containing tab data
  r_count    number := Get_Group_Row_Count(r_grp);		-- and the number of records in it
 
BEGIN
 
  l_stack_canvases := CGLT$FND_TAB_STACK_CVS(l_tab);
  l_nav_item := CGLT$FND_NAV_ITEM(l_tab);
  tab_cvs := CGLT$FND_MASTER_TAB_CVS(l_nav_item);
 
  IF (l_nav_item IS NOT NULL) THEN   
     go_item(l_nav_item);
  END IF;
 
  --IF NOT form_success THEN -- /* FORM_SUCCESS NOT RELIABLE so use a specific test instead */
  IF (NAME_IN('SYSTEM.CURSOR_ITEM') <> l_nav_item) THEN
      set_canvas_property(tab_cvs,topmost_tab_page,name_in('system.tab_previous_page'));
      go_item(name_in('system.trigger_item'));
 
      --------------------------------------
      -- If the master block is in Enter-Query and the user tries
      -- to click a different tab than the current one, show the views for
      -- the current tab since this is not allowed
      --------------------------------------
      IF name_in('system.mode') = 'ENTER-QUERY' THEN
 
        -- retrieve list of all stacked canvases for the previously active tab
        l_stack_canvases := CGLT$FND_TAB_STACK_CVS(get_canvas_property(tab_cvs,topmost_tab_page));
 
        IF l_stack_canvases.count > 0 THEN
          FOR rec IN 1..l_stack_canvases.last LOOP
            show_view(l_stack_canvases(rec));
          END LOOP;
        END IF;
 
      ELSE
        raise form_trigger_failure;
      END IF;
 
  ELSE
 
    FOR i IN 1..r_count LOOP
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
      IF (c_val = tab_cvs) THEN
        tab_win  := Get_Group_Char_Cell('CGLT$CVS_DATA.WINDOW', i);
        EXIT;
      END IF;
    END LOOP;
 
    /*FOR i IN 1..r_count LOOP
      c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.WINDOW', i);
      IF (c_val = tab_win) THEN
        c_val := Get_Group_Char_Cell('CGLT$CVS_DATA.MASTER_TAB', i);
        hide_view(c_val);
      END IF;
    END LOOP;*/
 
    show_view(tab_cvs);
      IF l_stack_canvases.count > 0 THEN
        FOR rec IN 1..l_stack_canvases.last LOOP
          show_view(l_stack_canvases(rec));
        END LOOP;
      END IF;
  END IF;
 
END CGLT$TAB_CHANGED;
 
END CGLT$TAB_BLOCKS;
Dans le when-new-form-instance
Code :
1
2
3
4
5
6
7
8
 
 
/* CGLT$INIT_TAB_BLOCKS                     */
/* Initialise tabbed canvases               */
BEGIN
   CG$EMPE0002_GLOBALS.ACTIVATE := TRUE;
   CGLT$TAB_BLOCKS.CGLT$NEW_BLOCK;
END;
Dans le WHEN-TAB-PAGE-CHANGED
Code :
1
2
3
4
5
6
7
8
9
 
/* CGLT$NEW_TAB_PAGE                  */
/* Show related canvases for this tab */
BEGIN
   IF( :SYSTEM.TAB_NEW_PAGE IN ( 'CG$M_TAB_1_PAGE_1', 'CG$M_TAB_1_PAGE_2' ) ) THEN
      CG$EMPE0002_GLOBALS.ACTIVATE := TRUE;
      CGLT$TAB_BLOCKS.CGLT$TAB_CHANGED;
   END IF;
END;
Dans le when-new-block-instance
Code :
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
 
/* CGLT$TAB_BLOCK_MANAGEMENT                */
/* Switch tab management code on/off        */
DECLARE
   current_canvas VARCHAR2(61) := GET_ITEM_PROPERTY(:SYSTEM.CURSOR_ITEM, ITEM_CANVAS);
   base_canvas VARCHAR2(61);
BEGIN
   CGLY$GET_RELATED_CANVASES(current_canvas, base_canvas);
   IF( base_canvas IN ( 'CG$PAGE_1' ) ) THEN
      CG$EMPE0002_GLOBALS.ACTIVATE := TRUE;
   ELSE
      CG$EMPE0002_GLOBALS.ACTIVATE := FALSE;
   END IF;
END;
 
 
 
/* CGLT$TAB_NEW_BLOCK                      */
/* Show canvases for this block            */
BEGIN
   IF CG$EMPE0002_GLOBALS.ACTIVATE = TRUE THEN
      CGLT$TAB_BLOCKS.CGLT$NEW_BLOCK;
   END IF;
END;
 
/* CGBS$WHEN_NEW_BLOCK_INSTANCE */
/* ensure the current canvas is correctly coordinated */
BEGIN
  CGBS$.NEW_BLOCK( name_in('SYSTEM.CURSOR_BLOCK'), :GLOBAL.CG$QUERY_MODE);
END;
Le package CG$EMPE0002_GLOBALS
Code :
1
2
3
4
 
PACKAGE CG$EMPE0002_GLOBALS IS
ACTIVATE BOOLEAN := FALSE; /* Blocks on tabs global variable */
END;
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web