Académique Documents
Professionnel Documents
Culture Documents
Visual Basic 6 Creez Des Applications Efficaces PDF
Visual Basic 6 Creez Des Applications Efficaces PDF
Visual
Basic 6
Greg Perry
Pearson a apport le plus grand soin la ralisation de ce livre afin de vous fournir une information
complte et fiable. Cependant, Pearson nassume de responsabilits, ni pour son utilisation, ni pour les
contrefaons de brevets ou atteintes aux droits de tierces personnes qui pourraient rsulter de cette
utilisation.
Les exemples ou les programmes prsents dans cet ouvrage sont fournis pour illustrer les descriptions
thoriques. Ils ne sont en aucun cas destins une utilisation commerciale ou professionnelle.
Pearson ne pourra en aucun cas tre tenu pour responsable des prjudices ou dommages de quelque
nature que ce soit pouvant rsulter de lutilisation de ces exemples ou programmes.
Tous les noms de produits ou marques cits dans ce livre sont des marques dposes par leurs propritaires
respectifs.
Aucune reprsentation ou reproduction, mme partielle, autre que celles prvues larticle L. 122-5 2
et 3 a) du code de la proprit intellectuelle ne peut tre faite sans lautorisation expresse de Pearson
Education France ou, le cas chant, sans le respect des modalits prvues larticle L. 122-10 dudit code.
No part of this book may be reproduced or transmitted in any form or by any means, electronic or
mechanical, including photocopying, recording or by any information storage retrieval system, without
permission from Pearson Education, Inc.
Prelim.indd II
10/04/08 17:01:52
Sommaire
Introduction .............................................
415
Partie I ....................................................
435
467
CHAPITRE 2. Lenvironnement
et les outils Visual Basic .....................
475
33
481
65
505
97
531
117
567
139
CHAPITRE 6. Oprateurs et
instructions de contrle ......................
577
143
601
171
619
PB 3. Entres utilisateur
et logique conditionnelle ....................
197
641
223
663
225
689
271
693
293
731
PB 4. Slections multiples
dans une zone de liste .........................
327
Partie IV ................................................
755
337
757
345
789
379
791
407
Index ........................................................
797
III
>
:
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercice ..........................................
62
62
63
63
65
66
70
71
71
72
74
76
Le focus ..............................................
Les procdures vnementielles .........
Ecrire des procdures vnementielles
77
79
80
82
35
86
86
86
87
87
88
36
89
36
37
90
92
93
97
98
99
101
101
105
106
107
109
111
Introduction .............................................
Partie I ....................................................
8
12
14
15
17
18
26
En rsum ...........................................
30
Questions-rponses ............................
31
Atelier .................................................
Quiz ...............................................
31
31
Exercice ..........................................
32
CHAPITRE 2. Lenvironnement
et les outils Visual Basic .....................
33
34
34
IV
38
40
43
43
45
46
47
50
50
54
58
En rsum ...........................................
61
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................
115
115
116
116
116
117
118
119
120
121
124
126
127
130
131
132
134
135
135
136
136
137
139
Analyse ...............................................
140
CHAPITRE 6. Oprateurs et
instructions de contrle ......................
143
144
148
149
151
153
154
155
156
159
160
163
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................
166
167
168
168
169
171
172
174
178
179
180
181
184
184
188
189
189
190
191
Le contrle Frame
et les groupes doptions ...................
192
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................
194
194
195
195
196
PB 3. Entres utilisateur
et logique conditionnelle ....................
197
198
201
201
207
207
216
219
<
:
Partie II ..................................................
223
CHAPITRE 8. Sous-routines
et fonctions .........................................
225
226
227
228
230
233
>
:
235
236
238
239
239
241
250
256
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................
267
268
268
268
269
271
271
273
VI
274
276
278
280
283
284
286
287
289
289
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................
289
290
290
291
293
294
294
295
296
299
301
301
306
310
314
316
319
324
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................
324
324
325
325
326
PB 4. Slections multiples
dans une zone de liste .........................
327
327
334
335
337
337
338
340
341
342
342
345
346
349
349
350
351
352
388
389
392
393
394
394
353
354
356
Imbrication de types
de donnes personnaliss ................
398
358
363
364
365
366
399
400
401
401
401
368
En rsum ...........................................
Atelier .................................................
Quiz ................................................
Exercices ........................................
404
404
405
405
369
407
372
376
376
377
377
378
408
410
412
415
379
416
416
417
380
380
381
382
382
383
420
420
421
Localiser un numro
de chier disponible ........................
Linstruction Close .........................
383
384
385
386
422
424
427
428
431
432
433
VII
<
:
Atelier .................................................
Quiz ...............................................
Exercices ........................................
CHAPITRE 14. Image et multimdia ........
435
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................
436
438
439
440
445
450
451
453
460
463
463
464
464
465
467
467
468
469
470
472
473
475
479
481
482
483
484
>
:
433
433
434
VIII
484
486
487
490
502
503
503
504
504
504
505
506
506
507
510
512
512
519
522
522
524
527
529
529
529
530
531
532
533
536
541
542
544
564
564
564
565
565
567
568
568
572
574
575
577
578
579
582
586
587
588
590
592
593
597
598
599
599
599
601
601
602
609
613
613
615
617
619
620
624
Lassistant Migration
de document ActiveX .......................
624
625
626
626
628
633
635
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercices ........................................
636
637
637
638
638
639
641
Info-bulles et aide
"Quest-ce que cest ?" .......................
Adaptation de laide une application
Systmes daide HTML ...................
Laide RTF .....................................
Prparer le chier des sujets ...........
Crer les sauts hypertexte ...............
Crer un chier daide ....................
Afcher le chier daide ..................
Ajout daide "Quest-ce que cest ?" ..
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ................................................
Exercice ..........................................
642
644
644
647
647
648
649
655
658
659
660
661
661
662
663
664
668
669
670
672
IX
<
:
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................
672
673
674
675
677
677
680
685
686
686
687
688
688
688
689
693
694
697
699
701
703
703
704
710
724
En rsum ...........................................
Questions-rponses ............................
Atelier .................................................
Quiz ...............................................
Exercices ........................................
>
:
726
727
728
729
729
730
731
732
734
735
737
739
741
744
745
En rsum ...........................................
751
Questions-rponses ............................
752
Atelier .................................................
753
Quiz ................................................
754
Exercice ..........................................
754
Partie IV ................................................
755
757
Chapitre 1 ...........................................
757
Quiz ................................................
757
Exercice ..........................................
758
Chapitre 2 ...........................................
758
Quiz ................................................
758
Exercices ........................................
759
Chapitre 3 ...........................................
759
Quiz ................................................
759
Exercices ........................................
760
Chapitre 4 ...........................................
760
Quiz ................................................
760
Exercices ........................................
761
Chapitre 5 ...........................................
761
Quiz ................................................
761
Exercices ........................................
762
Chapitre 6 ...........................................
763
Quiz ................................................
763
Exercices ........................................
763
Chapitre 7 ...........................................
Quiz ...............................................
Exercices ........................................
764
764
765
Chapitre 8 ...........................................
Quiz ...............................................
Exercices ........................................
765
765
766
Chapitre 9 ...........................................
Quiz ...............................................
Exercices ........................................
767
767
768
Chapitre 10 .........................................
Quiz ...............................................
Exercices ........................................
769
769
769
Chapitre 11 .........................................
Quiz ...............................................
Exercices ........................................
770
770
771
Chapitre 12 .........................................
Quiz ...............................................
Exercices ........................................
771
771
772
Chapitre 13 .........................................
Quiz ...............................................
Exercices ........................................
773
773
774
Chapitre 14 .........................................
Quiz ...............................................
Exercices ........................................
774
774
775
Chapitre 15 .........................................
Quiz ...............................................
Exercices ........................................
777
777
778
Chapitre 16 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 17 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 18 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 19 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 20 .........................................
Quiz ................................................
Exercice ..........................................
Chapitre 21 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 22 .........................................
Quiz ................................................
Exercices ........................................
Chapitre 23 .........................................
Quiz ................................................
Exercice ..........................................
778
778
779
779
779
780
780
780
781
782
782
783
783
783
784
784
784
785
785
785
786
787
787
788
789
791
Index ........................................................
797
XI
<
:
Introduction
Tout au long de ces vingt et un chapitres, vous allez apprendre dvelopper des
applications Windows en Visual Basic. Nous nous efforcerons de rendre cet apprentissage aussi peu rbarbatif que possible. La simplicit du langage et le caractre visuel de
lenvironnement font de Visual Basic un outil des plus conviviaux. En fait, la cration
dune application en Visual Basic consiste en grande partie dans la disposition des
contrles qui formeront linterface. Votre application Windows apparat au fur et
mesure que vous ajoutez les objets, et telle quelle le sera lutilisateur. Visual Basic
est, ce propos, lun des tout premiers langages de programmation avoir intgr un
environnement rellement WYSIWYG (what you see is what you get, ou tel crit tel
cran).
Mme si vous navez encore jamais crit une seule ligne de code, ces vingt et un
chapitres sauront vous initier, dans la plus grande simplicit, aux techniques de
programmation professionnelles. Chaque chapitre traite son sujet spcique de fond en
comble en ltayant dexemples de code, dans un esprit de travaux pratiques. Exercices
et questions-rponses vous permettront daffermir et de mettre en uvre les notions
tudies dans chaque chapitre. Enn, les Projets bonus rpartis travers louvrage vous
invitent mettre "la main la pte", pour crer des applications compltes et fonctionnelles, et le fonctionnement est ensuite analys ligne par ligne. Ainsi, chaque acquis est
renforc dune mise en pratique. Vous crerez mme votre premier programme Visual
Basic ds le Chapitre 1 !
Enseigner la programmation Visual Basic au nouveau venu est une tche dlicate, en
raison notamment dune volution parallle des outils et des comptences que cela
requiert. Certains en viennent Visual Basic aprs avoir tt de langages de programmation plus avancs mais aussi plus fastidieux , tels que C++. Dautres ont
seulement lexprience que de QBasic. QBasic est un langage fourni sur la plupart des
PC depuis de nombreuses annes. Linterface textuelle de MS-DOS, lente et peu
commode, a valu QBasic son obsolescence. Pourtant, QBasic nest jamais quun
cousin un peu loign de Visual Basic, et en constitue une excellente passerelle. Enn, il
Introduction
y a les vrais dbutants, ceux qui nont jamais programm. Pour ceux-l, Visual Basic
nest pas la seule nouveaut : ce sont les principes de la programmation elle-mme quil
faudra aussi leur faire dcouvrir.
Visual Basic est bien plus quun simple langage de programmation. Ce langage pilote
en arrire-plan tout ce qui se passe pendant lexcution du programme. Mais, pour le
programmeur comme pour lutilisateur, cest linterface visuelle qui prime. Les applications Windows offent aux utilisateurs un haut degr dinteraction, grce au systme de
fentres et aux divers objets graphiques. Le code peut tre aussi efcace que lon
voudra, si linterface nest pas satisfaisante, lutilisateur naimera pas votre programme.
Vous serez harcel de demandes daide et de support. Et vos clients pourraient hsiter
acheter les mises jour ultrieures.
Cest pourquoi nous insisterons, particulirement au dbut de louvrage, sur cette question
de linterface utilisateur. Une fois que vous serez capable de concevoir et de crer une
interface viable et attrayante, alors seulement vous commencerez tudier la mcanique
interne des programmes.
Notre monde change rapidement. Les entreprises se renouvellent, les secteurs se restructurent, les activits se transforment. Vos programmes doivent suivre le mouvement. Ils
doivent tre exibles et aiss maintenir, an de pouvoir satisfaire tous les changements
demands par le client. Nous insisterons donc galement sur les tapes de conception,
dcriture, de test et de maintenance qui font un programme de qualit. Un programme est
crit une fois, mais actualis de nombreuses fois. En suivant les principes que nous vous
indiquerons quant lcriture du code, vous vous pargnerez pas mal de peine au moment
de la maintenance et de la mise jour.
Entre thorie et pratique, nous tenterons de vous faire dcouvrir le plus daspects
possible de Visual Basic, tout en prenant soin dviter les dtails qui ne concernent pas
le programmeur Visual Basic "normal". Nous nous attacherons lessentiel : vous aider
construire des programmes efcaces, concis, clairs, documents et faciles maintenir.
Voici, entre autres, ce que vous apprendrez :
>
:
Introduction
grer les contrles ActiveX qui permettent Visual Basic dexploiter des outils venus
dautres langages ou applications ;
crer vos propres objets dinterface grce aux fonctionnalits ActiveX de Visual
Basic ;
offrir, grce aux botes de dialogue communes, une interface familire vos
utilisateurs ;
permettre lutilisateur dexcuter une commande dun simple clic, par le biais des
barres doutils et des coolbars ;
programmer les API Windows qui permettront Visual Basic dexploiter des
fonctionnalits Windows supplmentaires ;
<
:
Partie
33
65
89
4. Cration de menus . . . . . . . . . . . . . . . . . . . . . . .
97
117
139
143
171
197
Rsum de la Partie I . . . . . . . . . . . . . . . . . . . . .
219
Partie II
Cette partie vous apprend manuvrer dans lenvironnement Visual Basic, crer les
lments visuels de votre application Windows, et vous enseigne les fondements du
langage de programmation Visual Basic.
Ds le premier chapitre, vous allez crer une application semblable aux applications
Windows que vous avez dj eu loccasion dutiliser. Les chapitres suivants vous font
dcouvrir les diffrents objets et techniques qui rendront vos programmes plus puissants.
A la n de chacun de ces chapitres, une srie de questions et dexercices vous permet de
rcapituler vous-mme les points importants et de les mettre en pratique.
La programmation exige plus que la simple connaissance du langage et de ses commandes.
En progressant dans les chapitres qui suivent, vous comprendrez mieux limportance
dcrire des programmes clairs et bien documents. Le contexte dans lequel les utilisateurs exploitent vos applications change, et vos applications doivent changer
galement. En suivant les principes et exemples tudis ds le dbut, vous apprendrez
crire des programmes faciles maintenir.
Visual Basic sert concevoir des programmes Windows. Dans cette partie, nous passerons en revue tous les lments (ou presque) quimplique cette interface. Vous apprendrez ainsi disposer des contrles sur la feuille, crer et rpondre aux menus, ainsi
qu grer les autres types dinteractions entre lutilisateur et le programme. Vous
commencerez alors matriser le cur de Visual Basic : le langage de programmation.
Visual Basic est lun des outils de programmation les plus conviviaux. Le dveloppement dune application consiste en grande partie disposer des objets graphiques et
en rgler le comportement laide de proprits. Visual Basic est en fait le seul vrai
langage de programmation que les dbutants puissent apprendre si facilement. Il
permet galement aux programmeurs avancs de crer des applications Windows puissantes.
Que vous soyez novice ou un peu expriment, vous serez surpris de dcouvrir ce que
Visual Basic peut faire pour vous, et ce que vous pouvez faire avec Visual Basic.
>
:
Chapitre
Prsentation
de Visual Basic
Visual Basic 6 est la dernire et la meilleure version du langage de programmation Visual Basic de Microsoft. Si lcriture de programmes est parfois une
assommante corve, Visual Basic rduit les efforts fournir et peut faire de cette activit
une partie de plaisir. Avec Visual Basic 6, la plupart des tches de programmation
deviennent aussi simples que de dplacer des objets graphiques laide de la souris.
Nous commenons ici un enseignement de Visual Basic en vingt et un jours. Avant la n
de ce chapitre, vous aurez cr votre toute premire application Visual Basic. Au terme
des trois prochaines semaines, vous matriserez Visual Basic 6 et serez en mesure de
dvelopper des applications efcaces selon vos besoins.
Voici ce que nous tudierons aujourdhui :
Partie II
ition
Dfin
Info
Bien que ce langage ft conu pour les dbutants, les programmes BASIC restaient quelque
peu sotriques, et demandaient malgr tout un apprentissage. Le Listing 1.1 montre un
exemple de programme crit en BASIC, dont le but est dafcher le carr des nombres de 1
10. Mme si vous pouvez, avec quelques rudiments de langue anglaise, en percer les
grandes lignes, ce programme nest certainement pas ce qui se fait de plus clair ; une
comprhension minimale du BASIC est requise pour pleinement comprendre la raison
dtre et larticulation de ses lments.
Info
>
:
Les programmes sont souvent constitus de plusieurs programmes interagissant les uns sur les autres ; cest pourquoi on dsigne souvent par
application lensemble des chiers dun programme. Le programme, ou
application crite dans un langage de programmation, est un jeu dinstructions qui dirige lordinateur.
Listing 1.1 : Les premiers programmes BASIC, o lon numrotait les lignes,
taient quelque peu sotriques
10
20
30
40
50
60
70
80
90
Info
Ne pas faire
Ne paniquez pas pour des histoires de carrs. Vous naimez pas les maths ?
Pas de problme : Visual Basic fera votre place tous vos devoirs de calcul.
Carrs de 1 10
Valeur
carr
1
1
2
4
3
9
4
16
5
25
6
36
7
49
8
64
9
81
10
100
Notez que le BASIC est un langage strictement textuel. Lentre et la sortie des donnes
se font en mode texte ; les fentres et autres graphismes sont lapanage des programmes
modernes.
Visual Basic na pas t cr directement depuis le BASIC original. Bien que, en trentecinq ans, le BASIC ait volu sous beaucoup de rapports, lessentiel de sa structure a t
conserv. Le BASIC fut choisi par Microsoft comme langage de programmation principal du premier systme dexploitation MS-DOS ; mais il a fallu le perfectionner et
lenrichir de nouvelles fonctionnalits, jusqu le rditer sous de multiples avatars :
MBASIC (pour Microsoft BASIC), GWBASIC, BASICA (pour BASIC avanc), QuickBASIC, et enn Qbasic encore fourni sur les CD-ROM Windows.
<
:
Partie II
A travers cette volution, le langage BASIC a gard sa nature simple, tout en senrichissant
continuellement de nouvelles et puissantes commandes. Le caractre "texte pur" de
langages comme QBasic permet aux programmeurs novices dacqurir une certaine
vitesse de travail plus facilement quavec la plupart des langages graphiques, comme
Visual C++. An de maintenir cette facilit dutilisation, Microsoft a voulu garder aux
diffrentes versions du BASIC leur nature interprte, oppose aux langages compils.
Avec un langage interprt, le programmeur peut excuter immdiatement son
programme, voir sans dlais les rsultats et les ventuelles erreurs. Ce feedback instantan est capital pour les dbutants, qui ont besoin de rponses rapides quand ils apprennent programmer. Les langages compils sexcutent plus rapidement et sont mieux
appropris au dveloppement dapplications commerciales, mais requirent beaucoup
plus defforts et dapprentissage.
Info
Alors que Windows devenait plus populaire, Microsoft a ralis que QBasic, langage
purement textuel, ntait pas exploitable comme langage de programmation "fentre".
On a donc dvelopp Visual Basic, langage fond sur le BASIC, mais bien mieux adapt
aux environnements modernes. A la diffrence de QBasic et des autres avatars du
BASIC, tous textuels, Visual Basic est un langage visuel. Bien quon rencontre aussi en
Visual Basic du code plus ou moins semblable au programme du Listing 1.1, la plus
grande partie dun programme Visual Basic est constitue dlments graphiques sans
aucune ressemblance avec le code " lancienne". La Figure 1.1 montre un cran
incluant de nombreux lments de programmation Visual Basic.
>
:
ition
Dfin
Info
Bien avant davoir referm ce livre, vous serez capable de dchiffrer tous les
lments de la Figure 1.1. Le fouillis apparent de lcran dconcerte un peu
au dbut, mais la simplicit de Visual Basic prend vite le pas.
10
Figure 1.1
Lcran de
programmation Visual
Basic peut paratre
un peu encombr,
mais il savre trs
simple dutilisation.
Si Visual Basic est devenu lun des langages les plus utiliss, cest que, en plus dtre
graphique et simple dutilisation, il est la fois interprt et compil. A mesure que
vous crivez votre programme Visual Basic, vous pouvez le tester en lexcutant de
faon interprte, jusqu ce que tous les bogues aient t isols et limins. Une fois le
programme dment test et tous les problmes rgls, il ne reste qu compiler un
excutable rapide et sr (personne ne peut modier facilement le programme), prt
tre distribu aux utilisateurs. En faisant de la compilation une simple option de menu,
Visual Basic prend sur lui les tapes les plus dlicates de la compilation (notamment un
procd cabalistique du nom ddition de liens), que les autres langages obligent
effectuer soi-mme.
ition
Dfin
Un bogue (de langlais bug) est une erreur dans le programme. Si votre
programme ne sexcute pas correctement, il vous faudra le dboguer, cest-dire liminer une une toutes les erreurs.
11
<
:
Partie II
Windows. Avec Visual Basic, Microsoft a donn la communaut des programmeurs les
leons suivantes :
Avec une interface adquate, un langage de type BASIC peut trs bien fonctionner
en environnement Windows.
Visual Basic peut tre tantt langage interprt, tantt langage compil, selon les
besoins du programmeur.
Loin dtre obsolte, un langage fond sur le BASIC peut devenir le langage le plus
utilis dans le monde.
>
:
12
Ce nest pas seulement le langage BASIC sous-jacent qui rend Visual Basic
facile apprendre et utiliser. La plus grande part du dveloppement dun
programme Visual Basic revient glisser-dposer (avec la souris) des
lments visuels sur lcran. Au lieu dcrire des sries complexes dinstructions dentre et de sortie pour grer les interactions avec lutilisateur, il
vous sufra de faire glisser travers lcran des contrles, tels que zones de
texte et boutons de commande ; Visual Basic se charge de faire fonctionner
proprement les contrles lorsque lutilisateur excutera le programme.
ition
Dfin
Lutilisateur est celui qui utilise le programme. Vous, le programmeur qui crit
les programmes, tes aussi utilisateur de vos propres programmes et de ceux
qucrivent les autres. Le sytme de programmation Visual Basic nest rien
dautre quun programme dont on se sert pour crer dautres programmes.
Visual Basic Edition Initiation. Lessentiel de Visual Basic, avec un jeu complmentaire doutils standards tout ce dont vous avez besoin pour vous lancer dans
la programmation Visual Basic. Vous trouverez, dans la documentation complte du
Microsoft Developer Network (rseau des dveloppeurs Microsoft), toute laide
ncessaire lapprentissage et lutilisation de Visual Basic.
Info
La version spciale INFA de Visual Basic est livre avec le coffret Visual Studio.
Visual Studio est un environnement de programmation qui supporte plusieurs
langages Microsoft, dont Visual Basic, Visual C++ et Visual J++. Lenvironnement Visual Basic est identique celui quemploient les utilisateurs dautres
langages. Si vous vous essayez un autre langage de programmation Microsoft, vous naurez donc pas matriser un nouveau systme de menus et de
botes de dialogue.
13
<
:
Partie II
ce
Astu
>
:
14
Le processus de programmation
Avec le temps, vous tablirez votre propre faon dcrire les programmes selon vos
besoins. Cependant, il convient de suivre ces quelques rgles et tapes lorsque vous
programmez en Visual Basic :
1. Dterminer ce que votre application devra faire en crant un schma gnral.
2. Crer la partie visuelle de votre application (les crans et les menus avec lesquels
lutilisateur interagira).
3. Ajouter le code en langage Visual Basic qui reliera tous ces lments visuels et qui
automatisera le programme.
4. Tester lapplication an de dceler et dliminer tous les bogues.
5. Une fois les tests effectus, compiler le programme et distribuer lapplication
compile aux utilisateurs.
Info
Mme si vous avez test votre programme pour le purger de tous ses bogues
avant de distribuer lapplication, il est toujours possible quun utilisateur
dcouvre un ou plusieurs nouveaux bogues. Les tests les plus approfondis ne
garantissent jamais labsence dnitive de bogues. Plus votre programme est
complexe, plus il fait de choses, plus grandes sont les chances quun bogue
pointe sa vilaine tte au moment o vous et vos utilisateurs vous y attendez le
moins. Malgr cette foncire impossibilit de retirer tous les bogues, il faut
tester, tester et tester encore. Eprouver toutes les possibilits du
programme pour touver le plus grand nombre possible de bogues avant de
compiler et de distribuer lapplication.
15
<
:
Partie II
Avant Visual Basic, lcriture de programme constituait une tche fastidieuse sous
plusieurs rapports. Dans un environnement textuel, il fallait dabord dessiner sur le
papier tous les crans qui seraient afchs. Il fallait ensuite montrer tout cela aux utilisateurs pour vrier que les dessins correspondaient exactement leurs souhaits. Si vous
conceviez un programme destin une distribution de masse, comme un jeu ou une
application commerciale "gnraliste", vous deviez coucher sur le papier tous les
crans, crer de complexes ux de donnes vers, et depuis, ces divers crans, crer les
chiers rsidents ncessaires lexcution du programme, et planier peu prs chaque
dtail avant mme de vous mettre au clavier.
Grce la nature visuelle de Visual Basic, vous ne touchez au clavier que bien plus tard
dans le processus de programmation. Au lieu dutiliser du papier, vous dessinez directement vos crans laide des outils Visual Basic. La Figure 1.2 prsente un cran de ce
genre. Pour crer un tel cran, aucun code nest ncessaire : tout ce que vous avez
faire, cest de faire glisser les divers contrles sur la fentre Feuilles.
Figure 1.2
Visual Basic vous
permet de concevoir
et de crer les crans
mesure que
vous dveloppez
le programme.
Info
Vous pouvez tester vos crans de programme (chaque feuille reprsentant la trame dun
cran) avant mme dajouter le code ; en effet, Visual Basic vous permet dexcuter
interactivement le programme ds la cration de la premire feuille. Vous pouvez ainsi
>
:
16
ce
Astu
La maintenance du programme
Les bogues ne constituent pas la seule raison qui puisse vous pousser modier encore
un programme, alors que vous croyez en avoir termin. La maintenance du programme
est indispensable du fait que les exigences changent, les entreprises changent, les lois
changent. Vous devez galement retoucher le programme an quil reste viable et
dactualit ; vous devrez rgulirement le mettre jour pour prendre en compte les
changements qui laffectent. En outre, les utilisateurs auront toujours de nouvelles
exigences sur ce que le programme doit faire.
ition
Dfin
En fait, un programme est crit une fois, mais retouch de nombreuses fois. Mieux vous
assurez cette maintenance du programme, plus votre programme sera actuel et efcace.
Vous pouvez dcider de distribuer une nouvelle version du programme, avec un numro
de version diffrent qui safche sur lcran de dmarrage et informe les utilisateurs de
la rcence du logiciel install sur leur systme.
ce
Astu
17
<
:
Partie II
A mesure que vous avancerez dans votre dcouverte du langage de programmation Visual
Basic, vous apprendrez crire clairement votre code, ainsi qu tablir la documentation
du programme. Plus vous ajoutez de commentaires votre programme, plus vous crivez
clairement le code au lieu duser dinstructions obscures et alambiques, plus il vous sera
facile, ainsi qu dautres, de traquer des erreurs et dentretenir le programme.
ition
Dfin
Il convient dajouter les commentaires mesure que vous crivez le programme, car
cest l que vous tes le plus mme de le comprendre et de le dcrire. Si vous
attendez davoir termin lapplication, comme le font beaucoup de programmeurs,
cette application risque de ne jamais tre correctement documente ; en effet, dautres
projets simposeront vous, et les tches documentation sont souvent mises de ct une
fois quun projet est achev.
A titre complmentaire, il peut tre utile dtablir une documentation externe,
augmente de captures des diffrents crans du programme et dindications sur la faon
dont lutilisateur lance, utilise et quitte le programme. Plus complte sera la documentation que vous leur fournirez, plus facilement les utilisateurs matriseront votre
application ; et plus ils feront de bons clients.
>
:
18
Il est parfois difcile de choisir entre crer lapplication ex nihila et tablir la structure du
programme laide dun assistant pour ensuite le naliser selon les exigences du projet.
Si lon a dj dvelopp une application semblable celle qui est requise, on peut
simplement faire une copie de la premire et la retravailler selon les nouveaux impratifs.
Avec le temps, vous apprendrez apprcier les situations et oprer les bons choix.
Pour vous aider dans vos premiers pas, cette section vous guidera dans la cration de
votre toute premire application. Vous dcouvrirez avec quelle facilit lassistant
Cration dapplications vous permet de dnir la structure du programme. Bien que
lapplication rsultante ne soit pas vraiment exploitable comme telle (aprs tout, ce
nest quun squelette), vous serez surpris de tout ce que lassistant Cration dapplications peut crer automatiquement. La leon de demain vous enseignera crer une
application ex nihilo, sans recourir lassistant Cration dapplications.
Info
Cela peut paratre surprenant, mais vous crerez sans doute beaucoup plus
souvent vos applications ex nihilo, ou partir dune application prexistante,
que vous nutiliserez lassistant Cration dapplications. Lassistant donne un
prprogramme tout fait fonctionnel ; mais vous dvelopperez avec le temps
un style de programmation personnel, et vous prfrerez dans la plupart des
cas travailler sur la base dune de vos crations prcdentes. Le style vient
avec le temps et la pratique : soyez patient et explorez Visual Basic. Faites
des essais, nayez pas peur de vous fourvoyer, et attendez-vous commettre des
erreurs chaque fois que vous crirez un programme. La programmation, cest
de la cration. Et vous dcouvrirez combien, avec Visual Basic, cette cration
peut tre plaisante.
19
<
:
Partie II
Figure 1.3
Lassistant Cration
dapplications
peut tre slectionn
depuis la bote
de dialogue Nouveau
projet.
ition
Dfin
Info
Le projet est la somme des chiers qui constituent votre application. Une
seule application peut tre compose de plusieurs chiers, rassembls sous
le nom de projet. Une partie de ces chiers contient le code ; une autre
partie contient des descriptions dcrans lintrieur de leurs fentres de
feuilles respectives ; une autre, enn, contient des informations avances qui
permettront votre programme de communiquer avec dautres programmes
et modules au sein du systme dexploitation.
Faire
Pour que la bote de dialogue Nouveau projet cesse de safcher automatiquement chaque dmarrage, cochez la case Ignorer cette bote de dialogue
lavenir. Au prochain dmarrage de Visual Basic, elle napparatra pas.
Lassistant se lance lorsque vous double-cliquez sur licne Assistant Cration dapplications. Le premier cran qui safche est un cran dintroduction qui explique que
lassistant est prt commencer. (Cet cran vous permet galement de charger un prol
dnissant des options particulires ; nous ny aurons pas recours dans cet ouvrage.)
Comme avec la plupart des assistants, lorsque vous avez termin votre lecture et vos
slections sur un cran, vous cliquez sur le bouton Suivant pour passer lcran suivant.
La Figure 1.4 montre la page suivante de lassistant, dans laquelle vous devez choisir un
type dinterface.
>
:
20
Figure 1.4
Le type dinterface
dtermine la faon
dont votre application
manipulera les fentres
multiples.
Interface monoducument (SDI). Une seule fentre peut tre ouverte la fois dans
lapplication. Vos applications seront, dans la plupart des cas, des applications SDI.
Cliquez sur lune de ces options pour obtenir une description et afcher un schma en
rduction dune fentre de programme type. Vous emploierez souvent linterface monodocument, car la plupart des applications ne ncessitent quune seule fentre de donnes
ouverte la fois. Pour ce premier exemple, slectionnez loption Interface monodocument.
Lcran de lassistant vous demande aussi le nom de votre projet. Le nom par dfaut,
Projet 1, laisse un peu dsirer, aussi le renommerez-vous en PremireApp (les espaces
sont interdites). Cliquez ensuite sur Suivant pour afcher la prochaine fentre de
lassistant, telle quelle est reproduite en Figure 1.5.
Lassistant Cration dapplications ajoute au menu de lapplication les options que vous
avez slectionnes. Il sagit des options classiques que lon retrouve dans la plupart des
applications Windows. Les menus eux-mmes seront du type menu droulant standard.
Vous avez le choix entre diverses options pour la barre de menus (Fichier, Edition, etc.)
ainsi quentre des options de sous-menus, telles que Nouveau, Ouvrir ou Fermer.
21
<
:
Partie II
Figure 1.5
Slectionnez
les options inclure
dans le menu
de votre application.
Lesperluette (&) prcdant la lettre dun nom de menu indique la touche de raccourci,
qui apparatra en soulign ; par exemple, &Nouveau indique que Nouveau (voyez le
soulignement) apparatra dans le menu et que lutilisateur pourra accder cette
commande en appuyant sur Alt-N. Pour rellement placer le caractre esperluette dans
le nom, placez-en deux ; ainsi, le nom de menu S&&SM donnera S&SM. Pour cette
application, laissez toutes les options telles quelles (&Fichier, &Edition, Afc&hage,
Fe&ntre et &? doivent tre coches). Cliquez sur Suivant pour poursuivre.
Info
Sur lcran suivant de lassistant, reproduit en Figure 1.6, vous choisissez les boutons de
barre doutils que contiendra votre application. Comme vous pouvez le constater, lassistant
Cration dapplications fait dj une bonne partie du travail. En crant la barre doutils
initiale, lassistant se charge dune corve qui, autrement, vous aurait chue. Le panneau de
gauche prsente les boutons disponibles, tandis que le panneau de droite afche les boutons
(et les sparateurs qui les espacent) prslectionns pour lapplication. Comme pour les
options de menus de lcran suivant, nous accepterons tous les paramtres par dfaut.
Cliquez sur Suivant.
Lassistant afche maintenant lcran Ressources, dans lequel vous slectionnez les
ressources qui seront exploites par votre programme, tels que des chiers texte multilangages. Les programmes simples ne requirent gnralement pas de ressources externes. Pour cet exemple, maintenez loption par dfaut Non. Cliquez sur Suivant pour
continuer.
>
:
22
Figure 1.6
En crant la barre
doutils initiale,
lassistant Cration
dapplications vous
fait gagner du temps.
Lcran qui safche, Connexion Internet, vous permet dintgrer votre application
une interface Internet. Si vous slectionniez loption Oui dans cette fentre (ce que vous
ne ferez pas pour linstant), lassistant Cration dapplications ajouterait lapplication
un navigateur Internet complet, qui fonctionnerait en gros comme Internet Explorer. Vos
applications peuvent tre relies lInternet sans que vous ayez programmer quoi que
ce soit. Lorsque lutilisateur entre une adresse Internet (ou URL, pour Uniform
Resource Locator localisateur uni de ressources), comme http://www.ssm.fr, le
navigateur afche la page Web correspondante dans la fentre de navigation de lapplication, utilisant pour se connecter le service Internet par dfaut du PC. Une page de
dmarrage par dfaut peut tre spcie, qui safchera automatiquement ds que
lutilisateur lance le navigateur.
ntion
Atte
Lintgration dun navigateur Web votre application suppose que lutilisateur dispose dune connexion Internet. Si tel nest pas le cas, une erreur sera
gnre lorsque lutilisateur tentera de lancer le navigateur.
Cette premire application ne ncessitant pas daccs lInternet, nous ne modierons pas
les slections par dfaut de cet cran. Cliquez sur Suivant. La fentre qui safche vous
propose dintgrer votre application les crans standards suivants :
23
<
:
Partie II
Pour les besoins de notre application, cliquez sur loption Bote de dialogue A propos de.
ce
Astu
ition
Dfin
Le bouton Modles de feuilles vous permet de choisir entre plusieurs modles, disponibles depuis le dossier Modles de Visual Basic. Les modles
slectionns sont intgrs lapplication. Le modle Addin (complment)
permet dajouter une feuille de votre propre librairie. Le modle Odbc log in
(ouverture de session ODBC) offre aux utilisateurs un accs aux bases de
donnes avances. Le modle Tip of the day (Astuce du jour) afche de
faon alatoire une rubrique conseil chaque dmarrage de lapplication.
Un modle de feuille est une feuille prdnie, mais que vous pouvez
modier selon vos besoins. Les modles de feuilles proposent les fonctionnalits susceptibles dtre utilises dans diffrentes applications.
Aprs avoir slectionn la feuille standard Bote de dialogue A propos de, vous pouvez
cliquer sur Suivant pour jeter un coup dil lcran Feuille daccs aux donnes, qui
vous permet de rattacher lapplication des chiers externes de bases de donnes. Nous
nutiliserons pas cette fonction pour linstant ; vous pouvez donc cliquer sur le bouton
Terminer an que Visual Basic achve la cration de lapplication initiale.
Info
Bravo ! Vous venez de crer votre premire application, sans connatre grand-chose de
Visual Basic et sans rien connatre du langage de programmation Visual Basic. Au bout
de quelques instants, Visual Basic vous fait savoir que la cration de votre application
est termine. Cliquez sur OK pour faire disparatre la bote de dialogue. Vous pouvez
maintenant lancer votre application.
ce
Astu
>
:
24
Avec lassistant Cration dapplications, vous avez produit une programme tout fait
fonctionnel (bien que squelettique et limit), simplement en rpondant des questions.
La nouvelle application peut tre dcrite comme suit :
Une fentre de programme standard safche, qui peut tre redimensionne et
dplace. Le titre du projet, PremireApp, apparat dans la barre de titre de la fentre.
Une barre dtat afche la date et lheure. Cette barre dtat peut tre dsactive
depuis le menu Afchage.
Un menu de travail propose quatre options. Seule loption A propos du menu "?"
fonctionne (essayez-la) ; mais les options de menu classiques, telles que Fichier,
Ouvrir (qui ouvre une bote de dialogue de localisation de chier) ou Edition,
Couper, sont dj l attendre que vous leur affectiez du code actif. Suivant en cela
la convention Windows, la bote de dialogue A propos de propose un bouton Infos
systme.
25
<
:
Partie II
ce
Astu
La fentre Infos systme afche un rcapitulatif complet du systme dexploitation et du matriel de lutilisateur. Visual Basic gnre ce rcapitulatif en
excutant un programme spcique qui dtermine la conguration exacte de la
machine. (Ce programme Infos systme peut tre appel depuis dautres emplacements que la bote de dialogue A propos de.) Un tel rcapitulatif peut se
rvler trs utile lorsque les utilisateurs vous exposent un problme li lune
de vos applications. Il suft de demander lutilisateur dafcher pour vrier
que son systme dexploitation et son matriel rpondent bien aux exigences du
programme. La fentre Infos systme, en outre, permet de consulter rapidement
ltat des ressources, telles que lespace disque et la mmoire disponibles.
Une barre doutils standard est afche, laquelle vous pouvez adjoindre de nouvelles fonctionnalits, et qui peut tre active et dsactive depuis le menu Afchage.
Cette application ne fait pas grand-chose, mais elle est fonctionnelle et ne demande plus
de votre part quun travail de nition. Vous pouvez facilement modier et enrichir
lapplication, ses menus, ses fentres. Pour linstant, lapplication nest que le rceptacle de fonctionnalits venir. Cependant lassistant Cration dapplications, en gnrant
ce canevas encore grossier, vous a pargn bien de la peine. Comme vous le verrez dans
la leon de demain, il est assez facile de crer de toutes pices un projet fonctionnel ;
mais lassistant Cration dapplications jette les bases requises par la plupart des applications. Alors pourquoi sen priver ?
Pour quitter lapplication en cours dexcution, choisissez Fichier, Quitter. Visual Basic
demande si vous souhaitez enregistrer le projet ; rpondez non. Inutile denregistrer ce
dbut dapplication, puisquil suft de lancer lassistant Cration dapplications de
nouveau pour revenir au mme point.
La programmation vnementielle
La Figure 1.8 montre une fentre de programme Windows. Cette fentre contient
plusieurs types de contrles Windows, tels que boutons de commande, cases cocher et
barres de dlement. Ces contrles forment seulement un exemple des multiples contrles
Windows que lenvironnement de programmation Visual Basic met votre disposition.
De par sa nature visuelle, Visual Basic exige ce type de contrles. En effet, et contrairement aux programmes crits en langages textuels " lancienne", les programmes
Windows ragissent des vnements. Un vnement peut tre provoqu par lun de ces
contrles, mais aussi ressortir aux activits internes, comme lhorloge du PC. Les vnements se produisent toujours selon un ordre alatoire.
>
:
26
Figure 1.8
Les programmes
Windows ragissent
des vnements.
Zone de liste
Cases
cocher
Barres de
dfilement
Boutons de commande
Par exemple, lutilisateur du programme de la Figure 1.8 pourrait cliquer sur lun des
boutons, cocher lune des cases ou activer lune des zones de liste droulante. Cet
utilisateur peut procder des manipulations diffrentes, dans un ordre diffrent,
chaque fois quil se sert du programme. Pour rpondre efcacement aux actions de
lutilisateur et aux autres activits propres dclencher un vnement, on emploie des
techniques de programmation vnementielle.
ition
Dfin
Info
Votre programme doit grer les vnements alatoires. Mais, dans le cas o
plusieurs programmes Windows sexcutent en mme temps, chacun doit
tre capable danalyser et de rpondre aux vnements qui le concernent.
Comme le montre la Figure 1.9, Windows gre quelques vnements, mais passe le plus
souvent la main aux programmes en cours dexcution. Windows tant un systme
dexploitation multitche, plusieurs programmes peuvent tre excuts simultanment.
Votre programme doit traiter chacun des vnements appropris mesure quils se
27
<
:
Partie II
produisent, tout en ignorant ceux qui ne le concernent pas. Par exemple, un programme
cens afcher un message davertissement intervalles rguliers doit vrier auprs de
lvnement horloge le laps de temps qui sest coul depuis le dernier message. Tout
autre programme simultanment en xcution, et qui na pas vrier lheure, devra
ignorer les messages correspondants envoys par Windows.
Figure 1.9
Votre programme
doit ragir certains
vnements en
ignorant les autres.
Evnement
n 1
Evnement
n 2
Evnement
n 3
Evnement
n 4
Evnement
n 5
Windows reoit
les vnements
Windows traite
une partie des
vnements
Windows
Windows passe les
autres vnements
aux applications
concernes
Evnement
n 1
Application n1
Evnement
n 2
Evnement
n 3
Application n2
>
:
28
Info
La Figure 1.10 montre une fentre contenant de nombreux boutons de commande. Si,
pour aucun de ces boutons, le code ne spciait un comportement prcis, ils ragiraient
tous de la mme manire aux clics de la souris : senfoncer (visuellement) et dclencher
un vnement Windows "clic". Cest pourquoi lon affecte chacun des proprits
particulires, quant la lgende, la taille, la couleur, etc.
Figure 1.10
Chacun des multiples
contrles est
diffrenci par
les proprits que
lui affecte le code.
Une fois que vous avez plac les contrles sur la feuille et que vous leur avez spci des
proprits individuelles, vous tes prt crire le code qui rpondra aux vnements
dclenchs par ces contrles. Un mme contrle peut dclencher plusieurs types dvnements. Par exemple, un mme bouton de commande peut correspondre un vnement
clic ou un vnement double-clic, selon ce que fait lutilisateur. Vous crivez le code pour
dterminer lequel de ces vnements doit tre ignor, lequel doit tre gr, et comment.
ce
Astu
Si vous crivez du code pour un vnement particulier, le programme rpondra cet vnement ds quil se produira dans le cours de lexcution. Si
toutefois vous naffectez pas de code lvnement, et quil se produise,
votre programme ignorera linformation transmise par Windows pour cet
vnement.
29
<
:
Partie II
Un objet est un lment de programme Visual Basic, tel quun contrle, une
feuille ou un module de code contenant des instructions.
En rsum
Vous voil bien en route vers la matrise de Visual Basic. Vous avez appris dans ce
chapitre les bases de la programmation. Une fois assimil le processus de programmation, vous tes quip pour commencer lutilisation de Visual Basic, lun des environnements de programmation les plus performants daujourdhui.
Cette leon vous a enseign concevoir et crire un programme. Visual Basic a boulevers les mthodes de conception des programmeurs, par la facilit avec laquelle on
peut prototyper le concept du programme et passer de ce prototype au produit ni. En
programmation, il faut toujours revenir sur son ouvrage. Il est rare quun programme
fonctionne parfaitement du premier coup ; mais, comme nous lavons vu, lenvironnement interactif de Visual Basic vous pargne beaucoup de travail et donc beaucoup
derreurs.
Lassistant Cration dapplications gnre un squelette de programme que vous enrichissez par la suite pour en faire une application autonome, fonctionnelle et conforme
vos besoins. Enrichir signie ajouter des contrles, dnir leurs proprits, et crire le
code qui permettra au programme de ragir et dinteragir correctement avec ces contrles. Dans les chapitres qui suivent, vous apprendrez matriser ces dtails pour aboutir
un programme efcace.
>
:
30
Questions-rponses
Q Faut-il suivre les tapes du processus de programmation (conception, cration
des lments visuels, etc.) pour tous les programmes Visual Basic, ou seulement
pour les petits programmes ?
R Plus le programme est important, plus il est important de suivre cette procdure ; et
le programme se complexie rapidement, mesure que vous lenrichissez de
nouvelles fonctionnalits. Telle fonctionnalit peut affecter telle autre ; aussi, plus
vous tes prvoyant, plus vous planiez, et moins vous aurez retravailler et
corriger par la suite. Heureusement, lenvironnement Visual Basic facilite la modication des programmes, mme quand des changements majeurs dans la structure
sont impliqus. Quand vous utilisez lassistant Cration dapplications, bien sr, la
conception est la deuxime tape. A mesure que vous progresserez dans ce livre,
vous apprendrez crire et concevoir efcacement vos programmes.
Q Lassistant Cration dapplications gnre-t-il du code ?
R Lassistant Cration dapplications gnre du code, mais pas beaucoup. Chaque
instruction a pour but de faire excuter au programme une tche spcique : effectuer un calcul, etc. En tant que programmeur, cest votre boulot que de produire le
code spcique.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous
trouverez ces rponses lAnnexe A.
Quiz
1. Sur quel langage Microsoft sest-il fond pour laborer Visual Basic ?
2. Pourquoi Visual Basic est-il adapt aux dbutants comme aux programmeurs
conrms ?
3. Quest-ce qui est le plus important pour les novices en Visual Basic : le langage de
programmation ou linterface visuelle ?
4. Quelle est la diffrence entre une fentre de feuille est une fentre dapplication ?
31
<
:
Partie II
Exercice
En vous servant de lassistant Cration dapplications, crez une application qui inclut,
en plus des diverses options que vous avez choisies pour lexemple de ce chapitre, un
navigateur Internet et un Ecran de prsentation au dmarrage. Excutez lapplication
pour voir le fonctionnement de laccs Internet. Si vous ne disposez pas dune
connexion Internet, vous obtiendrez un message derreur en essayant de lancer la fentre de navigation. Mais crez le projet quand mme, pour la pratique.
>
:
32
Chapitre
Lenvironnement
et les outils Visual Basic
Maintenant que vous avez pu voir combien lassistant Cration dapplications est simple
dutilisation, vous tes prt faire le plongeon : crer un programme partir de zro.
Il nest pas trs difcile de crer une application sans laide de lassistant Cration
dapplications, mais vous devez nanmoins comprendre lenvironnement Visual Basic
avant de vous atteler lcriture. Au terme de ce chapitre, vous devriez tre capable de
vous reprer dans lenvironnement Visual Basic pour crer vos programmes comme un
pro : " la main".
Voici ce que nous tudierons aujourdhui :
33
Partie II
Barre d'outils
Bote
outils
Zone d'dition de
la fentre Feuilles
Fentre Proprits
Fentre Projet
Fentre
Prsentation
des feuilles
>
:
34
table. Mme si vous ne compilerez pas tout de suite vos applications, cest licne EXE
standard que vous slectionnerez le plus souvent dans votre apprentissage de Visual
Basic.
ition
Dfin
Info
ce
Astu
Une application EXE standard est une application qui peut tre compile ou
excute de faon interprte.
La barre doutils
Selon votre utilisation de Visual Basic, la barre doutils situe sous la barre de menus se
modie. En tout, quatre barres doutils sont disponibles :
Dbogage. Safche lorsque vous employez les outils de dbogage pour corriger votre
programme.
Lafchage de ces barres doutils peut tre activ et dsactiv depuis le menu Afchage,
Barres doutils. Chaque barre doutils prsente une multitude de boutons, grce
auxquels vous pouvez accder aux fonctionnalits courantes sans passer par une succession de commandes de menus. Dans le cours de vos dveloppements Visual Basic, vous
rencontrerez de nombreux boutons trs utiles, alors que dautres ne vous seront jamais
daucun usage. Nous signalerons, dans ces leons, des boutons de barres doutils
35
<
:
Partie II
Faire
Quand vous ne reconnaissez pas un bouton, maintenez-y un instant le
curseur de la souris : une info-bulle safche, qui indique la fonction du
bouton.
Ne pas faire
Nessayez pas de mmoriser tous les boutons de toutes les barres doutils.
ce
Astu
La Bote outils
La fentre Bote outils nest pas une barre doutils. Comme son nom lindique, il
sagit dune collection doutils grce auxquels vous disposez les contrles sur la feuille.
En progressant dans ces leons, vous apprendrez ajouter et retirer les boutons de la
Bote outils. La Figure 2.2 montre un jeu des outils les plus communs.
Avec la Bote outils, vous ne serez jamais court doutils. Si votre application requiert
plus dun bouton de commande, loutil CommandButton de la Bote outils vous les
fournira. Les boutons de la Bote outils gnrent les outils votre feuille mesure que
vous les demandez. Cest ce que nous verrons la dernire section de cette leon, o
nous crerons une application ex nihila.
La fentre Feuille
Cest dans la fentre Feuille que vous effectuerez la plupart de vos oprations. Toutes
les feuilles de vos programmes, qui formeront larrire-plan visible de lapplication,
seront cres dans la zone centrale ddition o safche la fentre Feuille. Vous pouvez
ajuster la fentre Feuille de faon donner aux fentres cres lintrieur les dimensions voulues. (Les barres de dlement vous permettent de faire dler le contenu de la
fentre Feuille pour quapparaissent les lments masqus.)
>
:
36
Figure 2.2
La Bote outils
contient les outils
qui, sur votre feuille,
deviennent
des contrles.
Pointeur
de slection
Label
Frame
Case cocher
ComboBox
Barre de dfilement
horizontale
Timer
Zone de liste Dossier
PictureBox
Zone de texte
Bouton de
commande
Bouton d'option
Zone de liste
Barre de dfilement
verticale
Zone de liste Lecteur
Zone de liste Fichier
Shape
Line
Image
Data
OLE
Gardez lesprit quune application contient une multitude de feuilles. Chacune de ces
feuilles peut tre afche dans sa propre zone ddition de la fentre Feuille ; cest ce
que montre la Figure 2.3. La feuille active est celle dont la barre de titre est en
surbrillance. Pour activer une feuille, on clique nimporte o lintrieur ou sur la barre
de titre.
37
<
:
Partie II
Figure 2.3
Les zones ddition
de la fentre Feuille
vous permettent
de travailler sur
plusieurs feuilles
la fois.
Info
ce
Astu
Feuilles
multiples
Feuille
active
La fentre Projet
Dans la fentre Projet, vous grez les composants de votre application. Comme le
montre la Figure 2.4, la fentre Projet peut devenir passablement encombre. Un
programme Windows, que nous devrions appeler, comme la enseign la leon prcdente, une application, peut recouvrir plusieurs chiers. Avant que le programme ne
soit compil, les chiers lis Visual Basic peuvent devenir encore plus nombreux. La
fentre Projet vous permet de grer tous ces composants et damener dans la zone
ddition celui sur lequel vous souhaitez travailler.
>
:
38
Figure 2.4
La fentre Projet
contient lensemble
des composants de
votre projet.
Groupe
Nom du fichier
Nom de l'objet
Info
Dans la fentre Projet, la liste des composants est prsente comme une structure arborescente. Les objets corrls sont afchs ensemble. Les signes moins () et plus (+)
vis--vis des groupes dobjets permettent respectivement de rduire ou dtendre lafchage des dtails. Si, par exemple, vous cliquez sur le signe plus de lobjet Feuilles, la liste
des projets en cours safche. Quand vous double-cliquez sur lune des feuilles, la fentre
correspondante safche dans la zone ddition de la fentre Feuille.
Chaque lment de la fentre Projet porte la fois un nom de projet et un nom de chier.
En Visual Basic, on assigne des noms aux objets tels que feuilles ou modules. Chaque
lment est aussi enregistr sur le disque dans un chier spar. Le nom de chier qui,
pour un mme lment, diffre du nom de projet (par exemple, seuls les noms de
chiers portent une extension) apparat entre parenthses ct de llment. La fentre
Projet afche donc le nom de chier et le nom de projet de chacun des chiers de votre
projet, et il suft de double-cliquer sur un objet pour lactiver.
ce
Astu
La fentre Projet inclut une barre doutils qui nafche que trois boutons. Le
bouton Fentre Code afche la fentre Code pour lobjet slectionn, de
sorte que vous puissiez en modier le code. (La fentre Code napparaissait
pas sur la Figure 2.1 ; elle vous sera prsente la dernire section de cette
leon, alors que vous ajouterez du code lapplication.) Le bouton Afcher
lobjet afche la fentre dobjet pour lobjet slectionn. Beaucoup dobjets
se voient associer la fois une fentre dobjet et une fentre Code. A chaque
feuille, par exemple, correspondent un module de code et une fentre
Feuille. Les boutons Fentre Code et Afcher lobjet vous permettent donc
de basculer du code dun objet ses lments visuels. Le bouton Basculer
les dossiers groupe et dgroupe les lments de la fentre Projet selon une
interface de type Explorateur.
39
<
:
Partie II
Projets. Une application peut tre constitue de plusieurs projets, notamment lorsque vous employez des contrles ActiveX. Les projets portent toujours lextension
.VBP.
Feuilles. La fentre projet afche la liste des feuilles de votre projet. Les feuilles
portent toujours lextension .FRM.
Modules de classes. Les modules de classes sont des modules spciaux qui dnissent
les objets conus pour un projet. Les modules de classes portent toujours lextension
.CLS.
Contrles utilisateur. Les contrles utilisateur sont les contrles ActiveX que vous
avez ajouts au projet. Les chiers des contrles ActiveX portent toujours lextension .OCX.
Documents utilisateur. Les documents utilisateur sont des objets document qui
dcrivent les parties de votre projet. Les chiers de documents utilisateur portent
toujours lextension .DOB.
Page de proprits. Les pages de proprits (comme celles que lon trouve dans les
botes de dialogue onglets) apparaissent dans un chier de projet pour dcrire un
contrle particulier. Les chiers de pages de proprits portent toujours lextension
.PAG.
Info
Dautres lments apparaissent parfois dans la fentre Projet, tels que les
ressources et autres documentations que vous adjoignez au projet.
La fentre Proprits
Une feuille peut contenir plusieurs contrles. A mesure que vous en ajoutez, vous
pouvez slectionner les contrles, simplement en cliquant dessus. Lorsquun contrle
est slectionn, la fentre Proprits afche toutes les proprits qui lui sont lies.
Comme vous le verrez dans la dernire section de cette leon, Visual Basic dnit automatiquement les valeurs de proprits initiales du contrle ds que vous lajoutez. En
afchant la fentre Proprits dun contrle, vous pouvez modier ces valeurs.
>
:
40
La Figure 2.5 montre une fentre Proprits qui afche quelques-unes des proprits
dun contrle Label. Vous pouvez constater que les informations afches dans la fentre Proprits quant au nom, au type et la description, retent le contrle slectionn.
Pour affecter une valeur une proprit, slectionnez la proprit et entrez la nouvelle
valeur. Quand vous pouvez choisir parmi plusieurs valeurs tablies, une liste droulante
safche.
Figure 2.5
La fentre
Proprits dcrit
chaque proprit du
contrle slectionn.
Nom de l'objet
Type de l'objet
Nom de la proprit
Description de
la proprit
Valeur de la proprit
Chaque proprit porte un nom qui la distingue ; et chaque proprit a une valeur que
vous ou Visual Basic lui assignez. Par exemple, Visual Basic nomme toujours Command1
le premier bouton de commande que vous ajoutez un projet. La proprit Name de ce
premier bouton aura donc pour valeur Command1. Il convient naturellement de donner au
bouton de commande un nom plus signicatif an de bien documenter lapplication.
Vous pouvez, par exemple, nommer cmdReportPrint un bouton qui dclenche limpression dun rapport.
A chaque nom dobjet doit tre inclus un prxe de trois lettres qui dcrit la fonction de
lobjet. Ainsi, lorsque vous consulterez la liste des objets, vous connatrez de chacun non
41
<
:
Partie II
seulement le nom, mais aussi le type (bouton de commande, zone de texte, feuille, etc.).
Le Tableau 2.1 propose une liste de prxes couramment utiliss dans les noms dobjets
Visual Basic. Vous pourrez vous y rfrer lorsquil vous faudra nommer des objets, dans
les jours et les leons qui vont suivre. Quand un projet contient plusieurs contrles, ces
noms vous aident en dterminer le type et la fonction.
Tableau 2.1 : Prxes courants placer en tte des noms dobjets
>
:
Prxe
Type dobjet
cbo
chk
Case cocher
cmd
Bouton de commande
dir
drv
fil
fra
Frame
frm
Feuille
grd
Grille
hsb
img
Image
lbl
Label
lin
Ligne
lst
Zone de liste
mnu
Menu
mod
Module
ole
OLE
opt
Bouton doption
pic
Zone dimage
42
Tableau 2.1 : Prxes courants placer en tte des noms dobjets (suite)
Prxe
Type dobjet
res
Ressource
shp
Forme
tmr
Timer
txt
Zone de texte
typ
vsb
Info
Faire
Nemployez pas de prxe dans les noms de chiers attribus aux objets. Les
prxes de noms dobjets Visual Basic doivent toujours tres saisis en
minuscules.
Ne pas faire
Souvenez-vous que vous pouvez dplacer, redimensionner et fermer chaque
fentre Visual Basic. Selon ce que vous souhaitez voir du contenu dune
fentre, vous pouvez lajuster pour faire de la place dautres fentres.
Obtenir de laide
Visual Basic propose toute une srie doutils en ligne destins vous aider. Avant de
crer votre application, comme la dernire section de ce Chapitre vous invite le faire,
vous devez vous familiariser avec les diverses options daide et apprendre y accder.
Laide locale
Dans la plupart des cas, lenvironnement Visual Basic vous offre toute laide ncessaire
sans quil vous soit besoin daller voir ailleurs (sauf dans ce livre, bien sr !). La
premire option du menu Aide, Sommaire, afche une fentre daide Windows base de
HTML ; cet cran est reproduit en Figure 2.6. Le panneau gauche de la fentre liste les
diffrents manuels en ligne que vous pouvez ouvrir et lire. Le panneau de droite propose
un tour des rubriques daide, avec pour guide un certain Dr Gui (GUI est le sigle de
graphical user interface, interface utilisateur graphique).
43
<
:
Partie II
Info
Info
ntion
Atte
Le systme daide Visual Basic est fond sur Books Online, base de donnes
de rfrence fournie avec les produits Microsoft plus anciens. Les CD-ROM
MSDN sont ncessaires pour accder laide en ligne.
MSDN signie Microsoft Developers Network (rseau des dveloppeurs
Microsoft), et recouvre un ensemble darticles en ligne, de CD-ROM et de
lettres dinformation, diffuss auprs des programmeurs depuis quelques
annes. Laide Visual Basic fait maintenant partie de MSDN. Les crans
MSDN ne sont disponibles quune fois labonnement souscrit. Pour vous
abonner linformation en ligne MSDN, cliquez sur le menu ?, sur
Sommaire, puis choisissez MSDN Online.
Laspect du systme daide chez vous peut tre lgrement diffrent, selon la
date de distribution de votre logiciel Visual Basic 6. Les crans daide
varient parfois dune dition lautre des produits Microsoft.
Figure 2.6
Laide Visual Basic
est l pour vous sortir
du ptrin.
>
:
Sommaire. Cette option propose une aide organise en livres, tels que "Documentation Visual Basic", "Outils et technologies", etc.
Index. Cette option permet de rechercher de laide partir dun ensemble de mots
cls indexs sur les rfrences de loption Sommaire.
44
Favoris. Cette option vous permet de stocker les rubriques daide que vous avez
juges particulirement utiles.
Vous tes-vous jamais demand pourquoi un systme de dveloppement aussi vaste que
Visual Basic nest pas livr avec un pais et pesant manuel ? En fait, Visual Basic est bel
et bien livr avec un manuel, plusieurs mme ; mais il sagit dune documentation en
ligne, comme le systme daide MSDN. Il suft de cliquer pour ouvrir lun des "livres"
du panneau gauche, et atteindre un chapitre et une page. Cette page safche dans le
panneau droit de la fentre daide.
ce
Astu
Le systme daide offre des rfrences sur Visual Basic, les connexions aux bases de
donnes, la programmation ActiveX, et dautres questions techniques propos
desquelles vous aurez besoin dinformation able dans le cours de vos travaux. Il faut se
gurer le systme daide comme un jeu complet douvrages de rfrence coteux qui,
sils taient livrs sous la forme papier avec Visual Basic, augmenteraient considrablement le prix du logiciel, tout en rendant malaise la recherche de sujets spciques.
A propos de Microsoft Visual Basic est une autre entre du menu Aide, qui afche une
bote de dialogue A propos classique indiquant le numro de version de Visual Basic, le
numro de srie et le nom denregistrement. Lorsque vous cliquez sur le bouton Infos
systme, le programme analyse votre systme puis afche la bote de dialogue reproduite
en Figure 2.7. Ces informations systme concernent aussi bien le matriel que le logiciel.
Au Chapitre 20, vous apprendrez ajouter une aide en ligne vos applications.
Le support technique
En slectionnant loption Support technique du menu Aide, vous afchez une bote de
dialogue qui explique comment contacter le support technique de Microsoft pour une
assistance plus personnalise. Il se peut en effet que le systme daide en ligne ne
rponde pas assez un problme prcis. Si, par exemple, vous constatez un comportement trange de Visual Basic, rvlant un bogue dans le logiciel lui-mme, il faut en
rfrer Microsoft directement. (Pour ce type de problme, toutefois, commencez
toujours par rinstaller Visual Basic an de voir si le dysfonctionnement persiste. Cest
sans doute le conseil quils vous donneront, et vous gagnerez ainsi du temps.)
45
<
:
Partie II
Figure 2.7
Le bouton Infos
systme lance une
analyse de fond
en comble de
votre systme.
Info
Laide en ligne
La commande Microsoft sur le Web du menu Aide vous permet de choisir entre diverses
options de support en ligne. (Toutes requirent videmment un accs Internet.) Loption
Support technique charge la page Web Microsoft ddie Visual Basic. Cette page, soit
dit en passant, gagne tre souvent visite, mme si vous ne recherchez pas daide
prcise. Vous y trouverez un nombre apprciable dinformations de mise jour, de
corrections de bogues, dastuces et de solutions, des exemples de code, ainsi quune
slection de liens actualiss. La commande Microsoft sur le Web permet galement
daccder la page daccueil de Microsoft, deffectuer une recherche sur le rseau, et
mme denvoyer Microsoft des commentaires ou des conseils propos de Visual
Basic.
ce
Astu
>
:
46
Visitez souvent le site Forum aux questions ; vous y trouverez une liste de
rponses aux questions les plus courantes lies la programmation Visual
Basic.
Apprivoiser lcran
Avant de terminer votre premire journe dapprentissage, vous avez cr une application Visual Basic autonome et fonctionnelle. Pour tre plus prcis : vous avez cr une
application avec laide de lassistant Cration dapplications, qui a fait tout le boulot. Il
sagit maintenant daller plus loin et de crer une application complte partir de zro.
Vous comprenez mieux quauparavant lenvironnement Visual Basic, et vous tes en
mesure de trouver de laide si ncessaire. Avant de suivre les tapes de la section
suivante pour crer une nouvelle application, prenez le temps de charger une application
existante depuis lun des chiers exemples livrs avec Visual Basic. Vous pourez ainsi
vous familiariser avec les fentres qui safchent. Procdez comme suit :
1. Lancez Visual Basic.
2. Insrez dans le lecteur le CD-ROM 1 de MSDN.
3. Cliquez sur longlet Existant et accdez au dossier Samples\Vb98\Controls via la
bote de dialogue Ouvrir un projet.
4. Double-cliquez sur licne Controls pour ouvrir le projet nomm Controls. Selon
vos paramtres dafchage Windows, lextension .VBP peut ne pas apparatre dans la
bote de dialogue Ouvrir un projet. Dans tous les cas, que vous voyiez ou non
lextension dans les botes de dialogue, vous pouvez distinguer les types de chiers
daprs licne qui se trouve gauche de leur nom. La bote de dialogue Ouvrir un
projet nafche que les chiers de projets ( moins que vous ne modiez la slection
dans la liste droulante Type de chier). Licne que vous voyez vis--vis du projet
Controls est licne qui reprsente tous les chiers de projets Visual Basic.
5. Une fois le projet Controls ouvert, une bote de dialogue safche et demande si
vous souhaitez ajouter au projet quelque chose du nom de SourceSafe. Pour tous les
exercices de ce livre, vous rpondrez non cette question. Deux autres botes de
dialogue relies SourceSafe apparaissent ensuite ; cliquez sur OK pour les fermer.
Info
ntion
Atte
SourceSafe est un outil de Visual Studio (disponible pour tous les langages
de la suite) qui permet de garder la trace des diffrentes versions de vos
programmes sources.
Le programme source est lensemble du code et des lments visuels qui
constituent lapplication que vous crivez. Ce programme source nest pas
distribu, car il nest que votre modle de travail. Seule lapplication nalise et compile doit tre distribue.
47
<
:
Partie II
Info
ce
Astu
7. Le programme Controls offre une dmonstration de plusieurs des contles disponibles dans la Bote outils Visual Basic. Cliquez sur un bouton, puis testez les
options qui apparaissent.
>
:
48
8. Aprs avoir essay les diverses options du programme, cliquez sur le bouton Arrt
pour interrompre lexcution du programme et pour fermer la fentre. Vous voil de
retour dans lenvironnement Visual Basic. A ce point, le programme Controls est
toujours charg dans lenvironnement, mais lapplication elle-mme nest pas
active. Vous tes maintenant libre dtudier les diverses fentres Visual Basic.
9. Jetez un il la fentre Projet. Vous constatez que le programme Controls est
constitu de feuilles uniquement. Le code existe bel et bien (cliquez sur le bouton
Code pour afcher la fentre Projet ; cliquez de nouveau sur la fentre Afcher
lobjet pour revenir la liste des feuilles), mais il rside dans chacun des sept
chiers de feuilles qui accompagnent le projet.
10. Dans la fentre Projet, cliquez sur le nom dune feuille pour la faire apparatre dans
la zone ddition de la fentre Feuilles. La feuille est semblable ce qui apparaissait
lors de lexcution du programme. Consultez la fentre Prsentation des feuilles (si
vous ne la voyez pas, slectionnez Afchage, Fentre Prsentation des feuilles) pour
connatre la position de la feuille sur lcran tel quil apparatra lors de lexcution.
11. Faites glisser licne miniature de la feuille depuis la fentre Prsentation des
feuilles jusqu un emplacement diffrent. Si vous lancez le programme, la fentre
de la feuille en question apparatra l o vous lavez fait glisser.
12. Examinez la fentre Proprits, qui afche les valeurs de proprits du contrle
slectionn. Gardez lesprit que le contenu de la fentre Proprits ne concerne que le
contrle individuel slectionn dans la fentre Feuilles. Sur la Figure 2.9, la fentre
Proprits afche les proprits du bouton doption slectionn (entour de huit
poignes de redimensionnement).
13. Faites dler les valeurs de proprits pour visualiser toutes les proprits du
contrle slectionn.
14. Cliquez sur un autre contrle de la feuille et examinez la fentre Proprits mise
jour. Lorsque vous slectionnez un contrle en cliquant dessus, des poignes de
redimensionnement apparaissent tout autour, et la fentre Proprits est mise jour
pour reter les proprits dudit contrle.
Laissez le projet ouvert pour la prochaine section. En revanche, vous pouvez fermer les
barres doutils Edition et Editeur de code de feuille (si elles sont afches), car nous
nen aurons pas besoin. Maintenant que vous avez fait connaissance de lenvironnement
Visual Basic, vous tes prt y chafauder vos propres crations.
49
<
:
Partie II
Figure 2.9
La fentre Proprits
afche les valeurs
de proprits du
contrle slectionn.
Contrle
slectionn
Poignes de
redimensionnement
Valeurs de proprits
du contrle slectionn
Configurer la feuille
Notre premire application se contentera dafcher une image et un bouton de
commande. Le programme modie limage lorsquon clique sur le bouton. Pour crer
cette simplissime application, suivez ces tapes :
1. Slectionnez Fichier, Nouveau projet pour afcher la bote de dialogue Nouveau
projet. Si une application est dj ouverte, Visual Basic demande si vous souhaitez
enregistrer les modications. Cliquez sur Non.
>
:
50
2. Cliquez sur licne EXE standard. Lenvironnement Visual Basic ne contient, alors,
quune seule feuille nomme Form1 (ce quindique la barre de titre). La feuille
safche sur larrire-plan de la zone ddition, blanche, de la fentre Feuilles.
3. Cliquez sur le bouton Agrandir pour donner la zone ddition de la fentre Feuilles
(cest--dire larrire-plan blanc, et non la feuille grise elle-mme) sa taille maximale. Ce qui libre assez despace pour agrandir la feuille.
Info
Coordonnes
de position
Coordonnes
de taille
Fentre Feuilles
51
<
:
Partie II
ition
Dfin
Info
ce
Astu
ition
Dfin
>
:
52
7. Attribuez la feuille un nom plus parlant que Form1. Cette opration vous permettra
au passage de travailler dans la fentre Proprits. Le nom de la feuille slectionne
est dni dans la proprit (Name), qui est mis entre parenthses an de maintenir le
nom au sommet de la liste alphabtique des proprits. (A partir de maintenant, nous
ferons abstraction de ces parenthses.) Si la proprit Name nest pas encore visible,
faites dler la fentre Proprits ; notez que la valeur de Name est actuellement
Form1.
8. Slectionnez la proprit Name de la feuille et tapez frmMyFirst. Le nouveau nom
safche aussitt droite de la proprit Name, ainsi que sur la barre de titre de Visual
Basic.
ce
Astu
53
<
:
Partie II
Double-cliquez sur licne du contrle dans la Bote outils. Visual Basic place
alors ce contrle au centre de la feuille. Vous pouvez ensuite laffecter la position
choisie, et le redimensionner en faisant glisser les poignes de redimensionnement.
Cliquez sur licne du contrle dans la Bote outils, puis dplacez vers lemplacement
voulu le curseur cruciforme qui apparat. L, cliquez, puis maintenez le bouton en
dplaant la souris ; vous dimensionnez le contrle. Lorsque le contrle a la position et
la taille souhaites, lchez le bouton de la souris.
>
:
54
ce
Astu
A moins que vous ne modiez loption Aligner les contrles sur la grille
(onglet Gnral de la bote de dialogue Outils, Options), Visual Basic aligne
automatiquement les contrles sur les points les plus proches, an que
lensemble soit proprement ordonn.
Label
55
<
:
Partie II
ce
Astu
En suivant les tapes qui prcdent, vous placez le contrle Image approximativement la position demande. Pour lui affecter les coordonnes de
position et de taille exactes, il suft de donner les valeurs spcies aux
proprits correspondantes : Left = 2520, Top = 2880, Width = 2175 et
Height = 1825. A lavenir, cest par une notation de ce type que nous vous
indiquerons les valeurs de proprits. Vous savez maintenant que, pour
assigner de nouvelles valeurs, il suft de cliquer sur le nom de la proprit
concerne et de saisir directement.
Les coordonnes de position et de taille sont toujours spcies en twips, et
par paires. Vous les verrez souvent nonces entre parenthses, la manire
de points cartsiens : (2520, 2880).
5. Mme si vous ne comprenez pas encore chacune des proprits, vous tes en mesure
de leur attribuer des valeurs. Il sagit, prsent, de dnir de nouvelles valeurs de
proprits pour la feuille et ses contrles an de naliser laspect de lapplication.
Lorsque cela sera fait, il restera ajouter le code propre connecter les divers
composants et les faire fonctionner ensemble.
Le Tableau 2.2 prsente une liste des valeurs de proprits quil faut maintenant
dnir pour les trois contrles et la feuille elle-mme. Rappelez-vous quil faut
slectionner la feuille ou le contrle spcique avant de pouvoir en modier les
valeurs de proprits. Pour slectionner une feuille, cliquez nimporte o lintrieur ou sur la barre de titre , mais pas sur lun des contrles. La fentre Proprits
sactualise pour renvoyer les nouvelles valeurs. Cliquez dabord sur le label, le
bouton de commande ou limage pour slectionner un contrle, et modiez-le en
slectionnant une proprit, puis en saisissant la nouvelle valeur.
ntion
Atte
>
:
56
Figure 2.12
La bote de dialogue
Police vous permet
de dnir plusieurs
valeurs pour
la proprit Font.
Proprits
Valeurs de proprits
Feuille
Max Button
Label
Alignment
Label
Name
lblHappy
Label
Caption
Bonne journe!
Label
Font
Courier New
Label
Font style
Bold
Label
Size
36
Label
Left
1320
Label
Height
1695
Label
Top
120
57
<
:
Partie II
Proprits
Valeurs de proprits
Label
Width
4695
Image
Name
imgHappy
Image
Stretch
True
Bouton de commande
Name
cmdHappy
Bouton de commande
Caption
Cliquez ici
ce
Astu
>
:
58
Ces lignes font partie des quatre lignes indispensables au code dune feuille.
La fentre Feuilles fonctionne comme un petit traitement de texte dans lequel vous
pouvez insrer, supprimer et modier les diffrentes instructions contenues dans le
programme.
Le code apparat sous forme de procdures ; chaque procdure ncessite
une ligne de dbut et une ligne de n, qui en dsignent les points de dpart
et darrt. Pour la plupart des procdures, Visual Basic ajoute automatiquement ces deux lignes.
Info
ition
Dfin
Une procdure est une section de code Visual Basic qui contient des instructions charges dune tche prcise ; par exemple, centrer une fentre
Feuilles.
2. Vous allez maintenant saisir vos premires lignes de code. Insrez trois espaces au
dbut de chaque ligne, de sorte quelles soient lgrement dcales par rapport
aux lignes de dbut et de n. Cet ensemble de renfoncements, que les programmeurs nomment indentation, permettent de circonscrire chaque procdure
lintrieur dune longue succession. Le code qui suit contraint la fentre dapplication safcher au centre de lcran, quelle que soit la rsolution utilise.
frmMyFirst.Left = (Screen.Width frmMyFirst.Width) / 2
frmMyFirst.Top = (Screen.Width frmMyFirst.Height) / 2
A peine avez-vous commenc de taper la premire ligne que Visual Basic afche un
complment automatique dinstructions (voir Figure 2.13). Lorsque Visual Basic
"pressent" que vous allez spcier des valeurs de proprits, il propose sous forme
de liste droulante les diffrentes options disponibles pour le contrle ; vous pouvez
ainsi choisir dans la liste plutt que de saisir le nom de la proprit en entier. Ds
que vous avez slectionn une proprit et valid en appuyant sur la barre despace,
Visual Basic insre le nom complet, et vous pouvez poursuivre votre saisie.
3. Dans la fentre Projet, cliquez sur le bouton Afcher lobjet an de revenir la fentre
Feuilles.
4. Double-cliquez sur le bouton de commande pour ouvrir la fentre Code de nouveau.
Au code initial vient sajouter un nouvel ensemble dinstructions de dbut et de n ;
il sagit dune nouvelle procdure destine grer le bouton de commande. Entre
ces deux nouvelles lignes, tapez le code suivant, toujours prcd de trois espaces :
imgHappy = LoadPicture("\Program Files\Microsoft Visual Studio\
Common\Graphics \Bitmaps\Assorted\Happy.bmp")
59
<
:
Partie II
Figure 2.13
Visual Basic acclre
la saisie du code.
Alors que vous tapez la parenthse ouvrante aprs LoadPicture, Visual Basic
propose une aide contextuelle semblable au Complment automatique dinstructions
que nous avons dj vu. Certaines instructions Visual Basic, notamment celles que
lon crit entre parenthses, requirent que vous saisissiez une ou plusieurs valeurs.
Visual Basic proposant automatiquement le format de ces valeurs, vous saurez
toujours combien il en faut. A mesure que vous progresserez dans votre connaissance du langage, vous comprendrez mieux la ncessit de ces valeurs. Dans un
langage aussi complet que Visual Basic, laide contextuelle propose savre dune
grande utilit.
5. Excutez le programme et cliquez sur le bouton de commande : une image apparat (voir
Figure 2.14). Bravo ! Vous avez russi crer une application complte sans recourir
lassistant Cration dapplications. Cette application afche une image lorsquon clique
sur un bouton ; elle contient du code, et vous en avez paramtr chacun des contrles.
6. Cliquez sur le bouton de fermeture pour quitter le programme. Assurez-vous de bien
sauvegarder votre projet avant de quitter Visual Basic.
>
:
60
Figure 2.14
Votre application
afche une image
lorsquon clique
sur le bouton.
En rsum
Si, dans ce chapitre, nous nous sommes attach dcrire lenvironnement Visual Basic,
cest que vous ne deviendrez un programmeur Visual Basic efcace quaprs avoir
compris le jeu des diverses fentres et interfaces. Visual Basic propose plusieurs niveaux
daide, incluant laide en ligne, le support Web et un support technique personnalis
disponible en plusieurs formules. Vous avez ainsi une assistance prcieuse porte de
main, au cas o un aspect de linterface ou du langage Visual Basic vous poserait un
problme.
Pour crer une application, il faut crer un nouveau projet, ajouter des contrles dans la
fentre Feuilles, dnir les valeurs de proprits de la feuille et des contrles, et activer
ces contrles laide du code. Le projet daujourdhui tait exceptionnellement simple,
en raison notamment du peu de lignes de code requises : trois.
La leon de demain rpondra quelques questions que vous vous posez propos des
contrles et de leurs proprits.
61
<
:
Partie II
Questions-rponses
Q Quelles doivent tre les dimensions de ma fentre Feuilles ?
R Cest la nalit de lapplication qui doit dcider de la grandeur de la fentre Feuilles
et du nombre de feuilles requis. Pour des programmes simples, une feuille est gnralement sufsante ; la taille de la feuille, quant elle, dpend du nombre de contrles
quelle doit recevoir, et de la nature du programme.
Nous aurions pu, dans ce chapitre, crer une feuille de taille maximale ; mais, avec
seulement trois contrles, cet t tout fait dmesur.
Q A quoi exactement sert le code que nous avons crit ?
R Le code est ncessaire au bon fonctionnement de lapplication. La ligne contenant
le mot cl LoadPicture est indispensable, car cest elle qui lance le chargement de
limage lorsquon clique sur le bouton de commande. Les deux autres lignes, que
nous avons ajoutes aprs avoir double-cliqu sur la fentre Feuilles pour ouvrir la
fentre Code, servent centrer la forme quelles que soient la taille et la rsolution
de lcran utilis.
Q Si cest le code qui centre la fentre Feuilles, tait-il ncessaire dutiliser la fentre Prsentation des feuilles ?
R Quelque position que vous donniez la feuille dans la fentre Prsentation des
feuilles, les deux lignes de la procdure centrent automatiquement la feuille au
lancement du programme.
La fentre Prsentation des feuilles est une bauche qui vous donne une ide de
lemplacement de la fentre Feuilles lorsque la feuille est charge. Pour un contrle
plus serr, et notamment si vous ntes pas certain de la taille de lcran sur lequel
sera excut le programme, la feuille doit tre positionne laide du code.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices grce
auxquels vous mettrez en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.
>
:
62
Quiz
1. Quelle est la diffrence entre la Bote outils et la barre doutils ?
2. Quel est le nom du service daide fourni sur abonnement aux programmeurs
Microsoft ?
3. La fentre Feuilles ne peut contenir quune feuille la fois. Vrai ou faux ?
4. Que se passe-t-il lorsquon clique sur un contrle de la Bote outils ?
5. Que se passe-t-il lorsquon double-clique sur un contrle de la Bote outils ?
6. Cest depuis la fentre Bote outils que lon dnit les proprits dun contrle. Vrai
ou faux ?
7. Comment Visual Basic dtermine-t-il de quel contrle les proprits doivent tre
afches dans la fentre Proprits ?
8. Que signient les points de suspension dans une valeur de la fentre Proprits ?
9. Quel est le nom de la proprit qui spcie le titre dun bouton de commande ?
10. Pourquoi faut-il changer le nom par dfaut des contrles ?
Exercice
Chargez lapplication cre aujourdhui pour pouvoir la modier. Ajoutez un peu de
couleur en appliquant du bleu larrire-plan de la feuille. Placez galement sur la
feuille un nouveau bouton de commande, labelis Quitter, et spciez une proprit
Name adquate pour ce contrle. Dans la nouvelle procdure qui safche dans la fentre
Code, ajoutez la ligne suivante, qui gre le nouveau bouton :
End
Excutez lapplication, puis cliquez sur le bouton Quitter. Nest-ce pas une faon plus
lgante de prendre cong dune application ?
63
<
:
Chapitre
65
Partie II
Info
Un contrle nest pas accessible votre application tant quil napparat pas
dans la Bote outils. Vous ne pouvez donc pas, par exemple, ajouter sur votre
feuille un contrle de navigation Internet si ce contrle nest pas propos par
la Bote outils. Si vous utilisez lassistant Cration dapplications, il ajoutera la Bote outils tous les contrles requis pour gnrer le projet.
Si, dans une des leons de ce livre, il est fait rfrence un contrle absent de
la Bote outils standard, nous vous expliquerons comment vous le procurer.
Comme le montre la Figure 3.1, la Bote outils peut devenir passablement encombre
partir dun certain nombre de contrles. Une telle Bote outils accapare beaucoup
despace dans votre fentre. Pour librer de lespace gauche de votre cran, vous
pouvez dplacer la Bote outils en en faisant glisser la barre de titre vers une nouvelle
position. La fentre Bote outils peut galement tre redimensionne.
Info
Info
>
:
66
Ne pas faire
Evitez de donner la Bote outils une taille si rduite quelle en devienne
invisible. Si la Bote outils est si petite que des contrles ne puissent plus
tre vus, aucune barre de dlement ne safchera. Pour utiliser les outils
situs au-del des limites de la fentre, il faut tendre la fentre jusqu ce
quils redeviennent accessibles.
Les puristes Visual Basic appliquent aux jeux de contrles disponibles une
terminologie plus stricte. Les contrles qui apparaissent en premier dans la
Bote outils sont nomms contrles intrinsques. Les contrles ActiveX,
dextension .OCX, sont des contrles externes qui peuvent tre ajouts la
Bote outils. Les contrles insrables sont des contrles crs dans des
applications externes, telles que Microsoft Excel.
Figure 3.1
La fentre Bote
outils doit tre dune
taille raisonnable.
Les proprits sont les mmes pour la plupart des contrles. Le Tableau 3.1 liste les
proprits les plus courantes. Vous comprendrez sans doute pourquoi ces proprits
sappliquent tant de contrles. Tous les contrles doivent avoir une position sur lcran
(dnie par les proprits Left et Top), et la plupart ont des couleurs de premier et
darrire-plan, ainsi que des proprits de police, pour ceux qui incluent du texte.
Tableau 3.1 : Proprits communes plusieurs contrles Visual Basic
Proprits
Description
Alignment
BackColor
BorderStyle
Caption
Enabled
Dnie via une liste droulante, cette proprit sera True (vraie) si le contrle
doit tre accessible lutilisateur, et False (fausse) si le contrle ne doit pas tre
accessible. Cette proprit permet dactiver et de dsactiver les contrles selon
quon les veut ou non disponibles lors de lexcution du programme.
67
<
:
Partie II
Description
Font
Afche une bote de dialogue dans laquelle vous paramtrez pour le texte dun
contrle divers attributs de police, tels que la taille ou le style.
ForeColor
Height
Left
MousePointer
Name
ToolTipText
Top
Visible
Dnie via une liste droulante, cette proprit sera True (vraie) si le contrle
doit tre visible sur la feuille, et False (fausse) si le contrle doit tre masqu.
Width
Rappelez-vous que les valeurs de proprits sont dnies pour chaque contrle avant
mme que vous ne les modiiez. Ds que vous placez un contrle, Visual Basic lui
applique un jeu de valeurs de proprits prdtermin (les valeurs les plus courantes).
Visual Basic affecte galement aux contrles des noms et libells, par dfaut, que vous
souhaiterez sans doute modier. Les valeurs par dfaut fonctionnent trs bien dans la
plupart des cas. Vous naurez jamais changer toutes les valeurs de proprits par dfaut
dun contrle.
Comme nous lavons vu, les proprits des contrles peuvent tre paramtres lors de
lcriture du programme. Mais vous pouvez galement dnir et modier les valeurs
de proprits dans le cours mme de lexcution du programme. Par exemple, la
>
:
68
proprit Enabled est souvent modie pendant lexcution pour quun contrle ne soit
plus accessible lutilisateur. Vous pouvez ainsi dsactiver un bouton de commande qui
gnre un rapport jusqu ce que lutilisateur ait donn le contenu du rapport.
ntion
Atte
ce
Astu
La fentre Proprits nafche pas toutes les proprits de tous les contrles. Ny apparaissent pas les proprits seulement dnissables dans le code
Visual Basic.
Certaines proprits, telles que Alignment, peuvent sembler trange, du fait
que, dans leur liste droulante, les valeurs sont prcdes dun chiffre. Alignment, par exemple, prend lune de ces trois valeurs : 0-Left Justify, 1Right Justify et 2-Center. Vous pouvez slectionner ces valeurs laide de
la souris sans tenir compte des chiffres ; vous pouvez galement, aprs avoir
ouvert la liste droulante dune proprit, taper le chiffre correspondant la
valeur voulue. Ces chiffes sont tout aussi pratiques lorsque vous dnissez les
proprits dun contrle dans le code Visual Basic : il suft dattribuer la
valeur numrique, au lieu de saisir la valeur entire (comme 0-Left
Justify). Ces chiffres constituent des raccourcis utiles lors de lcriture du
code, comme nous le verrons dans les leons suivantes.
Les sections suivantes dcrivent les contrles standards les plus utiles, ainsi que
plusieurs des proprits importantes associes ces contrles. Nous ne vous prsenterons pas aujourdhui tous les contrles de la Bote outils, mais seulement ceux que
vous utiliserez lors de vos premires expriences en Visual Basic.
Nous ne donnerons pas non plus un compte rendu exhaustif de toutes les proprits,
parce que certaines de ces proprits ne sont que trs rarement utilises. Bien des
programmeurs Visual Basic ne connaissent mme pas toutes les proprits disponibles
pour un contrle. En gnral, si vous souhaitez donner un contrle un aspect prcis, il
existe une proprit qui vous permet de le faire. Le tour dhorizon des contrles et de
leurs proprits que nous vous proposons maintenant vous aidera mieux comprendre
la fonction des contrles, et les diverses proprits qui leur sont associes.
ce
Astu
69
<
:
Partie II
Figure 3.2
Vous pouvez classer
les proprits an
de les localiser plus
rapidement.
>
:
70
ition
Dfin
Le menu Systme est le menu qui apparat lorsquon clique sur licne
situe dans le coin suprieur gauche de la fentre. Ce menu propose les
options classiques de dplacement, redimensionnement, rduction, agrandissement et fermeture.
Icon. Spcie un chier dicne pour le bouton qui reprsentera lapplication sur la
Barre des tches Windows.
MinButton. Dtermine lafchage sur la fentre dun bouton actif Rduire. (Si vous
donnez la valeur False aux proprits MaxButton et MinButton, aucun des deux
boutons napparatra.)
Loutil Pointeur
Loutil pointeur est le seul lment de la Bote outils qui ne soit pas un contrle. Le
pointeur, et cest en fait sa seule utilit, permet de se dbarrasser du curseur cruciforme,
qui apparat quand vous slectionnez un contrle de la Bote outils.
Le contrle Label
Le contrle Label permet dafcher du texte. Votre utilisateur ne peut naturellement pas
changer le texte dun label. Mais vous pouvez, vous, modier le label en cours dexcution,
dans le code. (Voir le Chapitre 5 pour plus de dtails.) Les programmeurs ont souvent
recours aux labels pour des titres, des invites ou des descriptions. Si, par exemple, vous
souhaitez que lutilisateur saisisse une valeur dans un autre contrle, tel quune zone de
texte, vous placez ct de cette zone de saisie un label dcrivant la valeur demande.
Sans le label, lutilisateur ne saurait quelle valeur entrer.
71
<
:
Partie II
AutoSize et WordWrap sont deux proprits qui affectent lafchage du texte sur un label.
Si vous donnez AutoSize la valeur True, la taille du label sajuste horizontalement
pour afcher la totalit du texte. Lorsque WordWrap a la valeur True, Visual Basic
maintient la largeur du label, mais ltend verticalement pour afcher autant de lignes
que ncessaire.
La Figure 3.3 montre trois versions dun mme label, avec une proprit Caption identique, mais avec des combinaisons diffrentes des proprits AutoSize et WordWrap.
ntion
Atte
Cela peut paratre tonnant, mais, pour que WordWrap fonctionne, AutoSize
doit aussi avoir la valeur True. En effet, Visual Basic doit pouvoir tendre le
label horizontalement, ne serait-ce quun petit peu, au cas o un mme mot
serait plus large que le label lui-mme.
Figure 3.3
Les proprits
AutoSize et WordWrap
affectent lafchage
du texte sur un label.
Le contrle TextBox
On a recours aux zones de texte (text boxes) lorsque lutilisateur doit taper quelque chose
rponse une invite ou informations diverses. Il est souvent plus facile pour les utilisateurs de se voir proposer une valeur par dfaut, ce que Visual Basic vous permet de
faire. Si, par exemple, vous demandez lutilisateur de taper une date, vous pouvez
afcher par dfaut la date du jour, de sorte que lutilisateur naura pas la ressaisir.
Les zones de texte ne conviennent pas aux questions appelant des rponses du type
oui/non. Pour inviter lutilisateur choisir entre deux valeurs ou rpondre par oui ou
>
:
72
par non, dautres contrles sont plus appropris comme les contrles OptionButton
(bouton doption) ou ListBox (zone de liste droulante), que nous tudierons de manire
plus approfondie aux Chapitres 5 et 6.
Info
Info
Faire
A ct du contrle TextBox, il est bon dindiquer dans un label la valeur
attendue. Pour une demande de nom et adresse, par exemple, placez avant le
contrle TextBox un label du type Entrez votre nom :. Vos utilisateurs
sauront ainsi prcisment ce que lon attend deux.
Vous devez faire le distinguo entre la phase de cration (designtime) et la
phase dexcution (runtime). La phase de cration est la priode pendant
laquelle vous crivez et maintenez une application. La phase dexcution est
celle o lutilisateur exploite votre application. La valeur que vous dnissez
pour la proprit Text dune zone de texte lors de la phase de cration sera
la valeur par dfaut pour lutilisateur lors de la phase dexcution. Cet utilisateur pourra alors modier la valeur de la zone de texte, en la rcrivant ou
en la modiant.
Pour paramtrer les zones de texte de votre feuille, vous vous servirez des proprits
suivantes :
Alignment. Dtermine lalignement du texte dans une zone de texte dont la proprit
MultiLine est dnie comme True. La proprit Alignment est sans utilit pour une
zone de texte qui ne contient quune ligne.
Locked. Dtermine si lutilisateur peut, dans une zone de texte, entrer une nouvelle
valeur ou modier la valeur par dfaut. Si la valeur de Locked est True, lutilisateur
ne peut intervenir sur le texte tant que le programme nattribue pas, en cours
dexcution, la valeur False.
MultiLine. Lorsque sa valeur est True, cette proprit spcie que la zone de texte
peut recevoir plus dune ligne de texte. Une barre de dlement verticale apparat si
lutilisateur entre plus de texte que ne peut en contenir une seule ligne moins
que vous nayez dsactiv les barres de dlement avec la proprit ScrollBars. La
proprit Alignment, dont la valeur par dgaut est 0-Left Justify, dtermine
lalignement du texte.
73
<
:
Partie II
indiscret ne puisse le lire par-dessus son paule. Bien que seuls des astrisques apparaissent, cest le mot de passe rellement tap par lutilisation qui sera enregistr.
Text. Spcie le texte qui apparat par dfaut dans la zone de texte.
Les zones de texte et les champs de formulaires appellent un curseur spcial. Votre utilisateur saisit et modie le texte laide dun curseur de texte. Lorsquon clique sur le
contenu dune zone de texte, le curseur de texte sactive pour en permettre la modication.
ition
Dfin
ce
Astu
Le curseur de texte, galement nomm point dinsertion, est une barre verticale pour saisir ou modier du texte dans des contrles tels que les zones de
texte.
Chargez et excutez lapplication Controls depuis le dossier Samples\
VB98\Controls de MSDN. Slectionnez loption TextBox pour vous entraner un peu. Lcran qui safche est reproduit en Figure 3.4. Vous pourrez
ainsi vous familiariser avec les zones de texte monolignes et multilignes,
ainsi quavec les curseurs de texte et les barres de dlement. Lapplication Controls dmontre galement que lon peut effectuer dans et depuis
une zone de texte les oprations Windows standards de copier, couper et
coller.
Le contrle CommandButton
Les applications contiennent presque toujours des boutons de commande. Les boutons
de commande permettent lutilisateur dindiquer quune rponse est prte, que
limprimante est recharge en papier, ou quil souhaite quitter le programme. Comme
nous lavons vu au chapitre prcdent, Visual Basic prend en charge lanimation du
bouton qui signale graphiquement le clic.
>
:
74
Figure 3.4
Lapplication
exemple Controls
met en uvre
les divers types
de zones de texte.
ition
Dfin
ce
Astu
Une touche de raccourci est une touche qui, combine la touche Alt,
dclenche une rponse du programme. Par exemple, les options de barre de
menus ont toutes une touche de raccourci : Alt-F pour le menu Fichier, etc.
Dans une option de barre de menus ou dans le label dun bouton de
commande, la lettre souligne indique la touche de raccourci correspondante.
Les boutons de commande ne servent pas quaux clics de souris. Vous
pouvez assigner au label du bouton de commande une touche de raccourci.
Lutilisateur pourra ainsi enclencher le bouton de commande en appuyant
sur la combinaison de touches correspondantes, telle que Alt-R. Cest dans la
proprit Caption du bouton que la touche de raccourci est dnie. Outre
les touches de raccourci, lutilisateur peut enclencher le bouton de
commande en appuyant sur Entre ; il faut pour cela que le bouton soit le
contrle slectionn ou que sa proprit Default ait la valeur True (voyez
la section sur le focus pour plus dinformations). Vous pouvez enn
attribuer un bouton de commande la touche Echap, par exemple pour les
boutons du type Quitter ou Annuler (dans ce dernier cas, cest la proprit
Cancel qui gre la touche Echap).
75
<
:
Partie II
Caption. Contient le texte qui apparatra sur le bouton de commande. Pour dnir
une lettre comme touche de raccourci, il suft de la faire prcder dune esperluette
(&). Ainsi, une proprit Caption de valeur &Quitter donnera un bouton comme
celui qui est reprsent en Figure 3.5. Lutilisateur pourra, au choix, enclencher ce
bouton en cliquant dessus ou en appuyant sur Alt-Q.
Figure 3.5
On dnit une touche de raccourci en plaant, dans la valeur de Caption,
une esperluette & avant la lettre choisie (la touche de raccourci est
souligne sur le bouton).
Picture. Spcie limage qui apparatra sur le bouton la place dun libell. Il faut
pour cela que la proprit Style ait t pralablement dnie comme 1-Graphical.
Style. Cette proprit dtermine si le bouton doit afcher un libell (valeur 0-Standard) ou une image (valeur 1-Graphical).
ce
Astu
Le contrle Image
Comme vous avez plac une image sur lapplication cre au chapitre prcdent,
une brve prsentation du contrle Image est de rigueur ici. Le contrle Image est, avec
le contrle PictureBox, lun des contrles qui afchent des images. Les proprits de ce
contrle dterminent le chier graphique utiliser, et spcient si la taille du contrle
doit sajuster celle du chier, ou si la taille du chier doit sajuster celle du contrle. Vous
en apprendrez plus sur les contrles Image et PictureBox au Chapitre 14.
Visual Basic propose, bien sr, beaucoup dautres contrles, que vous dcouvrirez au l
de votre apprentissage. Les sections suivantes dcrivent de quelle manire lutilisateur
enclenche un contrle par lintermdiaire du clavier.
>
:
76
Le focus
Sur une mme feuille, un seul contrle peut avoir le focus la fois. Lordre dans lequel
les contrles auront le focus dpend de celui dans lequel vous les avez placs sur la
feuille, ou plus exactement dans lordre spci dans la proprit TabIndex de chaque
contrle. Tous les contrles ne peuvent pas avoir le focus. Cest un privilge rserv aux
contrles qui appellent une interaction avec lutilisateur. Ainsi, un contrle Label ne
pourra pas avoir le focus, car lutilisateur ne peut en aucun cas intervenir sur son
contenu.
ition
Dfin
Info
ce
Astu
77
<
:
Partie II
Tous les contrles ont une proprit TabIndex. A mesure que vous disposez les contrles
sur la feuille, Visual Basic dnit automatiquement la proprit TabIndex comme 0, 1, etc.,
attribuant un nombre unique et squentiel la proprit TabIndex de chaque contrle. Mme
les contrles qui, dordinaire, nappellent pas dinteraction avec lutilisateur, tels que les
labels, ont une proprit TabIndex. La proprit TabIndex dnit lordre du focus.
Vous ne placerez pas toujours les contrles en suivant lordre des valeurs de TabIndex.
Il vous arrivera notamment de placer un contrle entre deux autres. Il faudra peut-tre
modier lordre de TabIndex pour maintenir lordre de focus que vous dsirez. Par exemple, vous pouvez choisir de dplacer le focus selon lalignement vertical des contrles, ou
selon leur alignement horizontal ; en fonction de votre choix, la touche Tab provoquera un
dplacement du focus de haut en bas ou de gauche droite. Cet ordre de dplacement du
focus est spci par les valeurs de la proprit TabIndex pour chaque contrle.
ce
Astu
Figure 3.7
Lutilisateur peut
appuyer sur Alt-N
pour entrer son nom
dans la zone de texte.
>
:
78
79
<
:
Partie II
Imaginons que votre application afche quatre boutons de commande sur une feuille.
Voici ce qui se passe :
1. Lorsque lutilisateur clique sur lun des boutons, Windows reconnat quun vnement vient de se produire.
2. Windows analyse cet vnement et constate quil relve de votre application.
3. Windows passe lenvironnement et le contrle votre application.
4. Si votre application dispose dune procdure pour le contrle qui a reu lvnement,
le code de cette procdure (que vous aurez crit dans la fentre Code) sexcute.
Info
Activate. Se produit lorsquune feuille a le focus. Dans une application qui contient
plusieurs feuilles, lvnement Activate a lieu quand lutilisateur a une feuille diffrente en cliquant dessus ou en la slectionnant depuis un menu.
Click. Se produit lorsque lutilisateur clique quelque part sur la feuille. Si lutilisateur clique sur une feuille partiellement cache par la feuille qui a le focus, les deux
vnements, Click et Activate, se produisent.
Info
>
:
Deactivate. Se produit lorsque le focus passe une autre feuille. En fait, lorsque
lutilisateur slectionne une autre feuille, il se produit la fois un vnement Activate
et un vnement Deactivate. Vous avez le choix dcrire une procdure vnemen-
80
tielle pour les deux vnements sur chaque feuille, pour un seul des deux vnements
sur lune des deux feuilles, ou une combinaison des deux, selon les besoins de votre
application.
Load. Se produit au moment prcis o la feuile est charge dans la mmoire active et
safche lcran.
Paint. Se produit lorsque Windows doit, suite une action de lutilisateur, redessiner
la feuille pour faire apparatre une partie de la feuille qui tait cache par un autre
objet, tel quune icne.
Voici les vnements les plus courants pour les contrles TextBox :
Rappelez-vous quil existe beaucoup plus de contrles que vous nen dcouvrez
aujourdhui. Des vnements disponibles pour la plupart des contrles, tels
que les vnements lis la souris et au clavier, seront traits plus loin dans ce
livre. Nous nous contentons pour linstant des vnements qui vous seront les
plus utiles lors de vos premiers dveloppements.
La plupart de ces vnements de zones de texte sappliquent galement aux labels. Mais
les labels, de par leur nature, dclenchent les vnements dune manire lgrement
diffrente. Par exemple, le contrle Label supporte lvnement Change, mme si lutilisateur ne peut intervenir directement sur un label. Cest que le code Visual Basic peut,
lui, modier un label ; et, lorsque cela se produit, un vnement Change a lieu.
Le contrle Image supporte le mme jeu dvnements que le contrle Label. Les deux
sont en effet trs semblables, cela prs que le contrle Image afche une image au lieu
de texte.
81
<
:
Partie II
Si la proprit Cancel dun bouton de commande est dnie comme True, la frappe
de la touche Echap dclenche lvnement Click.
La frappe des touches de raccourci peut dclencher lvnement Click dun bouton
de commande.
Info
Tous les vnements dune application ne viennent pas forcment dune action
de lutilisateur. Les vnements peuvent tre dclenchs depuis le code Visual
Basic. Par exemple, vous demandez lutilisateur de cliquer sur un bouton de
commande lorsquil est prt visualiser le rsultat dun calcul. La procdure
vnementielle Click du bouton de commande provoque le calcul et lafchage
de ce rsultat. Mais votre code stipule aussi que, au-del dun certain temps, le
mme vnement Click soit automatiquement dclench. Lvnement peut
donc se produire, et le rsultat apparatre, avec ou sans lintervention de lutilisateur.
>
:
82
Ces nombres qui commencent chaque ligne du Listing 3.1, vous les retrouverez toujours dans la suite de louvrage. Ces nombres ne font pas partie du
programme ; il ne sagit que dune numrotation de rfrence qui nous
permettra, dans les leons, de vous renvoyer une ligne prcise et immdiatement identiable.
83
<
:
Partie II
Info
Visual Basic a mme plac le curseur dinsertion entre les deux lignes, de sorte quil ne
vous reste qu taper le corps de la procdure. Lorsque vous en avez termin, vous pouvez
crire en dessous une autre procdure vnementielle (auquel cas, vous devrez taper vousmme la premire et la dernire ligne), ou cliquer de nouveau sur le bouton Afcher lobjet
de la fentre Proprits pour revenir la fentre Feuilles.
>
:
84
Info
La Figure 3.8 montre une fentre Code afchant le code de plusieurs procdures vnementielles. La fentre Code spare les procdures, et supporte les oprations Windows
standards de copier, couper. En revanche, et contrairement un vrai traitement de texte,
la fentre Code ne gnre pas de retours la ligne automatiques. La raison en est que
chaque instruction Visual Basic doit constituer une ligne propre. Une ligne extraordinairement longue peut tre continue la ligne suivante, condition de placer un underscore la n de la premire ligne Ce signe indique Visual Basic que les deux lignes
doivent tre traites comme une seule ; vous, de votre ct, vous pouvez visualiser la
totalit de linstruction sans recourir la barre de dlement.
Figure 3.8
La fentre Code
fonctionne comme
un traitement de texte
pour procdures.
Lignes sparant
les procdures
85
<
:
Partie II
En rsum
Ce chapitre tait plus thorique que les deux premiers. Vous devriez maintenant tre en
mesure de mieux comprendre les contrles, les proprits et les vnements. La nature
des procdures devrait galement vous apparatre plus clairement, mme sil vous reste
peu prs tout apprendre du code Visual Basic. Vous avez retenu quune procdure
vnementielle doit exister pour chacun des contrles et des vnements auxquels vous
souhaiter faire ragir votre programme. Sans procdure vnementielle adquate,
lvnement serait ignor.
Le chapitre suivant vous enseigne ajouter des menus votre application an den faciliter lutilisation.
Questions et rponses
Q Pourquoi faut-il indenter le corps des procdures vnementielles ?
R En fait, vous devez indenter le corps de toutes les procdures. Lindentation nest
pas obligatoire en soi, mais elle vous permet de distinguer les vnements les uns
des autres dans les longues lignes de code. La fentre Code vous facilite dj la
tche en sparant les procdures par des lignes. Mais, lorsque vous imprimerez un
listing pour ltudier, lindentation vous permettra de reprer les procdures individuelles.
>
:
86
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous assurerez votre comprhension des sujets traits dans le chapitre, et des exercices qui vous
amneront mettre en pratique ce que vous avez appris. Il convient de comprendre les
rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces
rponses lAnnexe A.
Quiz
1. Quest-ce quune touche de raccourci ?
2. Les proprits supportent de multiples vnements. Vrai ou faux ?
3. Pourquoi affecter lvnement Cancel un bouton de commande ?
4. Comment reconnat-on le contrle qui a le focus ?
5. Comment lutilisateur dplace-t-il le focus dun contrle lautre ?
6. Quelle proprit dnit lordre du focus ?
7. Devinette : LoadPicture () est-ce une sous-routine, une fonction ou une procdure
vnementielle ?
8. Lorsque vous double-cliquez sur un contrle dans la fentre Feuilles, Visual Basic
gnre automatiquement la premire et la dernire ligne de la procdure vnementielle Click. Vrai ou faux ?
9. On peut dclencher un vnement, tel que DblClick, depuis le code Visual Basic.
Vrai ou faux ?
10. A quoi sert la proprit PasswordChar ?
87
<
:
Partie II
Exercices
1. Ecrivez la premire ligne de la procdure vnementielle Load pour une feuille
nomme frmMyApp.
2. Chasse au bogue : pourquoi les lignes qui suivent ne forment-elles pas une procdure vnementielle ?
3. Crez une application contenant trois zones de texte multilignes. Donnez ces
zones de texte une hauteur sufsante pour pouvoir afcher trois ou quatre lignes de
texte. Intgrez une barre de dlement horizontale la premire zone de texte, une
barre de dlement verticale la deuxime, et les deux types de barres de dlement
la troisime. Pour chacune des trois zones de texte, spciez le contenu par dfaut
Tapez ici. Ajoutez votre application un bouton de commande Quitter qui permette
lutilisateur de fermer le programme en appuyant sur Alt-Q.
>
:
88
PB1
Contrles, proprits
et vnements
Intercals et l entre les chapitres de ce livre, les sections "Projet bonus" vous aideront approfondir et mettre en pratique les connaissances acquises. Vous y trouverez
des listings dapplications compltes. Prenez le temps de crer ces applications ; elles
vous familiariseront avec lenvironnement Visual Basic et vous feront avancer dans la
matrise des techniques de programmation.
Lapplication de ce premier projet bonus met en uvre la proprit de zones de texte
PasswordChar. Le programme se sert de cette proprit pour demander et valider un mot
de passe. Si lutilisateur entre un mot de passe correct, une image apparat.
Faites des expriences sur les programmes des projets bonus. A mesure que vous
progresserez, vous pourrez modier ces applications pour vrier une supposition ou
vous exercer lcriture de code. Vous ne comprendrez sans doute pas tout du code
saisir pour cette application. Mais rien ne presse, et vous serez bientt mme de
lanalyser.
ce
Astu
Le mot de passe pour cette application est SSM. Mais ne le dites personne
89
Partie II
Info
Vous ntes pas oblig de dnir les proprits dun contrle ds quil est
plac sur la feuille. Vous pouvez commencer par placer tous les contrles,
pour ensuite dnir les proprits de chacun.
>
:
Contrle
Proprit
Valeur
Feuille
Name
frmPassword
Feuille
Caption
90
Proprit
Valeur
Feuille
Height
5610
Feuille
Width
8475
Image
Name
imgPassword
Image
BorderStyle
1-Fixed Single
Image
Height
1890
Image
Left
3000
Image
Stretch
True
Image
Top
2640
Image
Width
2295
Label
Name
lblPrompt
Label
BorderStyle
1-Fixed Single
Label
Caption
Label
Font
MS Sans Serif
Label
Font Size
14
Label
Font Style
Bold
Label
Height
855
Label
Left
2520
Label
Top
600
Label
Width
3375
Zone de texte
Name
txtPassword
Zone de texte
Height
375
Zone de texte
Left
3360
Zone de texte
PasswordChar
91
<
:
Partie II
Proprit
Valeur
Zone de texte
Text
Zone de texte
Top
1800
Zone de texte
Width
1695
Bouton de commande
Name
cmdTest
Bouton de commande
Caption
Bouton de commande
Left
6360
Bouton de commande
Top
3000
Bouton de commande #2
Name
cmdExit
Bouton de commande #2
Caption
E&xit
Bouton de commande #2
Left
6360
Bouton de commande #2
Top
3720
Ajouter le code
Une fois cre la fentre Feuilles, vous tes prt entrer le code. Le Listing PB1.1 fournit ce code. Notez lexistence de deux procdures vnementielles : cmdExit_Click() et
cmdTest_Click(). Chacune de ces deux procdures rpond lvnement Click pour un
bouton particulier. Lorsque lutilisateur clique sur le bouton de commande cmdExit,
cmdExit_Click() sexcute. Lorsque lutilisateur clique sur le bouton de commande
cmdTest, cmdTest_Click() sexcute.
ce
Astu
>
:
92
Analyse
Naturellement, vous devez encore apprendre dchiffrer les instructions de programmation Visual Basic. Mais la petite explication du programme que nous vous proposons ici
constitue une excellente introduction au Chapitre 5, qui expose les fondements du code.
Les lignes 1 3 constituent la procdure vnementielle Click du bouton cmdExit.
Lorsque lutilisateur clique sur le bouton cmdExit, linstruction End provoque la fermeture de lapplication. Lapplication reste afche lcran, mme si lutilisateur a entr
le bon mot de passe, et jusqu ce quil clique sur le bouton de commande cmdExit (ou
quil ferme la fentre du programme).
En tapant le code, vous constaterez que Visual Basic utilise des couleurs diffrentes
selon le texte. Cette coloration de syntaxe est une fonction utile, notamment pour
localiser les bogues assez tt dans la phase dcriture. Plus vous programmerez, mieux
vous reconnatrez les couleurs spciques. Les mots cls Visual Basic, tels que les
commandes, sont toujours afchs en bleu. Les objets, tels que contrles et proprits,
sont toujours afchs en noir. Les autres lments de code apparaisent en vert. Ainsi, si
un mot cl apparat en vert, cest que Visual Basic ne le reconnat pas, et vous savez
93
<
:
Partie II
immdiatement que vous avez tap quelque chose dincorrect. Le jeu de couleurs peut
tre modi depuis la page Format de lditeur du menu Outils, Options.
La syntaxe est lensemble des rgles dcriture dun langage de programmation. Si vous
orthographiez mal une commande ou oubliez un signe de ponctuation, une erreur de
syntaxe est gnre.
Visual Basic repre la plupart des erreurs de syntaxe ds que vous validez une ligne par
Entre. La Figure PB1.2 reproduit la bote de dialogue qui safche lorsquune ligne
incorrecte a t saisie. (La bote de dialogue ne parle pas toujours derreur de syntaxe ;
le message derreur est parfois plus prcis et dsigne linstruction fautive.) Si vous localisez le problme (dans ce cas, il sagit dun signe "gale" en trop), cliquez sur OK et
corrigez. Si vous hsitez, cliquez sur le bouton Aide pour obtenir plus dinformations.
ntion
Atte
Visual Basic ne repre pas toujours avec justesse le problme dans une
instruction fautive. Dans la Figure PB1.2, le problme est bien circonscrit ;
mais il arrive que Visual Basic ne dsigne pas le problme exact, peut-tre
parce quil ne sen est rendu compte que quelques mots cls aprs. Auquel
cas, vous aurez dabord vrier vous-mme les dernires lignes avant de
remdier au problme.
Figure PB1.2
Visual Basic signale
les erreurs de syntaxe
ds que vous changez
de ligne.
Les lignes 6 et 7 illustrent la premire faon de documenter votre code. Comme nous
lavons vu au premier chapitre, la documentation est importante parce que vous aurez
srement revenir sur le programme par la suite ; et plus vous insrez de descriptions
>
:
94
dtailles dans le code, plus vite vous comprendrez ce qui y est crit. Les lignes 6 et 7
sont des exemples de commentaires.
Visual Basic ignore compltement toute ligne qui commence par une apostrophe, signe
indiquant que ce qui suit nest pas du code. Rappelez-vous que les commentaires sont
destins aux humains, non aux ordinateurs.
Un commentaire est une note insre dans le code et qui en dcrit les sections. Un
commentaire plac tout en haut du code permet aussi au programmeur de donner son
nom et ses coordonnes. De cette faon, quiconque aura modier le programme
pourra, au besoin, se rfrer lauteur.
Info
Faire
Ajoutez en haut du code une ligne contenant la date et la description de toute
modication apporte au programme. Cette sorte de journal de maintenance
permettra, vous ou dautres, dtablir un suivi prcis des changements
implments, et facilitera la maintenance.
Les commentaires, sils ne concernent pas directement Visual Basic, doivent accompagner les instructions. Il convient dmailler le programme de descriptions en langage
clair, qui permettent de comprendre immdiatement la fonction de telle ou telle partie
du code. Comme le montre la ligne 11, un commentaire peut tre plac sur la mme
ligne quune instruction, si du moins elle nest pas trop longue. Essayez dagencer le
code et les commentaires de sorte que lon nait pas se servir des barres de dlement
dans la fentre Code. La modication et le dbogage du programme nen seront que
facilits.
ce
Astu
Les lignes 12, 13 et 14 constituent, en fait, une seule instruction Visual Basic. Linstruction est longue cause du chemin daccs du chier image spci. Vous pourriez aussi
bien mettre le tout sur une seule ligne, mais cette ligne excderait alors de loin la largeur
de la fentre Code. Visual Basic vous permet de poursuivre une mme ligne logique sur
plusieurs lignes physiques. Pour ainsi segmenter une instruction, il suft dinsrer une
95
<
:
Partie II
espace suivie dun underscore (_). Ce caractre, plac la n dune ligne, indique
Visual Basic que la ligne suivante nen est que la continuation.
ntion
Atte
Le chemin daccs spci la ligne 12 suppose que vous avez install avec
Visual Basic les chiers graphiques des exemples. Si tel nest pas le cas, le
chemin daccs ne conduira nulle part. Il vous faudra alors rechercher (
laide de loutil Windows du mme nom) le chier Coins.wmf sur vos CDROM dinstallation Visual Basic. Pour installer les images, insrez le
premier CD-ROM Visual Basic, et slectionnez Ajouter/Modier une option,
puis choisissez les chiers correspondants.
Lorsque la ligne fractionner est entre guillemets, la dmarche est plus dlicate. Vous devez
placer des guillemets avant lespace et lunderscore de bout de ligne, puis commencer la
ligne suivante par une esperluette (&), suivie de nouveaux guillemets, et ainsi de suite pour
toutes les lignes du commentaire. Vous comprendrez mieux le rle de lesperluette lorsque
nous tudierons, au Chapitre 5, les chanes de texte.
ce
Astu
Un mot avant de terminer. Vous vous tes peut-tre demand pourquoi lutilisateur de
notre application doit cliquer sur un bouton de commande pour "Tester le mot de passe".
Pourquoi ne pas le laisser taper son mot de passe puis appuyer sur Entre, au lieu de se
servir de la souris ? Comme nous le verrons au Chapitre 7, la raction certaines
touches, telle la touche Entre, impliquerait du code supplmentaire. Cette application a
t voulue aussi simple que possible. Car il vous en reste pas mal apprendre
>
:
96
Chapitre
Cration de menus
La barre de menus offre un type spcial de contrles qui permettent lutilisateur de
slectionner des options et dexcuter des commandes. Une option de menu peut faire
double emploi avec un contrle de la feuille. Par exemple, la fentre dapplication peut
contenir un bouton Quitter, tout en proposant loption de menu Fichier, Quitter. Dans les
deux cas, la commande provoque la fermeture de lapplication. Une option de menu
reprend galement la fonction dun bouton de barre doutils. Enn, loption de menu
peut tre le seul moyen dexcuter une tche prcise. Avec Visual Basic, la cration de
menus est fort simple.
Voici ce que nous tudierons aujourdhui :
97
Partie II
Une fois que vous avez fait votre choix parmi les options de menu et sous-menus
proposs, lassistant gnre lapplication et y intgre les contrles correspondants.
ce
Astu
Lavantage des menus, cest que la plupart des utilisateurs savent les utiliser. Les utilisateurs manipulent spontanment les options de menu quils
connaissent.
Pour peu que vous ayez quelque exprience des applications Windows classiques, vous
reconnatrez les options de menu proposes par lassistant Cration dapplications.
Les menus tels que Fichier, Edition, Fentre, apparaissent dans de nombreux programmes Windows ; les options de menu disponibles, telles que Fichier, Quitter, sont tout
aussi traditionnelles.
Mme si vous ne fournirez sans doute jamais autant doptions de menu et de sous-menu
que des applications de masse telles que Microsoft Word, il sagit dun bon modle pour
la conception de vos menus. A peu prs tous les programmes Windows incluent une
option Fichier, Quitter ; de mme pour les options Edition, Copier ou Edition, Couper.
Bien sr vos applications rpondent des objectifs spciques, et nont donc pas
"coller" aux standards Windows. Toutefois, inspirez-vous de ces standards aussi souvent
>
:
98
que possible. Les utilisateurs nen apprivoiseront que plus facilement vos applications. Et
plus vite ils sy habitueront, plus ils auront tendance les utiliser et plus vous aurez de
clients dles.
Lassistant Cration dapplications facilite considrablement la construction des menus.
Cest pourquoi vous devriez aussi souvent que possible vous en servir pour les applications ncessitant un systme de menus complexe. Les sections qui suivent montrent
quil est facile de crer des menus laide des outils Visual Basic. Mais cest encore
plus facile avec lassistant Cration dapplications : tout ce que vous avez faire, cest
de cliquer sur loption inclure dans lapplication nale. Mme si vous ne prvoyez pas
de barre doutils, ni rien de ce que propose lassistant Cration dapplications, il vous
permettra de partir dune application aux menus tout faits, et pour lesquels il ne restera
qu ajouter les dtails et les options de menu spciques requis par votre projet.
ce
Astu
Consultez, dans laide en ligne MSDN, le livre The Windows Interface Guide
to Software Design. Le chapitre "Menus, controls, and toolbars" dcrit les
standards Windows en la matire. En suivant ces grandes lignes, vous
vous assurez que votre application sera conforme, et aussi familire aux
utilisateurs que possible.
Si une option de menu de votre application doit afcher une bote de dialogue, terminez le libell de loption par des points de suspension (voir
Figure 4.2). Lorsque vous crez un menu sous-menus, Visual Basic se
charge dajouter la petite che noire.
Certaines options de menu donnent sur des menus additionnels. La Figure 4.3 montre le
menu Afchage de Visual Basic, dans lequel loption Barres doutils afche un sousmenu. Notez que, dans ce sous-menu, une option est coche. Cela indique que lutilisateur peut activer et dsactiver loption en la slectionnant. Le Crateur de menus permet
de crer des options de menu classiques ou cochables.
99
<
:
Partie II
Figure 4.2
Visual Basic
exploite les standards
Windows en matire
de menus et
doptions de menu.
Libell
Sparateur
Options
dsactives
Affiche
une bote
de dialogue
Raccourci
clavier
Figure 4.3
Visual Basic facilite
la cration de sousmenus.
Option coche
>
:
100
Sous-menu
Option
Options
slectionne actives
Le Crateur de menus
La Bote outils ne contient aucun outil qui permet de crer des menus. Il faut, pour
cela, recourir au Crateur de menus (voir Figure 4.4). Pour accder ce Crateur de
menus depuis la fentre Feuilles, il suft dappuyer sur Ctrl-E (raccourci pour Outils,
Crateur de menus).
Figure 4.4
Le Crateur de menus
permet dorganiser
les menus et sousmenus.
Liste des
lments
du menu
Proprits
du menu
101
<
:
Partie II
Visual Basic, cette application dexemple ne sera pas tout fait conforme aux standards
Windows. Mais cela nenlve rien lintrt de lexercice : reprendre les diffrentes
tapes de la cration de menus, et dmontrer la simplicit demploi du Crateur de menus.
Voici les objectifs de lapplication :
offrir une option de menu qui permette lutilisateur de changer la couleur de fond
du label ;
offrir une option de menu qui permette lutilisateur de changer le texte du label ;
Ce programme, vous le voyez, sera fort simple, mais il nen implique pas moins la cration de menus fonctionnels.
Tout dabord, ouvrez une nouvelle application EXE standard en choisissant Fichier,
Nouveau projet. Assignez la feuille le nom frmMenu, puis changez la proprit Caption
pour quapparaisse sur la barre de titre Application Menus. Enn, redimensionnez la feuille
en donnant Height la valeur 6030 et Width la valeur 8415.
Ajoutez la feuille un label avec les proprits suivantes :
>
:
Proprit
Valeur
Name
lblMenu
Alignment
2-Center
BackColor
BorderStyle
1-Fixed Single
Caption
Font Size
14
Font Style
Bold
Height
615
Left
1800
Top
2160
Width
4935
102
Info
Info
103
<
:
Partie II
Vous tes maintenant prt crer le menu de lapplication. Cliquez sur la feuille, puis
faites Ctrl-E pour afcher le Crateur de menus. La plupart des champs du Crateur de
menus sont vides ; ils attendent les valeurs que vous spcierez pour chaque option.
ition
Dfin
Champs est un terme gnrique dsignant lemplacement dans lequel lutilisateur ou le programmeur saisit des valeurs ; les champs prennent gnralement la forme de zones de texte. Le Crateur de menus, comme la plupart
des botes de dialogue, contient de nombreux champs.
Voici ce qui doit apparatre sur la barre de menus que nous allons maintenant crer :
Fichier ;
Couleur ;
Message.
A ces menus devront tre attribues des touches de raccourci, de sorte que lutilisateur
puisse y accder via le clavier. Les lments que vous ajoutez dans le Crateur de menus
peuvent apparatre directement sur la barre de menus, ou bien dans un menu droulant,
selon les valeurs que vous spciez. Suivez ces tapes pour ajouter le menu chier la
barre de menus de lapplication :
1. Tapez &Fichier comme contenu de Caption. Comme dans toutes les autres valeurs
en Visual Basic, lesperluette indique que le F pourra tre utilis comme touche de
raccourci pour ce menu. A mesure que vous tapez le libell, Visual Basic le reproduit dans la zone de liste en bas du Crateur de menus.
2. Appuyez sur Tab pour passer au champ Name. Tab et Maj-Tab permettent de passer le
focus dun champ un autre.
3. Tapez mnuFile comme nom du contrle.
ce
Astu
Info
>
:
104
Gardez lesprit que les options de menu sont des contrles qui, comme
tous les contrles, ont une proprit Name.
Faire
Vous devez adopter pour lensemble des menus une convention de
dnomination cohrente. Apposez tous les noms de menus le prxe mnu,
suivi du nom du menu ; ainsi, le nom du contrle correspondant au menu
Fichier serait mnuFile (ou, en code francis, mnuFichier). Dans les noms
des options de menu, reprenez le prxe ainsi que le nom du menu ; ainsi, le
nom du contrle correspondant loption de menu Fichier, Quitter serait
mnuFileExit (ou, en code francis, mnuFichierQuitter).
4. Oubliez les autres champs et cliquez sur le bouton Suivant pour prparer le menu
suivant (bon apptit). En cliquant sur le bouton Suivant, vous indiquez que la
premire option est complte.
5. Dans le champ Caption de loption suivante, tapez &Couleur ; tapez mnuColor dans
le champ Name.
6. Cliquez sur Suivant.
7. Tapez &Message comme Caption et mnuMessage comme Name. Lcran du Crateur de
menus doit ressembler la Figure 4.6.
Figure 4.6
Vous venez de crer
les trois premires
options de menu.
Trois menus
Tester le menu
Les menus peuvent tre tests tout moment durant la cration. Cliquez sur OK pour
fermer le Crateur de menus. La fentre Feuilles afche la nouvelle barre de menus.
Appuyez sur F5 pour excuter lapplication. Comme vous navez pas encore cr les
sous-menus ni crit les procdures vnementielles, rien ne se passe lorsque vous
cliquez sur les menus. Mais ces menus sont bien l, attendant la suite des oprations.
Cliquez sur le bouton de fermeture de lapplication en cours dexcution (ou cliquez sur
le bouton Fin de la barre doutils Visual Basic), puis appuyez sur Ctrl-E pour revenir au
Crateur de menus.
105
<
:
Partie II
Info
Visual Basic doit, dune manire ou dune autre, tre en mesure de distinguer les menus
comme tels davec les options de menu. Si vous insriez loption Quitter aprs Fichier
en utilisant la mme technique que dans les sections prcdentes, Visual Basic ajouterait
cette option entre Fichier et Couleur, sur la barre de menus mme, et non comme une
option du menu Fichier.
Avant dinsrer une nouvelle option, cliquez sur le bouton gurant une che pointe
vers la droite. Visual Basic ajoute des points de suspension aprs &Fichier, lesquels
indiquent que llment en question est une option de menu, et non un menu. Dans le
champ Caption, tapez &Quitter. Tout en tapant, vous voyez que le Crateur de menus
insre loption en bas de la zone de liste, indente par rapport aux autres. Pour un sousmenu qui viendrait simbriquer dans un menu existant, il faudrait cliquer deux fois sur
la che-droite, ce qui ajouterait deux sries de points de suspension.
ntion
Atte
Info
Dans le champ Name de loption, tapez mnuFileExit. Le menu Fichier et son contenu
sont maintenant complets. Vous pouvez excuter le programme pour vrier le rsultat.
>
:
106
Naturellement, rien ne se passe lorsque vous slectionnez loption Quitter, car la procdure vnementielle requise nest pas encore crite.
Une options de menu cochable est une option de menu qui afche une coche
lorsquelle est active.
La Figure 4.7 montre le menu droulant Couleur que nous allons maintenant crer.
Comme vous pouvez le voir, lune des options du menu est coche, les deux autres ne le
sont pas. En crant le menu Couleur, vous dnirez loption Rouge comme option
active par dfaut. Le label apparatra donc sur fond rouge jusqu ce que lutilisateur
slectionne une autre couleur.
Figure 4.7
Seule loption
de menu coche est
active.
ntion
Atte
En fait, plusieurs options de menu peuvent tre coches la fois. Cest par une
programmation adquate de la procdure vnementielle que vous dterminez
le caractre exclusif de la slection. Ainsi, lorsque lutilisateur cochera une
option diffrente, loption originale sera automatiquement dsactive.
107
<
:
Partie II
>
:
108
Figure 4.8
La proprit Enabled
dtermine quelles
options seront
disponibles ou
indisponibles.
Options disponibles
Options indisponibles
Notez que le menu Dbogage, linstar de la plupart des autres menus, afche les raccourcis clavier droite des options de menu. F8 est le raccourci du mode Pas pas dtaill,
Maj-F8 celui du mode Pas pas principal. (Dans le cas des combinaisons de touches qui
lancent une option de menu, comme Ctrl-C pour Edition, Coller, on parle de raccourcis
clavier plutt que de touches de raccourci.) Pour affecter un raccourci clavier vos
options de menu, faites votre choix dans la liste droulante Shortcut. Pour la plupart des
raccourcis clavier, on utilise la touche Ctrl, comme dans Ctrl-C.
Info
Vous pouvez remarquer que sept des options du menu Dbogage (dont
certaines sont dsactives) prsentent leur gauche une icne. Ces icnes
renvoient au bouton correspondant de la barre doutils. Ainsi, il existe sur la
barre doutils Dbogage un bouton pour loption Pas pas dtaill. Les
icnes permettent aux utilisateurs de reprer les boutons qui correspondent
telle ou telle option de menu. Malheureusement, Visual Basic ne donne
aucun moyen dadjoindre des icnes vos propres options de menu (mais
des contrles externes sont disponibles cet effet).
109
<
:
Partie II
Figure 4.9
La barre
sparatrice vous
permet de grouper
les options de menu.
Option active
Barre sparatrice
Suivez ces tapes pour ajouter le menu Message et y inclure une barre sparatrice :
1. Appuyez sur Ctrl-E pour afcher le Crateur de menus.
2. Dans la liste droulante, cliquez sur la ligne situe en dessous de &Message, o
loption suivante va prendre place.
3. Cliquez sur la che-droite pour imbriquer loption de menu dans le menu Message.
4. Tapez &Message initial dans le champ Caption et mnuMessageInitial dans le
champ Name.
5. Cochez la case Checked pour que loption soit slectionne par dfaut au dmarrage
du programme.
6. Cliquez sur Suivant. Notez que Visual Basic dcale automatiquement le nouvel
lment suivant en fonction de lindentation de llment prcdent. (Pour supprimer cette indentation et faire de loption un menu part entire, cliquez sur la
che-gauche ; pour faire remonter ou redescendre llment dans larborescence
et limbriquer dans un autre menu ou sous-menu, cliquez sur la che-haut ou sur
la che-bas.)
7. Dans le champ Caption de llment suivant, tapez un tiret simple (-). Cest le petit
nom de la barre sparatrice. Lorsquun lment a pour Caption un tiret simple,
Visual Basic le transforme en barre sparatrice.
8. Dans le champ Name de la barre sparatrice, tapez mnuMessageSep1. Les barres
sparatrices sont des objets part entire et, ce titre, requirent un nom unique.
Les barres sparatrices suivantes du menu message pourront tre nommes
mnuMessageSep2, mnuMessageSep3, etc.
>
:
110
ntion
Atte
ce
Astu
Lassistant Cration dapplications vous permet dajouter des barres sparatrices aux menus quil gnre. Il suft pour cela de slectionner loption
[Separator].
111
<
:
Partie II
Vous pouvez crire une procdure vnementielle la fois. Dans la fentre Feuilles,
slectionnez loption de menu laquelle vous souhaitez affecter le code. Visual
Basic ouvre la fentre Code et insre automatiquement les lignes dencadrement de
la procdure. Il ne reste qu taper le corps. Lorsque vous en avez termin, fermez la
fentre Code, puis cliquez sur la prochaine option de menu programmer ; et ainsi
de suite.
ition
Dfin
Aprs avoir entr la premire procdure vnementielle selon cette mthode, vous
pouvez slectionner loption de menu suivante directement depuis la fentre Code.
Vous pouvez voir, tout en haut de cette fentre, deux listes droulantes : la liste Objet et
la liste Procdure. La Figure 4.11 montre une liste Objet ouverte. Dans la liste Objet,
slectionnez la prochaine option de menu pour laquelle une procdure vnementielle doit tre crite. Visual Basic insre les lignes dencadrement de cette procdure juste en dessous de la prcdente. Tapez le corps. Continuez ainsi jusqu ce
que toutes les procdures vnementielles des options de menu soient programmes.
Info
>
:
Dans cette application, tous les objets, hormis le label, sont des contrles
de menu. Les contrles de menu ne supportent que les vnements
Click ; aussi la liste Procdure nafche-t-elle que lvnement Click.
Lorsque vous manipulez des contrles supportant dautres types dvnements, la liste Procdure est naturellement plus riche. Par exemple, si
vous slectionniez le contrle du label dans la liste Objet, puis que vous
ouvriez la liste Procdure, les noms dvnements proposs seraient bien
plus nombreux, parce que le contrle Label supporte plusieurs types
dvnements.
Vous pouvez enn ouvrir la fentre Code et saisir le code du dbut la n. Cette
mthode est un peu plus longue, car vous devez taper vous-mme les lignes dencadrement.
112
Figure 4.11
Les lignes
dencadrement de
la nouvelle procdure
peuvent tre appeles
depuis la fentre
Code.
Liste Procdure
Liste Objet
ce
Astu
Les listes Objet et procdure de la fentre Code sont aussi utiles pour localiser du code que vous avez dj entr, mais que vous souhaitez consulter ou
modier. Imaginons, par exemple, une application qui contient de multiples
procdures vnementielles pour plusieurs types de contrles. Vous voulez
atteindre la procdure DblClick dun bouton de commande spcique.
Slectionnez, dans la liste Objet, le contrle correspondant, puis choisissez
lvnement DblClick dans la liste Procdure : Visual Basic afche le code
de cette procdure dans la fentre Code. Magique !
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
113
<
:
Partie II
>
:
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:
114
61:
mnuMessageInitial.Checked = False
62:
mnuMessageProgramming.Checked = False
63:
mnuMessageSimple.Checked = True
64: End Sub
Encore une fois, ne vous souciez pas des dtails du code. Mais assurez-vous de bien
saisir le fonctionnement des procdures avant daller plus loin. A partir du chapitre
suivant, vous commencerez comprendre les subtilits du langage Visual Basic ; et une
bonne comprhension des procdures vnementielles vous sera alors indispensable.
Excutez le programme et testez-le. Slectionnez plusieurs reprises les diverses
options des menus Couleur et Message an de vrier que les coches suivent bien vos
slections et que le label rete bien les changements. Vous pouvez changer la couleur
et le texte dans nimporte quel ordre.
En rsum
Ce chapitre vous a prsent le fonctionnement des menus Visual Basic. Le Crateur de
menus fonctionne un peu comme la fentre Proprits, et vous permet de dnir facilement les proprits des contrles du menu. Le Crateur de menus vous permet
galement de grer les proprits Checked et Visible, ainsi que dattribuer des raccourcis clavier aux diverses options de menu.
Le chapitre suivant vous invite plonger dans les profondeurs du langage de programmation Visual Basic. Vous dcouvrirez de quelle manire Visual Basic reconnat et
stocke les donnes, et apprendrez dnir les valeurs de proprits lors de lexcution
laide du code.
Questions-rponses
Q Pourquoi la barre de menus ne gnre-t-elle pas dvnements Click ?
R En fait, cest ce quelle fera si aucun contenu droulant nest dni pour le menu
slectionn. Si lutilisateur slectionne un menu qui ne contient ni options ni sousmenus, un vnement Click est gnr. Si, par contre, le menu se droule pour
afcher des options ou des sous-menus, cette action prend le pas sur lvnement
Click.
115
<
:
Partie II
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.
Quiz
1. Comment sappelle la bote de dialogue qui vous aide dans la cration des menus ?
2. Les options de menu sont des contrles. Vrai ou faux ?
3. Quel est lvnement que toutes les options de menu supportent ?
4. Dans quel contexte utilise-t-on lexpression raccourci clavier ?
5. A quoi servent les raccourcis clavier dans lutilisation des menus ?
6. Quel vnement les options de menu gnrent-elles si lutilisateur y accde par un
raccourci clavier ?
7. Le Crateur de menus vous aide concevoir le systme de menu et crer les procdures vnementielles Click des options de menu. Vrai ou faux ?
8. Quel est leffet de la proprit Checked pour une option de menu ?
9. Plusieurs options de menu peuvent tre coches en mme temps. Vrai ou faux ?
10. Dans le Listing 4.1, quoi servent les lignes 57, 58 et 59 ?
Exercices
1. Expliquez la diffrence entre ces deux oprations du Crateur de menus : entrer un
menu comme tel et entrer une option de menu.
2. Chasse au bogue. Manuel a des problmes avec ses menus : les options restent
coches mme lorsque lutilisateur en slectionne dautres. Quel conseil donneriezvous au pauvre Manuel ? (Vous navez pas crire de code.)
3. Attribuez des raccourcis clavier chacune des options de menu cres aujourdhui.
Assurez-vous que ces raccourcis clavier soient bien tous uniques.
>
:
116
Chapitre
117
Partie II
Notions prliminaires
Avant dentrer dans le vif du code, quelques considrations prliminaires simposent.
Vous devez comprendre de faon plus approfondie les rapports quentretiennent le code
et les divers contrles et feuilles dune application. Tout dabord, rappelez-vous que la
fentre Projet permet dafcher et de grer lensemble des chiers associs votre
application. Les procdures vnementielles que vous crivez dans la fentre Code ne
ncessitent pas de chiers propres. Elles sont stockes mme leurs contrles respectifs. Les projets que nous avons tudis jusquici ne contenaient chaque fois quune
seule feuille, laquelle incluait les divers contrles et procdures vnementielles correspondantes. Comme vous allez le voir, les feuilles ne contiennent pas que des procdures
vnementielles, mais galement du code "gnral".
Nous avons vu au chapitre prcdent que le code se prsente sous la forme de procdures, et que Visual Basic supporte deux types de procdures : les sous-routines et les
fonctions. Les procdures vnementielles tombent dans la catgorie des sous-routines.
Vous apprendrez bientt crire des procdures de type fonctions. Quand une procdure
nest pas une procdure vnementielle affecte un contrle particulier, le code prend
la forme spare dun module. La fentre Projet afche les modules du projet en cours
(quand il en contient).
ition
Dfin
Un projet qui contient plusieurs feuilles contient plusieurs modules de feuilles. En effet,
les contrles de chaque feuille devant rpondre des vnements prcis, chaque feuille
a son propre code stock dans un module de feuille. Lorsque vous incluez plusieurs
feuilles un projet, vous devez dabord dterminer la feuille qui apparatra en premier
au dmarrage de lapplication. La premire feuille cre est la feuille de dmarrage par
dfaut, mais vous pouvez en dsigner une autre en slectionnant, dans le menu Projet, la
commande Proprits de [projet], ou [projet] est le nom du projet en cours. Visual Basic
afche alors la bote de dialogue Proprits du projet (voir Figure 5.1). Vous apprendrez
bientt programmer lapplication de sorte quune feuille secondaire safche au
moment voulu.
>
:
118
Figure 5.1
Dans la bote de
dialogue Proprits
du projet, vous
spciez la feuille
de dmarrage.
Nom de la feuille
de dmarrage
Les sections de dclarations apparaissent toujours en haut de chacun des modules qui
contiennent le code. Elles apparaissent donc avant toute procdure vnementielle. Tout
code entr avant la premire procdure vnementielle dun module est considr
gnral, plutt que li un contrle spcique. Pour commencer, vous dclarerez des
donnes dans cette zone, traitant ainsi la zone entire comme une section de dclarations. Lorsque vous serez plus avanc, vous y crirez galement des procdure
gnrales.
La fentre Code reproduite en Figure 5.2 devrait vous aider mettre tout a en perspective.
Les dtails ne sont pas importants pour linstant ; seule compte lide gnrale. Dans le
texte slectionn, la section de dclarations souvre sur linstruction Option Explicit.
Notez le contenu afch des listes Objet et procdure de la fentre Code : (General) et
119
<
:
Partie II
(Declarations). Grce aux indications de ces deux listes, vous savez toujours dans quelle
catgorie de programmation tombe une ligne de code.
Figure 5.2
La fentre Code
contient plusieurs
sections.
Sections de
dclarations
Procdures
gnralistes
Dbut des
procdures
vnementielles
Les deux procdures suivantes ne sont pas des procdures vnementielles. Ce qui se
voit leur nom : rappelez-vous que le nom des procdures vnementielles doit toujours
contenir un underscore qui spare le nom du contrle de celui de lvnement. Si vous
cliquiez dans la procdure Update_Count(), la liste Objet afcherait encore (General),
parce que le code fait partie de la section gnrale du module. La liste Procdure, en
revanche, afcherait Update_Count, le nom de la procdure slectionne.
Voil pour le tableau gnral. Nous entrons maintenant dans le vif du sujet.
>
:
120
Entiers. Nombres entiers sans dcimale, tels que 614, 0, 934 ou 3 918 938. Les
entiers peuvent exprimer un ge, un numral, un nombre dannes, etc. En anglais,
"entier" se dit integer.
Dcimaux. Nombres dcimaux pouvant exprimer une valeur fractionnaire, tels que
8.709, 0.005 ou 402.35534. Les dcimaux peuvent exprimer une temprature, une
somme dargent, un taux dintrt, etc. Les dcimaux exigent la virgule, mme si la
partie dcimale, situe aprs la virgule, est zro.
Les valeurs numriques dexemple sont appeles littraux, ou parfois constantes, parce
quils ne changent jamais. La valeur 614 sera toujours 614. Dans une section ultrieure sur
les variables, vous apprendrez dclarer les valeurs changeantes.
ntion
Atte
Visual Basic stocke et traite diffremment les entiers et les dcimaux, mme
si la diffrence nest pas toujours vidente pour nous autres humains. Par
exemple, 8 nest pas la mme chose, pour Visual Basic, que 8.00.
Certains types de donnes consomment plus de mmoire et sont moins efcaces, tandis
que dautres consomment moins de mmoire et sont plus rapides calculer. On ne peut
jamais juger " lil" du poids en mmoire dun nombre. Le nombre 29 999 occupe
autant de mmoire que le nombre 701.
ce
Astu
En vous initiant aux types de donnes supports par Visual Basic, vous
apprendrez aussi combien de mmoire requiert chacun des types. Bien que
les questions de mmoire ne soient pas aujourdhui moins problmatiques
quauparavant, le programmeur souhaite toujours que son application
sexcute le plus rapidement possible. Si donc vous avez le choix entre
plusieurs types de donnes pour une valeur, privilgiez le moins coteux en
mmoire.
Le Tableau 5.1 dcrit les huit types de donnes numriques supports par Visual Basic, le
poids en mmoire de chacun, et la plage de valeurs couverte. Cest en fonction de ces
deux derniers critres quil convient doprer ses choix. Si, par exemple, vous devez
exprimer un nombre ngatif, le type Byte est exclu. En revanche, pour exprimer des ges
de personnes, le type Byte sera le plus appropri.
Info
121
<
:
Partie II
Info
La notation scientique permet dexprimer de faon abrge (et approximative) des valeurs dcimales trs petites ou trs grandes. Le E signie exposant.
On utilise alors le type de donnes Single, pour "prcision simple". La notation scientique de haute prcision emploie un D, pour "prcision double" ; le
type de donnes sera alors Double. Le E et le D peuvent aussi bien tre crits
en minuscules. Pour obtenir lquivalent numrique dune valeur en notation
scientique, on multiplie le nombre situ gauche du E ou du D par 10 la
puissance du nombre de droite. Si lexposant est ngatif (le E ou le D est suivi
dun signe moins), on divise le nombre situ gauche du E ou du D par 10
la puissance du nombre de droite. Par exemple, 5.83E+5 gale 5.83 105,
soit 5.83 100 000, soit une valeur Single de 583 000. Dans ce cas prcis,
videmment, on ne gagne pas grand-chose utiliser la notation scientique.
Mais, dans le cas dune valeur de 5.83E+125 (583 suivi de 123 zros),
lavantage est vident. Le nombre 3.2D6 gale 3.2/1 000 000,
soit .0000032 dans une zone de stockage Double.
Tableau 5.1 : Les huit types de donnes numriques supports par Visual Basic
Type
Stockage
Plage
Byte
1 octet
De 0 255
Integer
2 octets
De 32 768 32 767
Long
4 octets
Single
4 octets
Double
8 octets
De 1.79769313486232E+308 4.94065645841247E324
pour les valeurs ngatives ; de 4.94065645841247E324
1.79769313486232E+308 pour les valeurs positives.
Currency
8 octets
De 922 337 203 685 477.5808 922 337 203 685 477.5807
(cette extrme prcision garantit lexactitude deux dcimales prs
des calculs comptables et nanciers).
Decimal
12 octets
+/79 228 162 514 264 337 593 543 950 335 sans dcimale ;
+/7.9228162514264337593543950335 avec jusqu 28 dcimales
aprs la virgule. (Le type de donnes Decimal nest pas encore
>
:
122
; de
Si la question des types de donnes vous semble obscure ou secondaire, cest que nous
navons pas encore tudi les zones de stockage des donnes ; ce sera lobjet de la
section sur les variables. Lorsque vous tapez la valeur littrale 8.3 dans un programme,
il nest pas ncessaire de spcier que ce littral est de type Single. Ce dont vous devez
vous soucier, en revanche, cest du type de zone mmoire utilis pour stocker cette valeur.
Vous ne pouvez stocker 8.3 comme un entier et esprer que Visual Basic traite la
valeur adquatement.
Il peut tre utile, quand vous utilisez un littral, de spcier le type de donnes correspondant. Imaginons, par exemple, que la valeur 8.3 est incluse dans un calcul
mathmatique de haute prcision, combine des valeurs Double. Si Visual Basic
suppose que 8.3 est de type Single, le rsultat pourrait ne pas prsenter autant de
dcimales que lexige la prcision souhaite. La solution est dadjoindre la valeur un
sufxe spcique qui indique Visual Basic de traiter le littral selon son type propre.
Ainsi, si vous tapez 8.3#, Visual Basic traitera dans le calcul cette valeur comme
Double, et donnera au rsultat la plus grande prcision dcimale possible.
Tableau 5.2 : Sufxes Visual Basic dsignant les types des littraux
Sufxe
Type de donnes
&
Long
Single
Double
Currency
ntion
Atte
les types
types de
ce
Astu
123
<
:
Partie II
Une chane est une srie de caractres (une chane de zro caractre est
encore une chane). Si ces caractres peuvent tre des chiffres, le contenu
dune chane ne peut jamais tre utilis dans un calcul. En revanche, il est
possible de se servir des chanes pour des noms, des adresses, des codes, des
numros de scurit sociale, etc. En fait, on y met peu prs tout. Les types
de donnes numriques, quant eux, ne sont utiles qu des ns de calcul,
ou dans les cas dinformations numriques strictes, telles que des sommes
dargent.
Outre les donnes de chane, Visual Basic supporte plusieurs autres types de donnes,
tels que les dates, les variables boolennes, etc.
ition
Dfin
Tableau 5.3 : Types de donnes non numriques supports par Visual Basic
Type de donnes
String
(longueur xe)
String (longueur
>
:
Stockage
variable)
Plage
De 0 2 milliards de caractres
Date
8 octets
Boolean
2 octets
True
Object
4 octets
ou False
Variant
(numerique)
16 octets
Variant
(texte)
Longueur + 22 octets
124
Les littraux de chanes doivent toujours tre crits entre guillemets. Les chanes peuvent
contenir nimporte quels caractres. Les littraux suivants sont tous des chanes valides :
Tout ce qui est entre guillemets est une chane, mme la chane nulle de la dernire ligne.
ition
Dfin
Une chane nulle est une chane dune longueur de zro octet, dont on se sert
parfois pour rinitialiser le contenu dune chane (lui donner la valeur
zro). La valeur spciale Null reprsente ce type de chanes. Visual Basic
supporte aussi une valeur de chane spciale dite chane vide, reprsente
par le mot cl Empty. Les chanes vides sont semblables aux chanes nulles,
mais sont traites dune manire un peu diffrente : une proprit de
contrle qui contient le mot cl Empty sera interprte comme nayant
encore jamais t initialise par quelque valeur que ce soit, pas mme une
chane nulle.
#4 juillet 1776#
#7:11 pm#
#19:11:22#
#1-2-2003#
#5-Dc-99#
Le type de donnes Boolean est appropri aux valeurs de proprits qui ne peuvent
recevoir que les valeurs mutuellement exclusives True et False ; par exemple, une
valeur de proprit Enabled.
Le type de donnes Variant est employ pour toutes sortes de donnes, lexception
des chanes de longueur xe. Le type Variant est utile divers titres, notamment
lorsquune zone de stockage doit recevoir des donnes de types diffrents. Une zone de
stockage Variant peut ainsi servir de zone de stockage temporaire pour des donnes qui
seront ultrieurement places dans une zone de stockage plus spcique.
125
<
:
Partie II
Info
Vous ne pouvez pas ne pas avoir entendu parler du fameux bogue de lan
2000. An dconomiser de lespace mmoire, les programmeurs ont,
pendant de nombreuses annes, enregistr les dates sous un format deux
chiffres. Pour les programmes conus de cette faon, des problmes sont
susceptibles de se produire lorsque lanne deux chiffres passera de 99 ...
00. Rassurez-vous, Visual Basic passera le cap de lan 2000 ; son format de
reprsentation interne des dates tient compte du millsime. Vos programmes
Visual Basic ne devraient donc souffrir daucun dysfonctionnement minuit,
le 31 dcembre 1999.
Nanmoins, certains programmeurs Visual Basic recourant des bidouillages destins pargner du temps et de lespace mmoire, certains codes
peuvent cesser de fonctionner cette date. En tant que nouveau venu dans le
domaine de la programmation, gardez lesprit ce problme, et travaillez
toujours sur des annes quatre chiffres.
Les variables
Les variables reoivent diffrentes valeurs. Si ses valeurs peuvent changer, cest que la
variable nest rien de plus quune zone de stockage, une sorte de bote capable de contenir
une seule valeur la fois. Lorsque vous affectez une variable une nouvelle valeur, la
valeur prcdente est remplace. La valeur du littral 54 ne changera jamais ; mais si vous
stockez ce littral dans une variable, la valeur 54 ne sy maintiendra que tant que
vous naffectez pas une nouvelle valeur.
ition
Dfin
Une variable est une zone de stockage temporaire en mmoire, dsigne par
un nom unique. Les variables reoivent les valeurs et les calculs intermdiaires attribus aux contrles de la feuille et gnrs par eux.
Vous seul dcidez du nom des variables de votre code. Deux variables diffrentes ne
peuvent prendre le mme nom dans une mme procdure, car Visual Basic ne saurait
alors les distinguer. A la diffrence des proprits de contrles, dj nommes dans le
langage, les variables ont pour seul nom celui que vous leur donnez. Avant de pouvoir
utiliser une variable, il faut la dclarer, cest--dire indiquer Visual Basic son nom et
le type de donnes quelle contiendra. Les variables ne peuvent contenir que le type de
donnes pour lequel elles ont t dclares. Ainsi, une variable dclare comme Byte
ne pourra pas contenir une valeur de chane. (Les variables dclares comme Variant
font toutefois exception cette rgle.)
>
:
126
Cette instruction indique Visual Basic que la suite du code contient les dclarations de
toutes les variables du module courant. Par exemple, si vous orthographiez mal un nom
de variable dans le code, Visual Basic sen avisera aussitt. Si vous nexigez pas la
dclaration explicite des variables, Visual Basic traitera simplement les variables fautives
comme non initialises, et les calculs impliquant ces variables renverront des rsultats
errons.
Info
VarName est le nom assign la variable ; DataType est lun des types de donnes prsents aux Tableaux 5.1 et 5.3. Si vous dclarez une variable lintrieur dune procdure
(quil sagisse ou non dune procdure vnementielle), ce doit tre tout de suite aprs
la premire ligne dencadrement. La variable est alors disponible pour toute la procdure, et seulement pour cette procdure. Les autres procdures nont aucun accs la
variable, qui ainsi reste locale, cest--dire valable uniquement pour la procdure qui la
contient. Si, en revanche, vous dclarez une variable dans la section de dclarations du
module, cette variable sera disponible pour toutes les procdures du module. La variable
est alors globale pour le module. Toutefois, aucun autre module de lapplication ny
aura accs. Il est possible de dclarer des variables globales pour un projet entier ; mais
plus vos variables seront locales, moins vous risquez dutiliser une mme variable pour
deux emplois diffrents.
127
<
:
Partie II
Info
Deux variables peuvent porter le mme nom tout en tant bien distinctes,
pour autant quelles soient dclares localement dans des procdures diffrentes. En outre, deux procdures peuvent se partager une variable dclare
localement pour une seule des procdures. Cest au Chapitre 8 que vous
apprendrez partager les variables locales.
Tous les noms de variables doivent commencer par une lettre de lalphabet.
Employez pour les noms un jeu limit de caractres spciaux. Le plus sr est de sen
tenir lunderscore (_). En nutilisant que des chiffres, des lettres et lunderscore,
vous navez pas vous soucier des caractres spciaux non autoriss. Notamment, les
noms de variables ne doivent pas contenir despaces.
Incluez dans les noms de variables un prxe dsignant le type de donnes. Cela
vous pargnera de consulter la section de dclarations du programme pour dterminer le type de donnes dune variable, et ainsi vous risquerez moins de vous
tromper. Le Tableau 5.4 prsente les prxes de noms de variables couramment
utiliss.
Info
>
:
On peut stocker des valeurs dun certain type dans des variables dclares
pour un type diffrent, condition que les deux types soient compatibles,
notamment en taille. Par exemple, vous pouvez stocker une valeur de type
Byte dans une variable de type Integer, parce que ce dernier type couvre une
plage de valeurs plus grande que le type Byte.
Employez des noms explicites, tels que curTotal, plutt que des noms ambigus tels
que a ou curX1. La documentation du code nen sera que facilite.
Servez-vous des lettres capitales pour sparer les parties du nom. (Dans cet ouvrage,
nous nutiliserons pour les noms de variables que les lettres et les chiffres ; certains
programmeurs prfrent toutefois recourir lunderscore, comme dans curTotal
_General.)
128
Type de donnes
Exemple
bln
Boolean
blnBoutonEnabled
byt
Byte
bytLength
cur
Currency
curSales98
dte
Date
dteOverdue
dbl
Double
dblScientificAmt
int
Integer
intYear1998
lng
Long
lngWeatherDistance
obj
Object
objWorksheetAcct99
sng
Single
sngSales1stQte
str
String
strFirstName
vnt
Variant
vntValue
Dim
Dim
Dim
Dim
Dim
intTotal As Integer
curSales99 As Currency
dteFinal As Date
strName As String
blnIsChecked As Boolean
Le nom des variables de type Boolean doit voquer une question laquelle on rpondrait par oui ou non (ou par vrai ou faux, True ou False), comme pour lexemple blnIsChecked (blnEstCoche en franais).
Vous pouvez galement, en les sparant par des virgules, dclarer plusieurs variables
dans une mme dclaration Dim ; mais il faut alors inclure la clause As DataType pour
chaque variable :
Dim intTotal As Integer, curSales99 As Currency
129
<
:
Partie II
ntion
Atte
Les variables strCityName et strStateName peuvent toutes deux contenir des chanes de
nimporte quelle longueur. Si, dans strCityName, vous stockez dabord "Paris", et que
y vous stockiez par la suite "Iekaterinenbourg", la chane sajustera aux diffrentes
valeurs. Cest sur des chanes longueur variable que vous travaillerez le plus souvent.
Aussi ce livre ne sattardera-t-il pas sur les chanes longueur xe, moins que la
longueur ne soit importante, comme cest notamment le cas avec les chiers. Vous
pouvez aussi limiter le nombre de caractres susceptibles dapparatre sur un label, ou
sur tout autre contrle, en y assignant une chane de longueur xe.
Info
Voici le format des instructions Dim par lesquelles on dclare les chanes longueur
xe :
Dim VarName As String * Length
Loption * Length indique Visual Basic que la chane dclare ne devra jamais occuper
plus de caractres que ne le spcie Length (longueur). Voici la dclaration section de
dclaration dune variable dont on veut limiter la chane un maximum de cinq
caractres :
Dim strZipcode As String * 5
Si vous tentez de stocker plus de caractres que ne le permet une chane longueur xe,
Visual Basic ne retiendra que le nombre spci de caractres, et le reste se perdra dans
le nant numrique. De tels bogues sont souvent difciles retracer.
>
:
130
ItemName (nom de llment) peut dsigner une variable dclare (ce cera gnralement
le cas dans ce chapitre), mais galement une valeur de proprit. Expression peut tre :
un littral ;
une variable ;
une valeur de proprit (les proprits de contrles sont de type Variant, mais Visual
Basic les convertit dans un format prcis lorsquelles sont stockes dans des variables) ;
Le concept dexpression peut vous sembler obscur ce point ; disons quest expression
tout ce qui peut devenir une valeur. Voici quelques exemples dinstructions daffectation
valides :
curSales = 5712.75
strFirstName = "Idulphe"
blnPassedTest = True
blnIsEnabled = lblTitle.Enabled
dblValue = 45.1#
intCount = intNumber
dteOld = #4-1-92#
sngOld97Total = sngNew98Total 1000.00
131
<
:
Partie II
Info
Dans les quatre premiers chapitres, vous avez appris stocker des valeurs de proprits
laide du code Visual Basic. Cest galement ce quoi servent les instructions daffectation. Les instructions suivantes changent la valeur afche par un label lblTitle :
lblTitle.Caption = "La tche est termine"
Tous les contrles ont des proprits par dfaut ; cest ces proprits par dfaut que
Visual Basic affectera automatiquement les valeurs pour lesquelles vous ne spcifez pas
de proprit. La proprit par dfaut dun contrle Label est Caption ; aussi laffectation
suivante est-elle quivalente la prcdente :
lblTitle = " La tche est termine "
ce
Astu
Les affectations aux proprits par dfaut demandent moins dcriture. Mais,
encore une fois, plus votre code est explicite, plus la documentation sera
facile, et plus il sera clair pour les lecteurs ventuels. Spciez toujours le
nom de la proprit concern par laffectation, mme sil sagit de la proprit
par dfaut. De cette faon, les instructions ne prteront aucune ambigut.
Ds quune instruction affecte une valeur un contrle, ce contrle est mis jour sur la
feuille. Ainsi, si vous affectez une nouvelle valeur un label, le label afche automatiquement le nouveau contenu.
>
:
132
Les oprateurs traitent les donnes en calculant ou en combinant des rsultats. La plupart des oprateurs sont des symboles, tandis que dautres, tel
Mod, ressemblent plus des commandes Visual Basic.
Signication
Exemple
Rsultat
Puissance
2 ^ 3
Multiplication
2 * 3
Division
6 / 2
Addition
2 + 3
Soustraction
6 3
Mod
Modulo
11 Mod 3
Division entire
11 \ 3
Concatnation de chanes
"Bonjour"
ou &
133
<
:
Partie II
ition
Dfin
ition
Dfin
Un oprateur surcharg est un oprateur qui permet des oprations diffrentes, selon le contexte.
Laffectation suivante concatne les valeurs de deux labels en une seule chane variable,
et place une espace au milieu.
strCompleteName = lblFirst.Caption & " " & lblLast.Caption
ce
Astu
An dviter toute confusion avec loprateur daddition lors de la maintenance du code, nutilisez loprateur & que pour des concatnations de chanes.
Oprateur
Exemple
Rsultat
Parenthses ()
(2 + 3) * 7
35
2 ^ 3 + 1
*, /, \, Mod
2 + 3 * 7
23
+,
10 4 * 2 + 1
Sauf parenthses, les rsultats intermdiaires des multiplications ou des divisions dune
expression sont toujours calculs avant les additions ou les soustractions. La puissance a
prsance sur toutes les autres oprations.
Si une mme expression contient la fois une multiplication et une division, Visual
Basic les traite de gauche droite, sauf sil y a des parenthses. Ainsi, lexpression 10 /
2 * 3 renvoie le rsultat 15 : Visual Basic divise dabord 10 par 2, ce qui donne 5, puis
>
:
134
multiplie par 3 ce rsultat, ce qui donne 15. De mme, dans une expression sans autres
oprateurs ni parenthses, les additions et les soustractions sont calcules de gauche
droite.
En cas de parenthses imbriques, Visual Basic traite dabord les parenthses intrieures.
Ainsi, dans lexpression (10 + 2 (8 3)) + 1, Visual Basic commence par calculer (8 3).
En rsum
Ce chapitre vous a donn quelques notions prliminaires des subtilits du code Visual
Basic. Vous avez dabord tudi comment les sections de dclarations sinscrivent dans
le code gnral de lapplication, avant dapprofondir votre connaissance du langage,
notamment en ce qui concerne les types de donnes.
Comme nous lavons vu, Visual Basic supporte plusieurs types de donnes. Vous devez
non seulement apprendre les distinguer, mais aussi dclarer convenablement les
divers types de donnes sur lesquels vous travaillerez. Les variables servent stocker
provisoirement des donnes lors de lexcution dun programme. Mais avant dutiliser
une variable, il faut la nommer et la dclarer. Les diffrents oprateurs Visual Basic vous
permettent deffectuer des calculs mathmatiques, dont les rsultats pourront tre
stocks dans des variables.
Le prochain chapitre vous emmne un peu plus loin dans les profondeurs de Visual Basic.
Vous y dcouvrirez une nouvelle srie doprateurs, qui permettent de comparer les
donnes. Vous tudierez galement les nouveaux contrles et instructions qui exploitent ces
oprateurs.
Questions-rponses
Q Pourquoi Visual Basic ne calcule-t-il pas tous les oprateurs de gauche
droite ?
R Visual Basic ne fait que se plier lantique hirarchie des oprateurs algbriques. Cest
la faute des mathmaticiens ! Plus srieusement, lordre des oprateurs permet dviter
toute ambigut dans le code. En fait, vous navez pas forcment vous soucier de cette
hirarchie : vous pouvez imposer votre propre ordre, en utilisant les parenthses mme
l o elles ne sont pas ncessaires. Par exemple, laffectation suivante donne exactement
le mme rsultat avec ou sans les parenthses, lesquelles ne sont l que pour ter toute
ambigut :
intValue = (8 * 9) + intResult
135
<
:
Partie II
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.
Quiz
1. Quel type de code contient la section de dclarations dun programme ?
2. Comment faire en sorte quune procdure puisse accder une variable locale dune
autre procdure ?
3. La valeur dun littral ne change jamais. Vrai ou faux ?
4. La valeur dune variable ne change jamais. Vrai ou faux ?
5. Pourquoi Visual Basic supporte-t-il deux types doprateurs de division ?
6. Quest-ce quun oprateur surcharg ?
7. Quel oprateur doit-on de prfrence utiliser pour concatner des chanes ?
8. Quel type de donnes contient tous les autres types de donnes ?
9. Les prxes sont obligatoires dans les noms de variables. Vrai ou faux ?
10. Quelles sont les deux manires de sassurer que Visual Basic nautorise aucune variable non dclare ?
>
:
136
Exercices
1. Daprs vous, que fera Visual Basic de la dclaration de variable suivante ?
Dim intCnt As Integer, abc, curSales As Currency
a.
b.
c.
d.
e.
1 + 2 * 4 / 2
(1 + 2) * 4 / 2
1 + 2 * (4 / 2)
9 \ 2 + 1
(1 + (10 (2 + 2)))
4. Ecrivez des instructions daffectation qui donnent lquivalent Visual Basic des
formules suivantes :
a. 3 + 3
a =
4+4
b.
x = (a b) * (a 2)2
c. a1/2
f=
b1/2
5. Le programme du premier Projet bonus sur les contrles, proprits et vnements,
incluait la procdure suivante :
137
<
:
Partie II
11:
12:
13:
14:
15:
Etudiez cette procdure pour voir les affectations luvre. Mais surtout, comprenez-vous maintenant pourquoi les longues instructions fragmentes en plusieurs
lignes, telles que les lignes 7, 8 et 9, doivent inclure des esperluettes ?
>
:
138
PB2
Variables et expressions
Le code de ce Projet bonus met en uvre des dclarations de variables, des instructions
daffectation et des expressions. Maintenant que vous tes en mesure de concevoir une
feuille et dutiliser divers contrles, vous devez vous attaquer aux subtilits du code et
apprendre activer les contrles de lapplication laide dinstructions Visual Basic.
Cela commence par le traitement des donnes.
Le Listing PB2.1 illustre les concepts tudis au Chapitre 5. An que vous puissiez vous
concentrer sur le code, aucune feuille visuelle ny est dcrite. Si toutefois vous voulez
crer une feuille pour tester le code, il suft de crer une feuille simple contenant trois
labels, lblGrossPay, lblTaxes et lblNetPay, ainsi quun bouton de commande cmdCalcPay qui dclenchera le code. Votre feuille devrait ressembler la Figure PB2.1. Aprs
avoir effectu quelques calculs, le code afche les rsultats comptables dans les trois
labels.
Listing PB2.1 : Ce code met en uvre des variables et des instructions
daffectation
1:
2:
3:
4:
5:
6:
7:
8:
9:
139
Partie II
10:
lutilisateur ou dun fichier).
11:
intHoursWorked = 40
Total des heures travailles.
12:
sngRate = 7.8
Paye par heure.
13:
sngTaxRate = 0.42
Pourcentage de prlvements.
14:
15:
Calcule les sommes
16:
curGrossPay = intHoursWorked * sngRate
17:
curTaxes = sngTaxRate * curGrossPay
18:
curNetPay = curGrossPay - curTaxes
19:
20:
Affiche les rsultats dans les labels
21:
lblGrossPay.Caption = curGrossPay
22:
lblTaxes.Caption = curTaxes
23:
lblNetPay.Caption = curNetPay
24: End Sub
Figure PB2.1
Vous pouvez crer
une feuille simple
pour tester ce code.
Analyse
Les lignes 1 et 24 sont les lignes dencadrement de la procdure vnementielle du
bouton de commande. Les lignes 2, 8, 15 et 20 sont des commentaires qui facilitent la
documentation et la maintenance du code. Les lignes 3 6 dclarent les variables. Trois
de ces variables sont de type Currency.
Les lignes 11, 12 et 13 affectent des valeurs aux trois variables. En situation relle, ces
donnes comptables seraient fournies par lutilisateur, voire reprises dun chier. Mais
vous navez pas encore tudi les entres utilisateur ni la manipulation de chiers ; du
>
:
140
reste, les instructions daffectation se prtent bien notre exemple. Notez que, lorsquun
littral est affect une variable de type Integer (ligne 11), il ny a pas de virgule
dcimale. En revanche, les valeurs assignes aux variables Single (lignes 12 et 13)
contiennent de telles virgules.
Les lignes 16, 17 et 18 effectuent le calcul de la paye. Les expressions tant courtes,
lordre des oprateurs na pas dimportance. Vous pouvez constater que ces expressions
contiennent des types de donnes diffrents ; toutes ces donnes sont pourtant compatibles
entre elles.
Enn, les lignes 21, 22 et 23 affectent les valeurs de variables aux labels. Une fois les
valeurs affectes, les contrles de la feuille se mettent jour et les labels afchent les
rsultats.
ntion
Atte
141
<
:
Chapitre
Oprateurs et
instructions de contrle
Ce chapitre traite encore des oprateurs Visual Basic, mais les oprateurs que vous allez
tudier ne servent pas aux calculs mathmatiques. Il sagit doprateurs logiques et
conditionnels destins comparer les donnes. Vous dcouvrirez galement des instructions de contrle grce auxquelles vos programmes rpteront une section de code autant
de fois que ncessaire, et interrogeront diverses conditions.
Voici ce que nous tudierons aujourdhui :
linstruction If ;
143
Partie II
>
:
Oprateur
Description
Exemple
Rsultat
Egal
7 = 2
False
>
Suprieur
6 > 3
True
<
Infrieur
5 < 11
True
>=
Suprieur ou gal
23 >= 23
True
<=
Infrieur ou gal
4 <= 21
True
<>
Diffrent de
3 <> 3
False
144
Remarquez, dans le Tableau 6.1, la colonne des rsultats. Quel est le rsultat de 6 > 3 ?
Est-ce que 6 est plus grand que 3 ? Oui, et le rsultat de lexpression conditionnelle est
donc "vrai", True. Comme nous lavons vu au chapitre prcdent, Visual Basic supporte
le type de donnes Boolean, qui naccepte que les valeurs True ou False. Les mots cls
True et False sont utiliss dans le code pour affecter des valeurs aux variables boolennes et aux proprits de contrles.
Info
Avant demployer ces oprateurs dans votre code, assurez-vous den comprendre le
fonctionnement. Lexpression 23 >= 23 est True parce que 23 est suprieur ou gal 23.
Etudiez la colonne des rsultats du Tableau 6.1 pour bien saisir ce concept.
Les littraux ne sont pas les seules valeurs qui puissent apparatre de chaque ct dun
oprateur conditionnel. Cest aussi le cas des expressions, des variables, des contrles et
des combinaisons de tous ces lments. Visual Basic traite de multiples types de
donnes, et vos programmes doivent tester et comparer les donnes avant dexcuter le
code le plus appropri.
La prsence dune valeur Null dun ct ou de lautre dun oprateur conditionnel
constitue un cas particulier. Car Visual Basic ne renvoie alors, comme rsultat de la
condition, ni True ni False, mais... Null. Vous devez tre attentif ce que lune des
valeurs compares puisse tre Null. Dans ce cas, trois rsultats sont possibles : True,
False et Null. Parce que de tels rsultats peuvent tre droutants, Visual Basic dispose
dun outil appel fonctions internes, qui aide dtecter les valeurs Null ; vous tudierez
cet outil au Chapitre 8, "Sous-routines et fonctions". Notez que les oprateurs conditionnels considrent toute valeur Empty (correspondant un contrle ou une variable
qui na pas encore t initialis par quelque valeur que ce soit) comme gale zro, ou
comme une chane nulle si ce sont des chanes que lon compare.
Les oprateurs conditionnels comparent les chanes exactement de la mme manire
que les valeurs numriques. Les comparaisons de chanes suivent ces rgles gnrales :
Les lettres capitales valent moins que les minuscules ; ainsi, "BONJOUR" vient
avant "bonjour".
Les lettres se comparent selon lordre alphabtique ; ainsi, "A" vaut moins que "B",
et le nom "Walter" passe avant le nom "William".
Les nombres valent moins que les lettres ; ainsi, "3" est plus petit que "trois".
145
<
:
Partie II
Si ces rgles vous semblent obscures, rassurez-vous : Visual Basic compare la plupart
des chanes en suivant le mme ordre que votre carnet dadresses. Cette capacit
comparer les chanes permet vos programmes de classer les noms par ordre alphabtique, de tester les mots de passe, et danalyser les donnes.
ntion
Atte
ition
Dfin
Pour la comparaison des chanes, Visual Basic suit lordre prescrit par la
table ASCII moins que le module ne contienne linstruction Option
Compare Text.
La table ASCII (prononcer "aski") contient la liste de tous les caractres
disponibles sur le PC, et attribue un numro unique chacun de ces caractres. La valeur ASCII de la lettre "A" est 65, celle de la lettre "B" 66, etc.
Recherchez "ASCII" dans lindex de laide Visual Basic pour obtenir cette table
(voir Figure 6.1). LAnnexe C de cet ouvrage reproduit galement la
table ASCII.
>
:
146
Figure 6.1
Pour la comparaison
des chanes, Visual
Basic suit lordre
des codes ASCII.
troisime joker, #, qui symbolise tout chiffre. Nous vous donnons ci-dessous quelques
exemples dutilisation de Like. Les expressions conditionnelles suivantes renvoient
toutes le rsultat True :
Le dernier exemple relve dun type spcial dexpression Like. Lorsque le caractre
correspond lun des caractres entre crochets, le rsultat renvoy est True. Les crochets
permettent dinterroger une srie de caractres. Compares la chane
"Code[12345]Rouge", les valeurs suivantes sont toutes True : "Code1Rouge", "Code2Rouge",
"Code3Rouge", "Code4Rouge", "Code5Rouge".
Info
Pour ces expressions, loprateur = aurait renvoy la valeur False, car la condition
dgalit ne reconnat pas les jokers.
147
<
:
Partie II
Le type de donnes Variant se prte plutt bien aux comparaisons conditionnelles. Vous
aurez souvent comparer la valeur dun contrle (une zone de texte, par exemple) une
variable ou un littral. Les proprits de contrles se comparent gnralement comme
des donnes Variant. Si un contrle ou une variable Variant contiennent une valeur
numrique, telle que 234.56, et que vous compariez cette valeur une variable numrique, Visual Basic procde en convertissant provisoirement la valeur Variant en
nombre. Si, en revanche, vous comparez un contrle ou une variable Variant une
chane, Visual Basic convertit provisoirement la valeur en chane, de sorte que la comparaison se fasse caractre par caractre, sur la base des codes ASCII. Ainsi, Visual Basic se
charge des dtails importuns qui, autrement, rendraient dlicates les comparaisons impliquant un type Variant.
ntion
Atte
>
:
148
Si vous comparez une valeur numrique une valeur Variant, et que cette
dernire ne puisse tre proprement convertie en nombre, Visual Basic gnrera une erreur dexcution. Faites attention aux donnes utilises. Les fonctions internes, dont nous parlerons au Chapitre 8, permettent dinterroger
les types de donnes.
Les oprateurs logiques permettent de combiner plusieurs sries de comparaisons conditionnelles. A linstar de loprateur Mod, les oprateurs logiques
sont des mots cls, et non des symboles.
Description
Exemple
Rsultat
And
True
Or
(2 < 3 ) Or (6 < 7)
True
Xor
False
Not
Nie lexpression
Not (3 = 3)
False
Les oprateurs And et Or sont, de loin, les plus utiliss. Loprateur Xor permet de distinguer deux options sexcluant mutuellement. Ainsi, dans une situation o une seule
valeur doit tre True, comme lorsque lutilisateur doit slectionner son mois de naissance,
le rsultat False dune condition Xor indique que plus dune option (ou aucune) a t
slectionne. Enn, loprateur Not nie une expression True ou False. Notez que cet
oprateur doit tre utilis avec parcimonie, car il implique que lon fasse abstraction de
la logique en crivant ou en dboguant le code.
Lexpression suivante combine des oprateurs conditionnels loprateur logique And :
(curSales < curMinSales) And (intYrsEmp > 10)
149
<
:
Partie II
ntion
Atte
>
:
Priorit
Oprateur
Parenthses
*, /, \, Mod
+,
Not
And
Or
Xor
150
ce
Astu
An que vos programmes soient aussi clairs que possible, placez les expressions entre parenthses ; vous viterez ainsi toute ambigut dans lordre
des oprations. Selon cette mthode, lexpression prsente plus haut
ressemblerait ceci :
(curSales * sngCommission) > (curHighSales / 10)
Les instructions If
If est lune des commandes Visual Basic les plus utilises. La commande If fait partie
dune instruction multiligne, linstruction If, dont voici le format :
If condition Then
Comme les instructions If donnent presque toujours sur plusieurs instructions, le format multiligne est plus appropri et plus rpandu. Mme dans le
cas o le If ne dclenche quune seule instruction, le format multiligne est
plus appropri, car des instructions supplmentaires pourront plus facilement tre insres.
Info
Faire
Indentez le corps de linstruction If, de sorte reprer dun simple coup
dil son dbut et sa n. Pour chaque instruction If, il existe, plus loin dans
le programme, une instruction End If. Quelle que soit lindentation du
code, une instruction End If correspond toujours linstruction If la plus
rcente.
151
<
:
Partie II
Sans sen apercevoir, on emploie des instructions de type If tous les jours :
Si (If) je reois mon chque, alors (Then) je payerai mon loyer dans les temps.
Si (If) tu ranges ta chambre et (And) que tu nisses tes devoirs, alors (Then) tu sortiras jouer au foot.
Ainsi, les instructions Visual Basic If suivent un mode de raisonnement tout fait
commun. Elles fonctionnent de la manire suivante : le code contenu dans le corps de
linstruction ne sexcute que si et seulement si la condition est remplie. Considrez de
nouveau les raisonnements communs exposs ci-dessus. Si et seulement si vous touchez
votre salaire, vous pourrez payer votre loyer temps. Si vous ne recevez pas le chque,
eh bien... votre propritaire attendra. Le second raisonnement implique que deux conditions soient satisfaites : si tu ranges ta chambre et si tu nis tes devoirs, alors seulement
tu pourras aller taper dans le ballon.
Examinez linstruction If du Listing 6.1 :
Listing 6.1 : Comparaison de donnes avec instruction If
1:
2:
3:
4:
5:
6:
7:
8:
>
:
152
Dans une instruction If, les parenthses ne sont pas ncessaires autour de
la condition ; en revanche, elles dsignent clairement la condition interroger, et en cela clarient le code.
Comme pour toutes les instructions multilignes, lindentation du corps est recommande, mais non obligatoire. Selon le premier format dinstruction If, le code sexcutait
si et seulement si la condition tait satisfaite ; mais rien nindiquait au programme ce
quil devait faire si la condition ntait pas satisfaite. Linstruction Else sert justement
cela. Une instruction If... Else contient deux corps distincts : lun qui ne sexcute
que si la condition est True, lautre qui ne sexcute que si la condition est False. Quelle
que soit la condition, le reste du programme se poursuit aprs que le test If... Else a
t effectu.
Le programme du premier Projet bonus, "Contrles, proprits et vnements", se
servait dune instruction If... Else pour tester la validit du mot de passe saisi. Cette
partie du code est reproduite dans le Listing 6.2.
Listing 6.2 : Test du mot de passe par une instruction If
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
23:
La ligne 1 vrie si la zone de texte contient le bon mot de passe. Si cest le cas, le corps
de linstruction If, soit partir de la ligne 2, sexcute. Linstruction Beep provoque
lmission dun bip par le haut-parleur du PC ; ainsi, si le mot de passe est correct, les
lignes 3 et 4 sexcutent, et lordinateur fait "bip bip". Les lignes 5, 6 et 7 afchent
153
<
:
Partie II
limage, tandis que la ligne 8 modie le contenu du label. Au terme de linstruction If,
cest--dire tout de suite aprs la ligne End If, le programme poursuit son excution.
Si toutefois le mot de passe saisi nest pas le bon, et donc que la condition ne soit pas
remplie, le corps de Else sexcute (lignes 10, 11 et 12) pour indiquer lutilisateur que
son mot de passe nest pas valide.
Comme le montre le Listing 6.3, on peut imbriquer les instructions If.
Listing 6.3 : Les instructions If imbriques permettent des comparaisons plus
pousses
If (curSales > 100000.00) Then
curBonus = 7500.00
Else
curBonus = 5000.00
End If
Dans les instructions ainsi imbriques, chaque Else et chaque End If renvoie toujours
au If le plus rcent. Les diffrents niveaux dindentation appliqus aux If imbriqus
permettent de les circonscrire de faon claire.
Les slash indiquent que seul lun des mots cls peut suivre linstruction Exit ; tout
dpend de ce dont on veut sortir. Pour sortir dune procdure vnementielle (cest--dire
dune sous-routine, comme nous lavons vu au Chapitre 4), linstruction est Exit Sub.
Pour sortir dune fonction, ce serait Exit Function. Quant aux instructions Exit Do et
Exit For, elles seront expliques vers la n de ce chapitre.
Le Listing 6.4 interrompt la procdure vnementielle la ligne 3 si la condition spcie dans linstruction If est satisfaite.
>
:
154
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
ition
Dfin
155
<
:
Partie II
Case condition
Bloc dinstructions
[ Case condition1
Bloc dinstructions
[ Case condition2
Bloc dinstructions
[ Case conditionN
Bloc dinstructions
[Case Else
Bloc dinstructions
End Select
Visual Basic
Visual Basic]
Visual Basic]
Visual Basic]
Visual Basic]
Select Case choisit entre plusieurs conditions. Le nombre de ces conditions, indiqu
dans le corps [ Case condition#...], varie selon la situation. Si aucune des conditions
nest remplie, le corps de Case Else (sil y en a un) sexcute.
Malgr un format un peu droutant, Select Case est simple dutilisation. Examinez le
Listing 6.6.
Listing 6.6 : Les instructions Select Case comparent des valeurs multiples
>
:
1:
2:
3:
4:
5:
6:
156
7:
Case "C"
8:
lblAnnounce.Caption
9:
Case "D"
10:
lblAnnounce.Caption
11:
Case "E"
12:
lblAnnounce.Caption
13:
Case Else
14:
lblAnnounce.Caption
15: End Select
Info
"Trs bien"
"Bien"
"Peut mieux faire"
"Mdiocre"
"Mauvais"
157
<
:
Partie II
Ici, chaque Case implique que la note se situe entre une valeur suprieure ou gale 18
et une valeur infrieure ou gale 10. Notez quaucun test spcique nest ncessaire
pour les notes situes en-dessous de 10 car, en de de cette note, cest le Case Else qui
prend la relve. (Comme il ne sagit que de montrer le fonctionnement de Case Else, cet
exemple ne contient pas dinstruction de traitement derreur, et suppose donc que la
note entre se situe entre 0 et 20.)
ntion
Atte
Les instructions Select Case ne conviennent pas tous les types de comparaisons. Les oprateurs dinclusion ou logiques ne sont pas supports ; les
conditions Case ne peuvent donc pas tre interroges par And, Or, Xor, ni
Not. Pour cela, la seule solution consiste imbriquer des instructions
If... ElseIf... End If.
Visual Basic supporte un troisime format de Select Case, dans lequel le mot cl To
spcie un ordre de choix. Cest cet ordre qui dtermine quel corps de Case doit
sexcuter. Ce format est utilis lorsque les valeurs testes sont squentielles (voir
Listing 6.8).
Listing 6.8 : Comparaisons de valeurs squentielles dans Select Case
scolaire
"Mauvais"
"Mdiocre"
"Peut mieux faire"
"Bien"
"Trs bien"
Vous pouvez remarquer que lordre des Case est invers par rapport aux listings prcdents, en raison du format utilis. La premire condition Case, ligne 3, teste la plage des
notes les plus basses possible. Si la note renvoye entre dans cette catgorie, le message
"Mauvais" safche dans le label. (Pour plus de simplicit, on prsuppose que lutilisateur entre des entiers. Ainsi, une note de 9.5 pourrait gnrer une erreur.) Les plages de
valeurs se suivent squentiellement. Vous pouvez galement tester, de cette faon, des
chanes, en partant de la plus petite (en codes ASCII cumuls).
>
:
158
ce
Astu
Si lexpression spcie dans Select Case renvoie une valeur gale 101,
102, 201, 202, 203, 204, 205, ou suprieure 300, le corps de Case
sexcute.
Les boucles
Votre PC est puissant. Il peut traiter rapidement dnormes quantits de donnes, telles
que la comptabilit dune grosse entreprise. Mais le traitement efcace de tant dinformations exige une technique spciale : il sagit dintgrer le code dans des boucles,
grce auxquelles le programme analyse, et analyse encore, les donnes, jusqu ce que
sortent les rsultats attendus. Les boucles sont lun des lments les plus importants de
la programmation.
ition
Dfin
Une boucle est une srie dinstructions appeles sexcuter plusieurs fois.
Linstruction de boucle se rpte tant quune condition prdnie nest pas
satisfaite.
Les boucles nous renvoient au prochain chapitre, qui vous enseigne recevoir de lutilisateur des entres (input) autrement que par les zones de texte lesquelles ne conviennent pas tous les types dinformations. Il arrive souvent quune question simple soit
pose lutilisateur, qui rpond en appuyant sur Entre ; pour de telles rponses, les
zones de texte ne sont pas ce quil y a de plus indiqu. (Les zones de texte sont parfaites
pour les informations textuelles, telles que noms et adresses.)
Il est capital de bien comprendre les boucles avant daborder la question des entres
utilisateur : en effet, la rponse donne nest pas toujours celle quon attend. Imaginons
que vous demandiez lutilisateur son ge, et quil rponde 291. Manifestement, il y a
une erreur. Grce aux instructions de boucle, la question peut tre repose jusqu ce
que lutilisateur donne une rponse raisonnable. Naturellement, le programme ne pourra
jamais dtermnier si lutilisateur donne son ge rel ; mais vous pouvez faire en sorte
quune rponse au moins plausible soit exige. Les boucles peuvent rpter nimporte
quel bloc de code.
159
<
:
Partie II
Les boucles Do
La boucle Do est une instruction multiligne. Comme linstruction If, linstruction Do
supporte diffrents formats :
Do While condition
Bloc dinstructions
Loop
Do
Bloc dinstructions
Loop While condition
Do Until condition
Bloc dinstructions
Loop
Do
Bloc dinstructions
Loop Until condition
Visual Basic
Visual Basic
Visual Basic
Visual Basic
Ici, condition peut tre une expression, un contrle ou une valeur Boolean. Le choix du
format est, avant tout, une question de prfrence et de style. Les points considrer
sont les suivants :
>
:
160
Ces instructions se
rptent jusqu' ce
que la condition
interroge renvoient
le rsultat True.
Info
Le corps du code de la Figure 6.2 sexcute dix fois, et chaque fois la valeur de la variable intCtr est incrmente de 1. Le format utilis ici est Do... Loop Until, de sorte que
la boucle se rpte jusqu ce que intCtr soit gal 10. Le Listing 6.9 prsente une
boucle semblable, mais selon le format While... Loop.
Listing 6.9 : Linstruction Do existe en plusieurs formats
1:
2:
3:
4:
5:
6:
ntion
Atte
Certaines boucles, notamment les boucles impliquant une entre utilisateur, exigent que
le corps sexcute au moins une fois ; de l dcoule le choix du format de boucle. Si
votre boucle doit sexcuter au moins une fois, le format utiliser est celui dans lequel
la condition est interroge la n de la boucle (voir Listing 6.10).
ntion
Atte
Les exemples de codes qui suivent ne sont pas complets. Les instructions
censes traiter les entres utilisateur et envoyer les messages derreur y sont
remplaces par des commentaires. Concentrez-vous, pour linstant, sur le
fonctionnement des boucles. Le traitement des entres utilisateur fera lobjet
du prochain chapitre.
161
<
:
Partie II
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
La boucle Do commence la ligne 10. Si lutilisateur a entr Oui ou Non aux lignes 6 et 7
(rappelez-vous que les commentaires tiennent ici lieu dinstructions de traitement), la
boucle afche le message derreur de la ligne 12. Les commentaires des lignes 13 et 14
simulent une instruction qui recevrait de nouveau la rponse de lutilisateur, et la
ligne 15 renvoie la boucle la ligne 10, qui teste de nouveau lentre. Combien de fois
cette boucle sexcutera-t-elle ? Soit jamais (si lutilisateur a entr Oui ou Non), soit
jusqu ce que lutilisateur rponde correctement (non mais !).
Info
Linstruction Exit Do permet dinterrompre une boucle avant son dnouement normal.
Par exemple, vous traitez une srie de factures dans une boucle qui se rpte jusqu ce
que le dernier numro de compte client soit atteint. Si un mauvais numro de compte est
dcel par une instruction If lintrieur de la boucle, vous pouvez interrompre la rption par Exit Do et afcher un message derreur.
>
:
162
On entend par itration chacun des cycles dune boucle. Pour une boucle
qui se rpte trois fois, il y a donc trois itrations.
intEnd est un nombre, une variable ou une valeur de contrle qui dtermine la n de la
boucle. Lorsque intCounter est plus grand que intEnd, la boucle cesse et le code se
poursuit partir de la ligne suivant linstruction Next. Linstruction Next referme le
corps de la boucle, et relance litration. Si intCounter est plus petit que intEnd, Visual
Basic augmente intCounter de la valeur intIncrement, et le corps de la boucle se rpte
de nouveau. (Notez quil nest pas obligatoire de mentionner intCounter aprs Next ;
cela ne sert qu rappeler de quelle boucle For spcique linstruction Next marque le
terme.)
Quoi quil en soit, linstruction For est trs simple : elle ne fait rien dautre que compter
ou dcompter, cest--dire ajouter ou soustraire une valeur une autre chaque itration
de la boucle. La boucle For incrmente si la valeur de Step est positive (elle lest par
dfaut), et dcrmente si la valeur de Step est ngative.
Dans le Listing 6.11, la boucle For reprend la boucle Do du Listing 6.9. Linstruction For
incrmente automatiquement la variable compteur du label.
163
<
:
Partie II
Listing 6.11 : Les boucles For permettent dincrmenter une variable compteur
1: For intCtr = 1 to 10
2:
lblOut.Caption = intCtr
3: Next
Quoi de plus simple ? Cette boucle se rpte dix fois. La premire fois que sexcute la
ligne 1, la valeur intStart (1 en loccurrence, et valeur par dfaut dinstruction Step)
est affecte intCtr. A la ligne 2, le corps de la boucle se sert de cette nouvelle valeur
pour mettre jour le label. La ligne 3 ordonne la boucle de se rpter pour de nouveau
incrmenter intCtr de 1, et cela jusqu ce que intCtr atteigne la valeur intEnd : 10.
Info
Dans le Listing 6.13, la boucle For commence 1000 et dcrmente la variable de 100
jusqu ce que la valeur 0 soit atteinte.
Listing 6.13 : Boucle For avec valeur de Step ngative (dcrmentation For... Next;)
1: For intCtr = 1000 to 0 Step -100
2:
lblOut.Caption = intCtr
3: Next
Ces quelques courts exemples dmontrent bien le comportement des valeurs intStart,
intEnd et intIncrement dans la boucle. (Si la valeur de Step est ngative, intStart doit
tre plus grand que intEnd ; autrement, le corps de la boucle ne sexcuterait jamais.)
ntion
Atte
>
:
164
Ne confondez pas les boucles avec les instructions If. Toutes reposent sur
des valeurs conditionnelles ; mais, tandis que les boucles rptent leur
corps autant de fois que ncessaire, le corps des instructions If ne sexcute
quune fois.
ce
Astu
Linstruction Exit For permet dinterrompre une boucle avant son dnouement normal.
For Out = 1 To 4
For In = 1 to 10
Boucle
extrieure
Boucle
intrieure
En tout, la boucle intrieure de la Figure 6.3 sexcute quarante fois. La boucle extrieure accomplit quatre itration, et chacune de ces itrations la boucle intrieure se
rpte dix fois.
La Figure 6.4 montre deux boucles intrieures lintrieur dune troisime. Les deux
boucles intrieures doivent accomplir tout leur cycle avant que la boucle extrieure ne
puisse terminer sa premire itration. Lorsque la boucle extrieure attaque sa deuxime
itration, les deux boucles intrieures se rptent de nouveau, et ainsi de suite.
Dans la Figure 6.4, le corps de chacune des deux boucles intrieures sexcute quarante
fois. La boucle extrieure accomplit quatre itrations, et chaque itration excute
dabord la premire, ensuite la seconde boucle intrieure ; puis la boucle extrieure
repart, etc.
165
<
:
Partie II
Figure 6.4
On peut imbriquer
plusieurs boucles
dans une mme
instruction For.
For Out = 1 To 4
For In = 1 to 10
Premire
boucle
intrieure
Boucle
extrieure
For In2 = 1 to 10
Seconde
boucle
intrieure
Next Out
Info
Faire
Ayez garde de bien associer, dans vos boucles imbriques, une instruction
Next chaque instruction For. Chaque Next renvoie au For le plus rcent.
Si le Next de la boucle intrieure apparat aprs le Next de la boucle
extrieure, Visual Basic gnre une erreur. Si vous ne spciez pas de variable pour chaque Next, Visual Basic se rfre automatiquement au For le
plus rcent. Mais, en indiquant la variable, vous circonscrirez de faon plus
claire le corps de chaque boucle, et faciliterez dautant la documentation du
code.
En rsum
Ce chapitre vous a prsent les structures de contrle qui permettent au code de modier lui-mme le cours de son excution en fonction des valeurs releves et de conditions prdnies. Grce aux oprateurs conditionnels et aux instructions If, vous
pouvez maintenant analyser les donnes et tester les variables et contrles, puis ragir
en consquence. Votre vocabulaire Visual Basic commence srieusement senrichir.
>
:
166
Outre linstruction If, Visual Basic supporte linstruction Select Case, qui offre une solution plus satisfaisante que limbrication des If. Select Case peut tre utilis sous plusieurs
formats, selon la faon dont les diffrentes conditions doivent tre testes.
Nous avons galement dcouvert que les boucles permettent de rpter plusieurs fois
certaines sections du code. La boucle Do se rpte tant quune condition est remplie, ou
jusqu ce quune condition soit remplie, selon le format utilis. La boucle For se rpte
un nombre prdni de fois, ou jusqu ce quune condition soit remplie. A la diffrence
de Do, la boucle For met automatiquement jour sa variable de contrle, en laugmentant ou en la diminuant chaque itration.
Le prochain chapitre vous enseigne capter des informations laide des zones
dentre. Vous apprendrez galement donner des rponses lutilisateur par lintermdiaire des botes de messages. Zones dentre et botes de messages constituent un
moyen simple dinteragir avec lutilisateur, sans passer par les contrles de la feuille.
Questions-rponses
Q Pourquoi viter loprateur Not ?
R Il vaut mieux ne pas utiliser Not parce que cet oprateur ne fait, dans la plupart des
cas, que compliquer inutilement les choses. Les instructions positives sont toujours
prfrables, parce que plus faciles comprendre.
Considrez lexpression Not(A <= B). Ne serait-il pas plus simple de lcrire (A >
B) ? Il ne sagit pas de proscrire tout fait cet oprateur, utile pour interroger un
boolen ; par exemple : If Not(blnClearedScreen). Ce dbut dinstruction If dit
ceci : "Si lcran na pas encore t vid (blnClearedScreen = True), alors..." En rgle
gnrale, il convient toutefois de renverser les expressions Not en expressions positives
an que le code soit plus clair.
Q Si les instructions Do et For donnent des rsultats quivalents, quelle importance de choisir lune ou lautre ?
R Cela dpend entirement de vous. Le choix ne doit dailleurs pas seulement soprer
entre les boucle For et Do, mais aussi entre les divers formats de chacune. On se sert
gnralement des boucles Do pour incrmenter une valeur ou pour rpter des
instructions un nombre dtermin de fois. Les boucles Do, quant elles, sont plus
appropries aux boucles qui doivent se rpter jusqu ce quune condition soit
remplie. Quand il sagit dincrmenter ou de dcrmenter, For est plus facile crire
et lgrement plus efcace que Do.
167
<
:
Partie II
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.
Quiz
1. Quel oprateur logique renvoie le rsultat True si lun ou lautre des termes dune
expression est True ?
2. Quelle est la diffrence entre un oprateur conditionnel et un oprateur logique ?
3. Quest-ce quune boucle ?
4. Dcrivez linstruction daffectation suivante :
intTotal = intTotal 10
intN = intN + 3
Beep
Loop
6. Pourquoi linstruction Exit For doit-il faire partie dune instruction If plutt que
dapparatre pour lui-mme dans le corps de la boucle For ?
7. Dans une instruction If... Else, les deux corps peuvent sexcuter. Vrai ou faux ?
8. Selon les valeurs initiale et nale, une boucle For peut ne jamais sexcuter. Vrai ou
faux ?
9. Pourquoi imbriquer des boucles For ?
10. Quelle est la diffrence entre une instruction de dcision et une instruction de
boucle ?
>
:
168
Exercices
1. Ecrivez une instruction If de comparaison qui vrie lgalit de trois nombres.
2. Chasse au bogue : Maurice narrive pas "boucler". Quest-ce qui ne va pas dans
son code ?
intN = 10
Do
Beep
Loop Until (intN > 100)
3. Lhorloge dun stade de football effectue un dcompte de 45 0 pour chaque mitemps. Il y a deux mi-temps. Dcrivez lactivit de lhorloge laide dinstructions
Visual Basic.
4. Visual Basic permet de combiner chaque format de Select Case dans une mme
instruction Select Case. On peut donc aligner un Case dgalit classique, un Case
conditionnel et un Case dordre squentiel. Rcrivez le Listing 6.5 (o lon calculait le paiement des heures supplmentaires laide dune instruction If) sous la
forme Select Case, en utilisant au moins deux formats de Case.
169
<
:
Chapitre
Support avanc
du clavier et de lcran
Ce chapitre vous apprend recevoir des informations de lutilisateur (entres) et lui en
envoyer (sorties). Vous savez dj recevoir des entres par lintermdiaire des zones de
texte, et afcher des messages dans des labels. Toutefois, ces contrles ne se prtent pas
toujours trs bien aux changes de questions et de rponses lors de lexcution. Les zones
de texte sont parfaites pour les formulaires et les espaces rservs qui accueillent le texte
tap par lutilisateur ; mais une interaction plus immdiate est parfois requise. Au terme de
ce chapitre, vous serez en mesure dobtenir une telle interaction en programmant le moins
possible.
Voici ce que nous dcouvrirons aujourdhui :
La fonction MsgBox() ;
La fonction InputBox() ;
171
Partie II
Valeur 2
Valeur 4
Valeur 1
Valeur 3
Traitement,
analyse,
calcul, etc.
Un seul
rsultat
La fonction
ition
Dfin
>
:
172
ition
Dfin
E/S signie entre/sortie (en anglais, I/O pour input/output). Par ce terme
gnrique, on dsigne toute technique permettant de recevoir (entre) des
informations dun priphrique (le clavier, par exemple) et dmettre
(sortie) des informations vers un priphrique (lcran, par exemple).
Les fonctions sont extrmement utiles ; mieux vous les comprendrez, plus vous serez
mme den tirer parti. Le chapitre suivant traite la question plus fond. Pour linstant,
retenez ceci :
Le nom de la fonction est toujours suivi de parenthses (sauf, exception rare, pour
les fonctions qui ne requirent pas darguments).
Les arguments doivent tre placs entre les parenthses de la fonction, et spars par
des virgules sil y en a plusieurs.
Sans le savoir, vous avez dj utilis une fonction interne. (A partir de maintenant, nous
parlerons de "fonctions" tout court.) Souvenez-vous : au Chapitre 2, vous affectiez une
image au contrle Image de la feuille. Voici la ligne de code utilise (largument y a t
rduit sa plus simple expression an de ne pas alourdir lexemple) :
imgHappy.Picture = LoadPicture("\Happy.bmp")
Ici, le nom de la fonction est LoadPicture(). (Nous inclurons toujours les parenthses
dans le noms des fonctions prsentes an de bien les distinguer des noms de variables
et de contrles.) Cette fonction na quun seul argument : une chane.
Info
ntion
Atte
173
<
:
Partie II
Il existe des fonctions pour traiter les images, calculer des formules mathmatiques simples, manipuler les chiers, etc. Ce chapitre ne prsente que les
fonctions les plus simples qui sont sans doute les plus rvlatrices. Vous en
apprendrez plus au prochain chapitre.
La fonction MsgBox()
Maintenant que vous saisissez mieux la nature des fonctions, nous pouvons examiner
de prs la fonction MsgBox(). MsgBox() est une fonction qui afche une bote de
message. Comme le montre la Figure 7.2, une bote de message contient une icne, un
message, et au moins un bouton de commande. Ce bouton de commande laisse
lutilisateur le temps de prendre connaissance du message ; lorsquil aura ni sa
lecture, il cliquera sur le bouton.
ition
Dfin
>
:
174
Une bote de message est une petite bote de dialogue dont on se sert pour
informer lutilisateur tout moment de lexcution. La bote de message
peut tre ferme, grce au bouton de commande, ainsi que dplace ; elle ne
peut tre redimensionne.
Figure 7.2
La fonction MsgBox()
afche un message et laisse
lutilisateur indiquer
quil a ni sa lecture.
Icne
Message
Les arguments passs la fonction MsgBox() dterminent licne qui sera afche, le
message, et le nombre de boutons de commande. Ainsi, le programmeur contrle de prs
le message envoy lutilisateur. Lorsque MsgBox() sexcute, elle renvoie une valeur pour
indiquer sur quel bouton lutilisateur a cliqu. Si la bote de message contient deux
boutons, le programme interroge la valeur renvoye par la fonction MsgBox(). Il peut alors
dterminer, ventuellement laide dune instruction If, la suite des oprations, en se
fondant sur la rponse de lutilisateur.
ntion
Atte
Info
intResponse indique le type de lentier renvoy par la fonction. Le premier argument est
une chane (ou une chane, ou un contrle qui contient une chane) spciant le message
qui safchera dans la bote de message. Le deuxime argument dtermine le style des
boutons. Le troisime spcie le libell qui apparatra dans la barre de titre.
Une bote de message doit proposer au moins un bouton de commande. Le programme
doit pouvoir dterminer si lutilisateur a termin sa lecture. Lorsque la bote de message
safche, toute autre activit du programme est suspendue jusqu ce que lutilisateur
175
<
:
Partie II
clique sur lun des boutons de commande. Ds que lutilisateur clique, le code poursuit
son excution la ligne qui suit.
ce
Astu
Si le message est trop long pour tenir sur une seule ligne de la bote de
message, Visual Basic procde automatiquement la rupture de ligne (proprement et sans couper les mots).
Ici, vous devez avoir dclar la variable intResponse dans la section de dclarations de
la procdure (ou bien dans la section de dclarations du module ; mais vous navez pas
encore beaucoup dexprience dans la dclaration des variables globales). A dfaut de
deuxime argument, comme cest le cas ici, Visual Basic afche par dfaut le bouton
de commande OK dans la bote de message. Ainsi, puisque cette fonction MsgBox() nafche quun seul bouton de commande, laffectation dentier ne vous aide pas beaucoup.
Mais la valeur renvoye par la fonction pourra aussi bien tre affecte quelque chose.
Figure 7.3
Les fonctions
MsgBox() afchent
au moins un bouton
de commande.
Nom du projet
La Figure 7.3 montre galement ce qui se passe si vous ne spciez pas tous les arguments de MsgBox() : Visual Basic afche par dfaut le nom du projet dans la barre de
titre de la bote de message. Il y aura toujours un nom plus appropri que celui-l ; le
premier argument vous permet de le spcier, que nous tudierons dans quelques lignes.
Pour un contrle plus serr des boutons, vous pouvez utiliser une valeur entire (ou une
variable, ou un contrle) pour spcier, dans le premier argument optionnel, le style des
boutons. Avec un seul bouton, la valeur renvoye ne sert pas grand-chose, quoiquelle
soit invitable. Lorsque plusieurs valeurs sont en prsence, la valeur renvoye correspond au bouton sur lequel lutilisateur a cliqu. Cette information peut tre reprise dans
une instruction If ou Select Case, pour que sexcutent les sections du code charges
de la gestion de chaque bouton.
>
:
176
Le Tableau 7.1 prsentent les valeurs utilisables comme premier argument optionnel de
MsgBox(), pour spcier le style du bouton.
Tableau 7.1 : Valeurs entires permettant de spcier le style des boutons
Valeur
Constante nomme
Description
vbOKOnly
Bouton OK
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
vbRetryCancel
Figure 7.4
La suite du code
sexcute selon
le bouton sur lequel
lutilisateur clique.
Largument 1 spcie que les boutons OK et Annuler doivent apparatre sur la bote de
message. Cette combinaison est utile pour les oprations que votre programme
sapprte effectuer, par exemple imprimer un rapport, car lutilisateur peut cliquer sur
OK pour indiquer que limprimante est prte, ou sur Annuler pour dcommander
limpression.
Le Tableau 7.2 prsente les valeurs que renvoie la fonction MsgBox(). La bote de
message prcdente pourrait tre gre par linstruction If suivante (o les dtails sont
remplacs par des commentaires pour plus de simplicit) :
If (intResponse = 0) Then
177
<
:
Partie II
Else
ntion
Atte
Naturellement, si la bote de message afchait dautres boutons, linstruction If aurait interroger des valeurs supplmentaires. Pour de multiples
valeurs renvoyes, une instruction Select Case serait probablement plus
approprie.
Tableau 7.2 : Les valeurs renvoyes indiquent quels boutons ont t cliqus
Valeur
Constante nomme
Description
vbOK
vbCancel
vbAbort
vbRetry
vbIgnore
vbYes
vbNo
Info
Quel que soit le nombre de boutons afchs sur une bote de message, lutilisateur ne
peut cliquer que sur un seul. Ds quil clique sur lun des boutons, la bote de message
se referme, et MsgBox() renvoie la valeur correspondante.
>
:
178
ition
Dfin
Les constantes nommes sont des noms internes Visual Basic, qui correspondent des valeurs prdnies. Les constantes nommes commencent
gnralement par le prxe vb. A la diffrence des variables dclares, les
constantes nommes ne peuvent changer de valeur (do le nom de constantes). Mais vous pouvez recourir aux constantes nommes comme arguments
dune fonction, la place des littraux.
Les constantes nommes rendent les programmes plus lisibles et plus comprhensibles.
Par exemple, les instructions suivantes sont quivalentes, mais, dans la seconde, la
mention du bouton de commande est explicite :
intResponse = MsgBox("Prt pour limpression ?", 1)
intResponse = MsgBox("Prt pour limpression ?", vbOK)
Vous pouvez, dans le cours de lcriture, recourir aux constantes nommes sans avoir
consulter un manuel de rfrence ni laide en ligne, et sans avoir mmoriser des noms
abracadabrants. Pour chaque fonction que vous utilisez, Visual Basic propose automatiquement une liste des constantes nommes possibles pour cette fonction. Lorsque, par la
suite, vous maintiendrez ou modierez votre programme, vous devinerez sans peine le
style de la bote de message. Si, au lieu de constantes nommes, votre code prsente des
valeurs littrales, il faudra vous remmorer le sens de ces valeurs avant de modier la
bote de message.
ce
Astu
179
<
:
Partie II
Constante nomme
Description
vbDefaultButton1
256
vbDefaultButton2
512
vbDefaultButton3
ce
Astu
Les icnes
En adjoignant une valeur supplmentaire au deuxime argument, vous spciez licne qui
apparatra gauche du message. Comme nous navons pas encore touch cette partie de
largument, nos botes de message nafchaient pas dicne.
Info
En vrit, la fonction MsgBox() supporte quelques autres arguments optionnels. Mais, rarement utiliss dans les programmes simples, ils ne seront pas
prsents ici.
Le Tableau 7.4 prsente les constantes nommes utilisables et les icnes correspondantes.
Tableau 7.4 : Valeurs spciant licne de la bote de message
>
:
Valeur
Constante nomme
Description
16
vbCritical
Erreur critique
32
vbQuestion
Question
180
Icne
Constante nomme
Description
48
vbExclamation
Avertissement
64
vbInformation
Information
Icne
Les instructions suivantes gnrent une bote de message complte. Tous les arguments
sont spcis, donc tous les lments apparaissent. Le rsultat est reproduit en
Figure 7.5.
intResponse = MsgBox("Limprimante est-elle allume ?", vbYesNoCancel
+ vbQuestion + vbDefaultButton2, "Une petite question")
Figure 7.5
Une bote de message
complte.
La fonction InputBox()
La fonction MsgBox() permet denvoyer des messages lutilisateur, et donne la possibilit celui-ci de rpondre en cliquant sur des boutons de commande. La suite du code
sexcute en fonction du bouton slectionn. Naturellement, sil ne sagit que dun
message dinformation, un seul bouton de commande est requis, pour que lutilisateur
puisse refermer la bote aprs consultation.
Il arrive que la question poser soit si simple, et exige une rponde si rapide, quun
contrle zone de texte serait absolument hors de propos. On peut alors faire appel la
cousine de MsgBox() : InputBox(). La fonction InputBox() afche une bote de message
qui permet lutilisateur de rpondre "dans le texte". Cette combinaison dune bote de
message et dune sorte de zone de texte est appele bote dentre. La Figure 7.6 en
montre un exemple.
181
<
:
Partie II
ition
Dfin
Une bote dentre est une bote de message qui inclut un champ. Dans ce
champ, lutilisateur peut saisir la rponse une question qui lui est pose.
Tout comme les botes de message, les botes dentre sont dplaces et
fermes, mais pas redimensionnes. Contrairement aux botes de message, en
revanche, les botes dentre ne vous laissent pas le choix des boutons de
commande. Seuls les boutons OK et Annuler apparaissent dans une bote
dentre.
Figure 7.6
La bote dentre
afche un titre,
un message
et un champ de saisie.
Les bote dentre nafchent pas non plus dicne, contrairement aux botes de
message. Voici le format de la fonction InputBox() :
strAnswer = InputBox(strPrompt[, strTitle][, strDefault][, intXpos]
[, intYpos])
InputBox() renvoie une valeur de type Variant, qui peut toujours tre traite comme une
chane. La fonction InputBox() peut donc tre affecte une chane, et utilise comme
une valeur de chane. (Le type Variant autorise galement laffectation de la valeur
renvoye une proprit de contrle.) La chane renvoye est la rponse saisie par
lutilisateur dans le champ. Seul le premier argument est requis. Voici une description de
tous les arguments :
>
:
strTitle. Le texte qui apparat dans la barre de titre. A dfaut de titre, Visual Basic
afche le nom du projet.
strDefault. Contenu par dfaut du champ de saisie. Lutilisateur peut accepter cette
rponse par dfaut, qui sera alors la valeur renvoye ; il peut la modier, ou saisir
une rponse entirement nouvelle. On se sert dune valeur par dfaut lorsque la
rponse est prvisible et nattend que dtre valide par le bouton OK.
182
Pour afcher une valeur par dfaut et positionner la bote dentre un point prcis de
lcran, linstruction serait :
strAnswer = InputBox("Quel est le nom du client ?",
"Indentit client", "Jean Bon", 500, 750)
Le programme doit pouvoir dterminer si lutilisateur a cliqu sur OK (ou appuy sur
Entre, OK tant le bouton par dfaut) ou sil a cliqu sur Annuler. Si lutilisateur clique
sur Annuler au lieu dentrer une nouvelle valeur ou de valider par OK la valeur par
dfaut, la fonction InputBox() renvoie une chane nulle, cest--dire "".
Linterrogation du rsultat pourrait alors prendre la forme suivante :
If (strAnswer <> "") Then
ce
Astu
Rappelez-vous que Visual Basic supporte la valeur spciale Empty, qui peut
prendre la place de "" dans linstruction. Avec le mot cl Empty, le code est
plus clair. Notre instruction If ressemblerait alors ceci :
If (strAnswer <> Empty) Then
Imaginons que lutilisateur cherche calculer le chiffre de vente total dun agent commercial particulier. Votre programme afche une bote dentre pour demander le nom de
lemploy. Si lutilisateur saisit le nom et valide sa rponse par OK, le code correspondant
sexcute et calcule le chiffre de vente demand. Si, en revanche, lutilisateur choisit
Annuler, le programme ignore le code charg du calcul.
183
<
:
Partie II
Gestion du clavier
Les contrles et botes dentre ne peuvent sufre traiter toutes les entres clavier.
Le programme doit tre en mesure de rpondre des touches spciques au moment o
lutilisateur les frappe. Comme nous lavons vu, Windows passe votre programme les
lments qui sont de son ressort an quil puisse les traiter. Il sagit des vnements
KeyPress, KeyDown et KeyUp. Ils rpondent des combinaisons de touches du genre
Alt-G ou Maj-P, ainsi quaux touches individuelles. Lorsquun vnement clavier se
produit, ces combinaisons sont testes.
Une fois que lapplication reoit une entre clavier, elle modie cette entre, ou bien
lignore sil ne sagit pas de la frappe attendue. Le traitement des vnements clavier
permettent de dclencher la fermeture dun cran de dmarrage, de valider une entre,
de jouer des jeux, etc.
Chiffres ;
Signes de ponctuation ;
Lvnement KeyPress reconnat la plupart des caractres ASCII. Font toutefois exception la touche de tabulation, les touches ches et autres caractres spciaux dont le code
ASCII est compris entre 0 et 31. KeyPress permet de dterminer avec exactitude la
touche que lutilisateur a frappe. Si lutilisateur appuie sur la touche "A", KeyPress
renvoie "A", etc.
Info
Un vnement, nous lavons vu, est toujours associ un objet tel quun bouton de
commande ou une feuille. Lvnement KeyPress est associ lobjet qui, au moment
de la frappe, a le focus. Si aucun objet na le focus, KeyPress sapplique la feuille. (La
proprit KeyPreview induit une exception cela, que nous expliquerons dans la section
sur la priorit des rponses, plus loin dans ce chapitre.)
>
:
184
ntion
Atte
Les vnements clavier ne doivent pas tre utiliss comme des raccourcis
clavier pour les menus. Le Crateur de menus soccupe dattribuer les
raccourcis clavier selon vos spcications, et gre automatiquement la
rponse en dclenchant la procdure vnementielle Click. Dans de telles
conditions, linterrogation des vnements clavier empcherait le programme
de rpondre aux slections de menu.
End Sub
If KeyAscii = 65 Then
65 est le code ASCII pour "A".
KeyAscii = 66
66 est le code ASCII pour "B".
End If
End Sub
Si le contrle txtTryIt a le focus, la zone de texte accepte et afche les caractres que
lutilisateur entre au clavier une exception prs. Car linstruction If change la
valeur KeyAscii de la lettre capitale "A" (ASCII 65) en la valeur de la lettre capitale "B"
(ASCII 66). Lorsque lutilisateur tape "A", la zone de texte afche "B". Lvnement
KeyPress intercepte la frappe avant que le contrle zone de texte ne reoive la valeur
KeyAscii.
185
<
:
Partie II
ce
Astu
Recherchez "Key Code Constants" dans laide en ligne de Visual Basic. Vous
y trouverez la liste des constantes nommes permettant dinterroger
lactivit du clavier. On peut ainsi rpondre la touche Retour arrire en
vriant que KeyAscii vaut vbKeyBack, la touche Entre avec vbKeyReturn, ou la touche Tab avec vbKeyTab. Rappelez-vous que KeyPress ne
peut rpondre qu ces trois touches, ainsi quaux lettres, nombres et signes
de ponctuation. Si les zones de texte reconnaissent dautres touches (telles
que Origine et Fin), KeyPress nest able que pour Entre, Tab et Retour
arrire.
KeyPress permet dinterroger une vaste gamme de frappes. Lvnement KeyDown est
plus spcique. Tout comme KeyPress, il a lieu lorsque lutilisateur appuie sur une
touche. Mais KeyDown offre un relev plus dtaill donc un peu plus complexe de
lactivit du clavier. Par exemple, KeyPress renvoie une valeur ASCII diffrente, selon
que lutilisateur frappe la capitale "T" ou la minuscule "t". KeyDown renvoie la mme
valeur pour les deux, mais il lui associe une autre valeur : cest largument dtat, qui
indique ltat de la touche Maj.
Info
Lvnement KeyDown a lieu lorsque lutilisateur appuie sur une touche. Les
deux vnements KeyDown et KeyPress peuvent donc se produire en mme
temps (pour une touche ASCII).
ce
Astu
End Sub
KeyCode reprsente la touche frappe, tandis que largument Shift dtermine ltat de la
touche Maj (qui peut aussi bien tre Ctrl ou Alt). KeyCode renvoie toujours lquivalent
en lettre capitale de la touche frappe. Ainsi, mme si lutilisateur entre un "t" minuscule, largument KeyCode vaudra 84 (code ASCII de la capitale "T").
ce
Astu
>
:
186
Il faut se montrer trs vigilant avec KeyDown, car le fait que le style soit ignor
peut entraner des confusions. Pour la frappe dune touche numrique, par
exemple, largument Shift doit imprativement tre interrog. Selon que
lutilisateur ait ou non enfonc la touche Maj (ce quindique largument
Lavantage principal de KeyDown sur KeyPress est que, tout Shift mis part, KeyDown
peut interroger nimporte quelle frappe incluant les touches ches, Origine, Fin, etc.
Nous vous invitons de nouveau consulter laide en ligne de Visual Basic au sujet des
constantes nommes relatives au clavier.
Ltat de shift indique si une touche de contrle (Maj, Ctrl, Alt, ou aucune des trois) a
t frappe en mme temps quune autre. Le modle binaire interne de largument Shift
dtermine ltat de shift. Pour interroger ltat de shift, vous devez utiliser loprateur
And avec la valeur 7. (Ce type particulier de And est dit binaire bitwise, en anglais ,
par opposition loprateur logique And classique, qui procde des comparaison.) Le
Listing 7.1 donne un exemple dinterrogation de ltat de shift.
Listing 7.1 : Code pour tester ltat de shift
Lvnement KeyUp a lieu lorsque lutilisateur relche la touche frappe. Pour vrier la
relche dune touche spcique (comme la touche A, si lutilisateur relche la "moiti"
de la combinaison Maj-A), il faut interroger les arguments passs KeyUp(). KeyUp a
donc lieu aprs les vnements KeyDown et KeyPress.
187
<
:
Partie II
1:
2:
3:
4:
5:
6:
Comme vous pourrez le vrier lAnnexe C, la plage de valeurs ASCII des lettres
minuscules va de 97 ("a") 122 ("z"). La diffrence de valeur ASCII entre une lettre
capitale donne et son quivalent minuscule est de 32. Ainsi, dans notre code, la procdure vnementielle KeyPress reoit la valeur ASCII de chaque lettre minuscule tape,
et lui soustrait 32 pour obtenir la capitale correspondante.
ntion
Atte
Nutilisez pas les vnements clavier pour crire vos propres routines MaskedEdit. Contentez-vous dappuyer sur Ctrl-T pour ajouter la Bote outils
le contrle Microsoft Masked Edit Control 6.0. (Le Chapitre 9 explique plus
en dtail comment lon ajoute des outils la Bote outils.) Le contrle
MaskEdit permet de crer des masques de saisie, tels que des champs de
numros de tlphone dans lesquels les tirets safchent automatiquement.
Essayez dcrire vos propres routines cet effet, ce serait rinventer la roue,
et gaspiller un temps prcieux.
Linstruction SendKeys
Linstruction SendKeys permet denvoyer des frappes clavier depuis le code, exactement
comme si lutilisateur appuyait sur les touches. Par exemple, SendKeys est utile pour
contrler le placement du curseur texte dans une zone de texte : il suft de "simuler" la
frappe des touches Origine ou Fin. Voici la syntaxe de SendKeys :
SendKeys strKeystrokes[, blnWait]
strKeystrokes sera un littral chane, tel que "Gibolin SARL", dans les cas o vous
entrez les valeurs la place de lutilisateur. Loption blnWait est gnralement omise. Il
sagit dun boolen qui, sil renvoie False (valeur par dfaut si blnWait est omis),
sassure que le contrle revient la procdure en excution ds que les frappes sont
reues. Si blnWait est True, le systme traite les frappes avant de poursuivre lexcution
du code, de sorte que les vnements clavier sont actifs pendant la frappe.
>
:
188
Les touches de fonction et les touches spciales, comme Origine, doivent tre envoyes
par SendKeys et entre accolades. Par exemple, pour envoyer au programme lquivalent
dune frappe sur la touche Origine, vous devrez utiliser le littral {Home}, comme suit :
SendKeys "{Home}"
Recherchez SendKeys dans laide en ligne de Visual Basic pour connatre les constantes
nommes affectes chaque touche spciale.
Info
SendKeys
Contrles supplmentaires
Botes de message et botes dentre offrent un moyen commode denvoyer et de
recevoir des informations, par lintermdiaire de fentres qui souvrent et se ferment
volont. Les botes de message et dentre forment un complment intressant aux
labels et zones de texte, parce quelles afchent et recueillent les entres dune manire
diffrente.
189
<
:
Partie II
Il vous reste dcouvrir dautres contrles, qui permettent de recevoir des entres et
laissent lutilisateur plusieurs choix. Ce sera lobjet de la suite du chapitre. Au terme de
votre lecture, vous serez en mesure dintgrer vos applications plusieurs nouveaux
contrles.
Une case cocher (check box, en anglais) est une option propose sur la
feuille. La case est coche lorsque loption est slectionne, dcoche
lorsque loption est dslectionne. Les cases cocher offrent lutilisateur
le choix entre deux valeurs possibles : True/False, Enabled/Disabled, etc.
Une case cocher est soit coche, soit dcoche. Value est la proprit du contrle CheckBox qui dtermine ltat de la case. Si la proprit Value vaut 1, loption est slectionne
et la case est coche. Si Value vaut 0, loption est dslectionne et la case dcoche.
ntion
Atte
ce
Astu
Ltat dune case cocher peut tre interrog par une instruction If du format suivant :
If (chkUnder.Value = 1) Then
>
:
190
Figure 7.7
Les cases cocher
offrent lutilisateur
le choix entre diverses
options.
Contrles
case
cocher
Rappelez-vous que votre feuille peut contenir plusieurs cases cocher. Il est possible,
par une programmation fastidieuse, de faire en sorte quune seule case soit coche la
fois. Mais Visual Basic dispose dun moyen plus simple et plus efcace pour offrir des
options mutuellement exclusives. Cest ce que nous allons maintenant dcouvrir.
Option slectionne
191
<
:
Partie II
ition
Dfin
Ne placez jamais un bouton doption tout seul sur une feuille, car ce bouton,
une fois slectionn, ne pourrait plus tre dslectionn.
Le frame, parfois dit contrle conteneur, regroupe des contrles dans une zone
distincte de la feuille elle-mme. Vous pouvez ainsi proposer dans une mme
fentre plusieurs jeux de boutons doption, chaque jeu tant bien circonscrit
dans son frame. Les frames ne sappliquent pas, dailleurs, quaux boutons
doption ; ils peuvent recevoir tous les types de contrles que vous voudrez
regrouper.
La Figure 7.9 montre une feuille dont deux boutons doption sont slectionns. Cela
nest possible que parce que la feuille contient dun ct trois boutons, de lautre un
frame avec deux autres boutons. Sans le frame, un seul des cinq boutons doption
pourrait tre slectionn.
Info
>
:
192
Faire
Nhsitez pas placer sur la feuille autant de frames que ncessaire an
doffrir diffrentes catgories doptions dans une mme fentre.
Figure 7.9
En plaant un frame
sur la feuille,
vous permettez
lutilisateur
de slectionner
un bouton dans
chaque groupe.
Frame
Les frames sont trs faciles crer. Voici les proprits utiles cet effet :
BorderStyle. Les deux valeurs possibles sont 0-None et 1-Fixed single. Comme
pour la plupart des proprits de ce type, vous pouvez affecter les valeurs 0 ou 1 au
moyen dinstructions daffectation, lexcution, ou bien spcier une valeur par
dfaut dans la fentre Proprits, lors de la conception. Avec la valeur 0, le frame ne
prsentera pas de bordure ni de libell, et la sparation davec le reste de la feuille
sera donc invisible. Un frame sans bordure reste un frame, et les boutons doption
quil contient restent indpendants des autres boutons doption de la feuille ; mais
lutilisateur prouvera quelque difcult discerner les diffrents groupes.
Avant dattaquer le chapitre suivant, nous vous proposons un troisime Projet bonus,
"Entres utilisateur et logique conditionnelle". Ce projet vous invite crer une application complte, incluant notamment des boutons doption regroups en frame. Vous
apprendrez ainsi disposer proprement les frames sur la feuille, et y intgrer les divers
boutons doption. En effet, pour que Visual Basic reconnaisse que les boutons doption
font partie du frame et non de la feuille elle-mme, vous devez les placer par-dessus le
frame.
193
<
:
Partie II
En rsum
Ce chapitre vous a prsent les fonctions internes. Vous en dcouvrirez de nouvelles en
progressant dans cet ouvrage. Il suft dappeler les fonctions, de leur appliquer des arguments et de traiter les valeurs renvoyes pour effectuer des oprations complexes sans
avoir crire de codes fastidieux.
La fonction MsgBox() permet dadresser des messages lutilisateur par le biais de petites
fentres. En guise de rponse, lutilisateur ne peut que cliquer sur un bouton de
commande. Les botes de message permettent notamment de demander lavis de lutilisateur avant deffectuer une opration quelconque ; pour dcommander lopration, il lui
suft de cliquer sur Annuler. L o la fonction MsgBox() se contente dafcher des
messages, la fonction InputBox() permet de poser des questions lutilisateur et de
recevoir des rponses dans une mme fentre.
Le programme peut galement obtenir des informations de lutilisateur par le biais
dautres contrles, tels que les cases cocher ou les boutons doption (lesquels peuvent
tre regroups en frames). Le code sexcute en fonction des options slectionnes par
lutilisateur.
Le prochain chapitre pousse un peu plus loin ltude de la structure des programmes
Visual Basic. Vous approfondirez la notion de variables locales et globales, et
dcouvrirez peu prs toutes les fonctions internes que vous pouvez utiliser.
Questions-rponses
Q Pourquoi une fonction interne ne peut-elle renvoyer plus dune valeur ?
R On pourrait dire que la fonction interne devient sa valeur renvoye. Une fonction
interne marche comme une expression : elle produit une valeur, et une seule. On
passe la fonction interne une valeur ou un ensemble de valeurs quelle doit traiter
ou combiner dune faon ou dune autre. La valeur renvoye est le rsultat de ce
traitement ou de cette combinaison. Par exemple, la fonction reoit un argument
chane qui spcie le chemin daccs dune image ; la valeur renvoye nest autre
que cette image elle-mme, qui pourra tre affecte un contrle ou une proprit
graphique.
De par leur nature, les fonctions internes peuvent tre utilises partout o peuvent
tre utilises les valeurs quelles renvoient. Ainsi, plutt que dafcher un littral
chane ou une variable dans une bote de message, vous pouvez appeler une fonction
InputBox() en lieu et place de la chane afcher. En procdant ainsi, vous imbriquez une fonction dans une autre. La fonction intrieure, InputBox(), sexcute en
>
:
194
premier et obtient une chane de lutilisateur ; puis MsgBox() sexcute son tour et
afche la chane reue dans une bote de message. Voici un exemple :
intResp = MsgBox(InputBox("Quel est votre nom ?"))
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront la mise en pratique de ce que vous avez appris. Il convient de
comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant.
Vous trouverez ces rponses lAnnexe A.
Quiz
1. Quelle est la diffrence entre un argument et une fonction interne ?
2. On peut spcier le bouton par dfaut dune bote de message. Vrai ou faux ?
3. Quel mot cl est quivalent la chane nulle "" ?
4. Les Tableau 7.1, 7.2 et 7.3 dcrivent trois arguments diffrents qui peuvent tre utiliss avec la fonction MsgBox(). Vrai ou faux ?
5. Quapparat-il par dfaut dans la barre de titre des botes de message et dentre si
vous ne spciez pas largument correspondant ?
6. Quelle est la diffrence essentielle entre une case cocher et un bouton doption ?
7. On peut afcher des boutons doption sur une feuille sans quun seul ne soit
slectionn. Vrai ou faux ?
195
<
:
Partie II
8. Quelle valeur de proprit dtermine si une case cocher est slectionne ou non ?
9. Quelle valeur de proprit dtermine si un bouton doption est slectionn ou non ?
10. Pourquoi est-il parfois ncessaire dinclure des boutons doption dans un frame ?
Exercices
1. Dcrivez de quelle faon le code parvient dterminer si lutilisateur a saisi une
valeur dans une bote dentre (ou accept la valeur par dfaut), ou sil a cliqu sur
le bouton Annuler.
2. Ecrivez la fonction MsgBox() ncessaire pour gnrer la bote de message de la
Figure 7.10.
Figure 7.10
Comment gnrer
cette bote de message ?
>
:
196
PB3
Entres utilisateur
et logique conditionnelle
Ce Projet bonus met en pratique les diffrents contrles que nous avons tudis, ainsi
que la gestion des rponses utilisateur. Lapplication que vous allez crer inclura des
cases cocher, des boutons doption et des frames.
Tout cela va naturellement demander un peu de programmation. En fait, ce Projet bonus
contient plus de code que vous nen avez encore vu. Voici les objectifs de lapplication :
Proposer les pays, mais avec, cette fois, des boutons doption, de sorte que lutilisateur ne puisse slectionner quun seul pays la fois.
Ajouter aux boutons doption des pays un second jeu de boutons doption, par
lesquels lutilisateur choisit dafcher les drapeaux dans un grand ou un petit
format.
197
Partie II
Info
>
:
Contrle
Proprit
Valeur
Feuille
Caption
Slection du drapeau
Feuille
Name
frmSelect
Feuille
Height
4035
Feuille
Width
6390
Label
Name
lblFlags
198
Proprit
Valeur
Label
BorderStyle
1-Fixed Single
Label
Caption
Drapeaux
Label
Font
MS Sans Serif
Label
Font Size
24
Label
Font Style
Bold
Label
Height
615
Label
Left
2000
Label
Top
600
Label
Width
2300
Bouton doption 1
Name
optCheck
Bouton doption 1
Caption
&Cases cocher
Bouton doption 1
Left
2280
Bouton doption 1
Top
1920
Bouton doption 1
Width
1575
Bouton doption 2
Name
optOption
Bouton doption 2
Caption
&Boutons doptions
Bouton doption 2
Left
2280
Bouton doption 2
Top
2520
Bouton doption 2
Width
1695
Bouton de commande 1
Name
cmdSelect
Bouton de commande 1
Caption
Continue&r
Bouton de commande 1
Left
4560
Bouton de commande 1
Top
2040
199
<
:
Partie II
Proprit
Valeur
Bouton de commande 2
Name
cmdExit
Bouton de commande 2
Caption
&Quitter
Bouton de commande 2
Left
4560
Bouton de commande 2
Top
2760
Le code requis pour cette feuille est simple, mais il met en uvre un nouveau concept.
Ce code, donn au Listing PB3.1, implique le chargement dune feuille distincte de
celle qui est afche.
Listing PB3.1 : Rception du choix de lutilisateur par les boutons doption
>
:
1:
2:
3:
4:
5:
6:
200
201
<
:
Partie II
Figure PB3.2
Lutilisateur
slectionne le pays
dont il veut afcher
le drapeau.
>
:
Contrle
Proprit
Valeur
Feuille
Name
frmFlagsCheck
Feuille
Caption
Drapeaux
Feuille
Height
7035
Feuille
Width
7710
Case cocher 1
Name
chkEngland
Case cocher 1
Caption
Grande-&Bretagne
Case cocher 1
Left
2835
Case cocher 1
Top
420
Case cocher 2
Name
chkItaly
Case cocher 2
Caption
&Italie
Case cocher 2
Height
495
Case cocher 2
Left
2835
202
Proprit
Valeur
Case cocher 2
Top
1155
Case cocher 2
Width
1215
Case cocher 3
Name
chkSpain
Case cocher 3
Caption
&Espagne
Case cocher 3
Height
495
Case cocher 3
Left
2835
Case cocher 3
Top
1905
Case cocher 3
Width
1215
Case cocher 4
Name
chkMexico
Case cocher 4
Caption
&Mexique
Case cocher 4
Height
495
Case cocher 4
Left
2835
Case cocher 4
Top
2595
Case cocher 4
Width
1215
Case cocher 5
Name
chkFrance
Case cocher 5
Caption
&France
Case cocher 5
Height
495
Case cocher 5
Left
2835
Case cocher 5
Top
3375
Case cocher 5
Width
1215
Case cocher 7
Name
chkUSA
Case cocher 7
Caption
&USA
Case cocher 7
Height
495
203
<
:
Partie II
>
:
Contrle
Proprit
Valeur
Case cocher 7
Left
2865
Case cocher 7
Top
4140
Case cocher 7
Width
1215
Image 1
Name
imgEngland
Image 1
Height
480
Image 1
Left
4440
Image 1
Picture
Image 1
Top
480
Image 1
Visible
False
Image 2
Name
imgItaly
Image 2
Height
480
Image 2
Left
4440
Image 2
Picture
Image 2
Top
1155
Image 2
Visible
False
Image 3
Name
imgSpain
Image 3
Height
480
Image 3
Left
4440
Image 3
Picture
Image 3
Top
1890
Image 3
Visible
False
Image 4
Name
imgMexico
204
Proprit
Valeur
Image 4
Height
480
Image 4
Left
4440
Image 4
Picture
Image 4
Top
2520
Image 4
Visible
False
Image 5
Name
imgFrance
Image 5
Height
480
Image 5
Left
4440
Image 5
Picture
Image 5
Top
3315
Image 5
Visible
False
Image 6
Name
imgUSA
Image 6
Height
480
Image 6
Left
4440
Image 6
Picture
Image 6
Top
4080
Image 6
Visible
False
Bouton de commande
Name
cmdReturn
Bouton de commande
Caption
&Revenir la slection
Bouton de commande
Left
5520
Bouton de commande
Top
5040
205
<
:
Partie II
Il faut maintenant ajouter le code la feuille. Double-cliquez sur la feuille frmFlagsCheck et intgrez le code du Listing PB3.2. Cette nouvelle feuille devra afcher le
drapeau correspondant chaque pays coch par lutilisateur. Il sagit donc dassocier
chaque case cocher une procdure vnementielle Click.
Listing PB3.2 : Afchage des drapeaux pour chaque case coche
>
:
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:
206
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
imgUSA.Visible = True
Else
imgUSA.Visible = False
End If
End Sub
Private Sub cmdReturn_Click()
Retour la feuille de slection.
frmFlagsCheck.Hide
frmSelect.Show
End Sub
207
<
:
Partie II
Figure PB3.3
Cette feuille permet
lutilisateur
dafcher un drapeau
la fois et de dnir
la taille du drapeau.
ntion
Atte
Pour ajouter les boutons doption au frame, il faut dessiner les boutons pardessus le frame. Si vous vous contentez de double-cliquer sur loutil
OptionButton de la Bote outils, le bouton doption apparatra au centre de
la feuille, et Visual Basic ne le considrera pas comme une partie du frame.
Pour que vos boutons doption soient bien circonscrits au frame, il faut
commencer par cliquer une fois sur loutil, puis dessiner le contour du bouton
sur le frame ; et ainsi, pour chaque bouton ajouter. Cest cette seule condition que les boutons doption seront reconnus comme intgrs au frame, et
distincts des autres boutons doption de la feuille.
De nouveau, il faut crer une nouvelle feuille et lajouter au projet en cours. Une fois
que vous avez ajout cette troisime et dernire feuille, intgrez les lments dtaills au
Tableau PB3.3.
>
:
208
Proprit
Valeur
Feuille
Name
frmFlagsOpt
Feuille
Caption
Drapeaux
Feuille
Height
7335
Feuille
Width
8955
Bouton doption 1
Name
optEngland
Bouton doption 1
Caption
Grande-&Bretagne
Bouton doption 1
Height
495
Bouton doption 1
Left
2760
Bouton doption 1
Top
360
Bouton doption 1
Value
True
Bouton doption 1
Width
1215
Bouton doption 2
Name
optItaly
Bouton doption 2
Caption
&Italie
Bouton doption 2
Height
495
Bouton doption 2
Left
2760
Bouton doption 2
Top
1080
Bouton doption 2
Width
1215
Bouton doption 3
Name
optSpain
Bouton doption 3
Caption
&Espagne
Bouton doption 3
Height
495
Bouton doption 3
Left
2760
Bouton doption 3
Top
1800
Bouton doption 3
Width
1215
209
<
:
Partie II
>
:
Contrle
Proprit
Valeur
Bouton doption 4
Name
optMexico
Bouton doption 4
Caption
&Mexique
Bouton doption 4
Height
495
Bouton doption 4
Left
2760
Bouton doption 4
Top
2520
Bouton doption 4
Width
1215
Bouton doption 5
Name
optFrance
Bouton doption 5
Caption
&France
Bouton doption 5
Height
495
Bouton doption 5
Left
2760
Bouton doption 5
Top
3240
Bouton doption 5
Width
1215
Bouton doption 6
Name
optUSA
Bouton doption 6
Caption
&USA
Bouton doption 6
Height
495
Bouton doption 6
Left
2760
Bouton doption 6
Top
3960
Bouton doption 6
Width
1215
Frame
Name
fraSize
Frame
Caption
Taille du drapeau
Frame
Height
1215
Frame
Left
1320
Frame
Top
5040
210
Proprit
Valeur
Frame
Width
1575
Frame, option 1
Name
optLarge
Frame, option 1
Caption
&Grand
Frame, option 1
Height
255
Frame, option 1
Left
360
Frame, option 1
Top
360
Frame, option 1
Width
1095
Frame, option 2
Name
optSmall
Frame, option 2
Caption
&Petit
Frame, option 2
Height
255
Frame, option 2
Left
360
Frame, option 2
Top
720
Frame, option 2
Width
1095
Image 1
Name
imgEngland
Image 1
Height
480
Image 1
Left
5280
Image 1
Picture
Image 1
Stretch
True
Image 1
Top
2160
Image 1
Visible
True
Image 2
Name
imgItaly
Image 2
Height
480
Image 2
Left
5280
211
<
:
Partie II
>
:
Contrle
Proprit
Valeur
Image 2
Picture
Image 2
Stretch
True
Image 2
Top
2160
Image 2
Visible
False
Image 3
Name
imgSpain
Image 3
Height
480
Image 3
Left
5280
Image 3
Picture
Image 3
Stretch
True
Image 3
Top
2160
Image 3
Visible
False
Image 4
Name
imgMexico
Image 4
Height
480
Image 4
Left
5280
Image 4
Picture
Image 4
Stretch
True
Image 4
Top
2160
Image 4
Visible
False
Image 5
Name
imgFrance
Image 5
Height
480
Image 5
Left
5280
Image 5
Picture
212
Proprit
Valeur
Image 5
Stretch
True
Image 5
Top
2160
Image 5
Visible
False
Image 6
Name
imgUSA
Image 6
Height
480
Image 6
Left
5280
Image 6
Picture
Image 6
Stretch
True
Image 6
Top
2160
Image 6
Visible
False
Bouton de commande
Name
cmdReturn
Bouton de commande
Caption
&Revenir la slection
Bouton de commande
Height
495
Bouton de commande
Left
4920
Bouton de commande
Top
5400
Bouton de commande
Width
1215
Le Listing PB3.3 fournit le code pour la troisime feuille. Comme vous pouvez le constater, il y a de la longueur ! Mais ce code, en ralit, consiste principalement en la rptition
de six routines semblables, pour chacun des boutons doption.
Listing PB3.3 : Afchage du drapeau selon le bouton doption slectionn
1:
2:
3:
4:
5:
6:
213
<
:
Partie II
>
:
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:
214
imgEngland.Height = 2800
imgEngland.Width = 2800
End If
imgEngland.Visible = True
Masquer les autres drapeaux.
imgItaly.Visible = False
imgSpain.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
End Sub
Private Sub optItaly_Click()
Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgItaly.Height = 480
imgItaly.Width = 480
Else Grande taille.
imgItaly.Height = 2800
imgItaly.Width = 2800
End If
imgItaly.Visible = True
Masquer les autres drapeaux.
imgEngland.Visible = False
imgSpain.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
End Sub
Private Sub optSpain_Click()
Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgSpain.Height = 480
imgSpain.Width = 480
Else Grande taille
imgSpain.Height = 2800
imgSpain.Width = 2800
End If
imgSpain.Visible = True
Masquer les autres drapeaux.
imgItaly.Visible = False
imgEngland.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
End Sub
Private Sub optMexico_Click()
Bouton slectionn = drapeau affich.
If optSmall.Value = True Then
imgMexico.Height = 480
imgMexico.Width = 480
57:
Else Grande taille
58:
imgMexico.Height = 2800
59:
imgMexico.Width = 2800
60:
End If
61:
imgMexico.Visible = True
62:
Masquer les autres drapeaux.
63:
imgItaly.Visible = False
64:
imgSpain.Visible = False
65:
imgEngland.Visible = False
66:
imgFrance.Visible = False
67:
imgUSA.Visible = False
68: End Sub
69: Private Sub optFrance_Click()
70: Bouton slectionn = drapeau affich.
71:
If optSmall.Value = True Then
72:
imgFrance.Height = 480
73:
imgFrance.Width = 480
74:
Else Grande taille
75:
imgFrance.Height = 2800
76:
imgFrance.Width = 2800
77:
End If
78:
imgFrance.Visible = True
79:
Masquer les autres drapeaux.
80:
imgItaly.Visible = False
81:
imgSpain.Visible = False
82:
imgMexico.Visible = False
83:
imgEngland.Visible = False
84:
imgUSA.Visible = False
85: End Sub
86: Private Sub optUSA_Click()
87: Bouton slectionn = drapeau affich.
88:
If optSmall.Value = True Then
89:
imgUSA.Height = 480
90:
imgUSA.Width = 480
91:
Else Grande taille
92:
imgUSA.Height = 2800
93:
imgUSA.Width = 2800
94:
End If
95:
imgUSA.Visible = True
96:
Masquer les autres drapeaux.
97:
imgItaly.Visible = False
98:
imgSpain.Visible = False
99:
imgMexico.Visible = False
100:
imgFrance.Visible = False
101:
imgEngland.Visible = False
102: End Sub
103: Private Sub cmdReturn_Click()
104: Retour la feuille de slection.
105:
frmFlagsOpt.Hide
106:
frmSelect.Show
107: End Sub
108: Private Sub optSmall_Click()
215
<
:
Partie II
>
:
216
lafchage des autres drapeaux (lignes 12 16). Les cinq procdures vnementielles
suivantes (lignes 18 102) font de mme pour chaque drapeau slectionnable.
A la ligne 103 commence une courte procdure vnementielle qui fonctionne comme
la procdure du module des cases cocher. Elle cache la feuille des boutons doption et
afche de nouveau la feuille de slection, dans laquelle lutilisateur pourra faire un autre
choix ou quitter le programme.
Aux lignes 108 et 125 commencent des procdures vnementielles identiques qui
dsactivent lafchage de tous les drapeaux. Bien sr, un seul drapeau tait visible ;
mais, au lieu de rechercher celui qui est afch pour dnir sa proprit Visible comme
False, le code dnit comme False la proprit Visible de tous les contrles image.
Mme si cinq sur six ont dj la valeur False, on sassure ainsi quaucun drapeau ne
sera visible.
En cliquant sur lun des boutons doption qui rglent la taille des drapeaux, on cache donc
tous les drapeaux afchs ; cela an que le drapeau choisi apparaisse dans lune ou lautre
taille, selon la slection de lutilisateur. On pourrait rcrire lapplication de sorte que le
code change directement la taille du drapeau afch, mais ce projet deviendrait encore plus
long et vous en avez dj assez comme a !
ce
Astu
217
<
:
Rsum de la Partie I
Vous tes au terme de la premire partie. Vous pouvez tre er, car vous tes en passe de
devenir un authentique programmeur Visual Basic.
Comme vous lavez compris, la programmation en Visual Basic implique bien plus que la
simple matrise du langage. Dune certaine manire, le langage de programmation luimme est secondaire. Crer une application Windows en Visual Basic, cest surtout
disposer des contrles sur la feuille, puis rgler les proprits qui en dniront le comportement.
Voici ce que nous avons tudi dans ces sept chapitres :
Lenvironnement Visual Basic. Lenvironnement Visual Basic inclut toutes les fentres et barres doutils requises pour programmer les applications Windows
(Chapitre 2).
La fentre Prsentation des feuilles. Vous pouvez rgler la disposition des feuilles
sur votre cran (Chapitre 2).
LAide en ligne Visual Basic. Visual Basic fournit toute laide en ligne ncessaire.
Si vous avez install MSDN, vous pouvez consulter, depuis Visual Basic, une
immense source dinformations (Chapitre 2).
219
Partie II
>
:
Crer des applications. Plutt que de passer par lassistant Cration dapplications,
vous pouvez crer votre application partir dune feuille vierge et ajouter vousmme tout le code (Chapitre 2).
Le contrle zone de texte. Les zones de texte permettent lutilisateur de saisir des
informations (Chapitre 3).
Le contrle bouton de commande. Les boutons de commande permettent lutilisateur de dclencher lui-mme certaines actions (Chapitre 3).
Les menus. Visual Basic vous permet dintgrer vos applications les barres et
options de menu standards de Windows (Chapitre 4).
Le Crateur de menus. Le Crateur de menus est une bote de dialogue qui permet
de crer rapidement un systme de menus (Chapitre 4).
Les vnements de menu. Les options de menu dclenchent des vnements Click
qui sont faciles programmer (Chapitre 4).
La fentre Code. Les outils ddition de la fentre Code vous assistent dans vos
tches dcriture (Chapitre 5).
Les variables. Les variables permettent de stocker des valeurs et des rsultats
(Chapitre 5).
Lordre de prsance des oprateurs. Visual Basic calcule les expressions mathmatiques selon un ordre strict de priorits (Chapitre 5).
Les boucles. Les boucles permettent de rpter plusieurs fois une section de code
(Chapitre 6).
220
Le contrle case cocher. Les cases cocher offent lutilisateur un moyen simple
de slectionner des options (Chapitre 7).
Le contrle frame. Les frames permettent de regrouper des boutons doption qui
forment ds lors un ensemble distinct des autres boutons doption de la feuille
(Chapitre 7).
221
<
:
Partie
II
225
271
293
327
337
345
379
407
415
435
467
Rsum de la Partie II . . . . . . . . . . . . . . . . . . . .
475
223
Partie II
Comme vous avez pu le constater dans la Partie I, la programmation en Visual Basic est
quelque chose de facile et mme damusant parfois. Alors que les programmeurs
davant Visual Basic devaient dnir et congurer " la main" les moindres lments
du programme, vous pouvez laisser Visual Basic ces dtails et vous concentrer sur les
impratifs spciques de votre application. Dans cette Partie II, vous avancerez un peu
plus vers la matrise de Visual Basic et travaillerez donc sur des applications un peu plus
complexes.
Au terme des chapitres qui suivent, vous matriserez peu prs tout ce que vous devrez
savoir du langage de programmation Visual Basic. Au Chapitre 9 notamment, vous
dcouvrirez comment les nombreuses fonctions internes de Visual Basic vous pargnent
une partie du codage. Vous pouvez ainsi remettre Visual Basic le soin deffectuer certains
calculs et certaines manipulations.
Toutefois, cette partie ne parlera pas que de code. Vous apprendrez intgrer vos
programmes des botes de dialogue standards, an doffrir vos utilisateurs une interface familire pour louverture de chiers ou limpression. Vos applications nen seront
que plus attrayantes.
Dans la Partie I, vous avez appris interagir avec lutilisateur par le biais des contrles
afchs lcran. Cette Partie II vous fera dcouvrir de nouvelles techniques
dinteraction : rpondre aux touches du clavier, aux clics et double-clics, aux oprations
de glisser-dposer... Vous serez ainsi en mesure de satisfaire toutes les attentes et
toutes les intuitions de lutilisateur.
Mais ce nest pas tout de recevoir des donnes encore faut-il en envoyer lutilisateur. Vous dcouvrirez donc les techniques dcriture de chiers et dimpression. Enn,
au Chapitre 14, vous apprendrez intgrer image et multimdia vos applications.
Grce aux contrles, aux proprits, aux vnements et aux mthodes Visual Basic,
vous crerez des applications pleinement interactives et dynamiques sans vous tuer
louvrage !
>
:
224
Chapitre
Sous-routines
et fonctions
Ce chapitre explique la structure et le fonctionnement des applications Visual Basic
complexes, contenant de multiples modules et procdures. Dans de telles applications
extensives, les donnes doivent tre partages entre plusieurs procdures et modules ; il
faut, pour cela, dclarer convenablement les variables, et crire le code de telle sorte que
ces variables soient accessibles plusieurs procdures.
Vous allez donc crire de nombreuses procdures, mais galement faire appel aux fonctions
internes pour analyser et traiter des chanes, des nombres et dautres types de donnes. Ce
chapitre prsente toutes les fonctions internes dont vous aurez besoin en situation relle.
Voici ce que nous dcouvrirons aujourdhui :
225
Partie II
Questions de structures
Vous avez dj une bonne ide du fonctionnement interne des programmes Visual Basic.
Lorsque lutilisateur interagit avec les contrles, des vnements ont lieu. Si lapplication contient les procdures vnementielles adaptes ces contrles et ces vnements, le programme ragit. Le code dun programme Visual Basic est, pour le
principal, constitu dune section de dclarations, suivie dune longue srie de procdures vnementielles.
Info
Nous allons maintenant nous attacher une autre partie des programmes Visual Basic.
Les procdures vnementielles ne constituent pas le seul type de procdures susceptible
dapparatre dans le code. La Figure 8.1 illustre le code contenu dans un module de
feuille. Outre les dclarations et les procdures vnementielles, un module peut contenir
des procdures gnrales et des procdures de classe.
Figure 8.1
Un module recle
diffrents types
de codes.
Le module de feuille
Dclarations
Private Sub Gen_Proc1 []
' Corps de la premire procdure gnrale.
End Sub
Private Sub Gen_Proc2 []
' Corps de la seconde procdure gnrale.
End Sub
Private Sub Event_Proc1 []
' Corps de la premire procdure vnementielle.
End Sub
Private Sub Event_Proc2 []
' Corps de la seconde procdure vnementielle.
End Suba
Private Sub Class_Proc1 []
' Corps de la premire procdure de classe.
End Sub
ition
Dfin
>
:
226
Une procdure est dite gnrale quand elle nest pas associe un vnement
de contrle, mais effectue des calculs et divers traitements.
ition
Dfin
Une procdure de classe est un objet Visual Basic spcial, cr par le programmeur. Les classes permettent de dnir un nouveau type de donnes ou de
variables.
Souvenez-vous des deux listes droulantes qui, dans la fentre Code, indiquent le type
ou le nom des objets et des procdures du module en cours. La liste Objet afche une
entre pour chaque contrle de la feuille. Tout en haut de la liste se touve galement un
objet spcial, (Gnral). (Les parenthses indiquent quil ne sagit pas dun contrle,
mais dune section du code.) La section gnrale contient la fois la section de dclarations, situe au dbut du code, et les procdures gnrales que vous crivez.
imgEngland.Visible = False
imgItaly.Visible = False
imgSpain.Visible = False
imgMexico.Visible = False
imgFrance.Visible = False
imgUSA.Visible = False
Dslectionner tous les boutons doption.
optEngland.Value = False
optItaly.Value = False
optSpain.Value = False
optMexico.Value = False
optFrance.Value = False
optUSA.Value = False
Que de lignes pour dire la mme chose ! Bien entendu, la fentre Code autorise le
copier/coller, ce qui peut allger votre peine, mais ne rsout pas le problme. Que se
passera-t-il si vous devez modier le code ? Il faudra alors avoir soin de mettre jour
chaque ligne concerne. Le code rptitif nest pas seulement fatigant saisir, mais
galement plus dlicat maintenir.
Dans des cas pareils, la meilleure solution consiste placer le code dans sa propre procdure gnrale, comme dans le code suivant. Notez que chaque procdure gnrale doit
recevoir un nom unique (suivez pour cela les mmes rgles que pour les noms de variables).
227
<
:
Partie II
En outre, une procdure gnrale peut tre une fonction aussi bien quune sous-routine.
Examinez cela :
Lorsquune autre procdure requiert lexcution dun code identique, il suft dappeler
la procdure gnrale, comme ceci :
Call Clear_Flags()
ition
Dfin
Appeler une procdure signie excuter une procdure depuis une autre procdure.
>
:
228
inclus dans dautres rapports gnrs par dautres applications. Comment ? Cest ce que
nous allons maintenant vous expliquer.
Une procdure situe dans la section gnrale dun module de feuille est disponible
pour tout le module, mais seulement pour ce module ; les autres applications ny ont pas
accs. Pour cela, il faut placer la procdure dans un module de code. Vous pouvez ainsi
crire le code de vos rapports dans un module de code spcique qui contiendra
lensemble des routines utilises pour gnrer des rapports. Grce au module de code,
ces routines seront alors accessibles toute application impliquant la gnration de
rapports. Il suft de cliquer du bouton droit dans la fentre Projet de lapplication, de slectionner dans le menu contextuel Ajouter, Module, puis de saisir le code.
ce
Astu
Le code dun module de feuille peut exploiter un module de code ajout. Il convient,
pour cela, dappeler la procdure depuis le module de feuille. Une exception toutefois :
seules les procdures publiques peuvent tre utilises en dehors de leur propre module,
contrairement aux procdures prives. Considrez cette dclaration de procdure :
Private Sub ReportIt()
Cette procdure peut seulement tre appele dans le module qui la contient. Si vous
laviez dclare comme procdure publique, elle aurait t accessible depuis nimporte
quelle autre procdure de nimporte quel autre module de lapplication. Voici une
dclaration de procdure publique :
Public Sub ReportIt()
Ainsi, il convient de dclarer comme publiques les procdures dutilit gnrale que
vous crivez an de disposer toujours de son code.
Rcapitulons :
Une procdure dclare comme Public peut tre appele depuis nimporte quelle
autre procdure de lapplication.
229
<
:
Partie II
Une variable locale nest exploitable que dans le code qui la contient.
Une variable globale est exploitable en dehors de la zone pour laquelle elle
est dclare.
ition
Dfin
On entend par porte le degr de disponibilit dune variable dans le code dune
application.
Info
Les contrles sont tous et toujours visibles et publics pour lensemble du code
dune application. Les contrles dune feuille ne sont jamais cachs.
Imaginons quun commerant vous charge dcrire une petite application comptable,
destine notamment calculer le montant dune taxe de vente. Vous crivez donc une
procdure qui calcule la taxe sur le chiffre de vente total. Mais cette procdure est, en
fait, dutilit gnrale, puisque la taxe sapplique diffrents types de produits, traits
dans des modules diffrents. Plutt que de rpter les routines de calcul plusieurs fois
dans lapplication, vous les stockez dans un module de code spcique. La procdure de
calcul sera ainsi accessible toutes les applications qui doivent prendre en compte le
calcul de cette taxe de vente ; il sufra que vous leur ajoutiez le module.
Reste toutefois un problme les procdures ne peuvent pas toujours partager les
donnes. Considrez la section de code suivante :
Private Sub GetSalesTotal()
Ajouter le prix de chaque article vendu,
puis calculer le chiffre de vente total.
Suite de la procdure.
>
:
230
Info
Info
Nous avons vu quune variable locale nest utilisable que pour le code de la
procdure dans laquelle elle a t dclare. On dit aussi que la variable nest
visible que pour cette procdure.
Le terme visible renvoie au concept de porte expliqu plus haut. Une variable
est visible pour les procdures qui y ont accs. Ainsi, une variable locale nest
visible que pour la procdure qui la contient, tandis quune variable
globale est visible pour tout le module.
Vous pouvez dclarer curTotal comme variable globale pour le module, en dplaant
linstruction Dim de la procdure la section de dclarations du module :
Option Explicit
Dclaration de toutes les variables publiques.
Dim curTotal As Currency
La variable curTotal est alors accessible partout dans le module de feuille. En fait, cela
va sans doute vous surprendre, mais la situation est encore pire. Comme nous lexpliquions au Chapitre 5, les variables locales sont prfrables aux variables globales, parce
que, daprs une rgle gnrale, les procdures ne doivent avoir accs quaux donnes
strictement ncessaires. En la dclarant comme globale dans la section (Gnral) de la
fentre Code, vous avez rendu la variable visible pour toutes les procdures du module,
mme celles qui nen ont aucun usage ; mais la variable nest toujours pas visible pour
les autres modules !
ce
Astu
Pour que la variable soit rellement globale tout le projet, il faut la dclarer avec le mot cl
Public, au lieu de lusuel Dim, et placer cette instruction Public dans la section de dclarations du module. La variable devient ainsi publique pour lensemble de lapplication.
ntion
Atte
231
<
:
Partie II
A titre de rcapitulatif des notions tudies jusquici, examinez la Figure 8.2. Y sont
illustres les relations quentretiennent dans une application les variables publiques, de
niveau module et locales. Dans chaque module, les rectangles reprsentent des
procdures. Les annotations indiquent quelles variables sont accessibles quelles
procdures.
Figure 8.2
La porte
dune variable
dtermine
les procdures qui
peuvent y accder.
Module 1
Publics P1 As Integer
Dim a As Integer
Module 2a
Peut accder
P2, b, P1 et L2a.
Peut accder
P1, a, P2 et L1.
Peut accder
P1, a, P2 et L2.
Cette procdure
peut seulement
tre appele
depuis le
Module 1.
Publics P2 As Integer
Dim b As String
Peut accder
P2, b, P1 et L2c.
Public Sub PM2c []
Toutes ces histoires de variables publiques ont de quoi dsoler les programmeurs soucieux
de lisibilit et de sret du code. Car, si les variables de niveau module sont viter, que dire,
alors, des variables dclares comme publiques pour une application cest--dire visibles
pour toutes les procdures de tous les modules du projet !
En dnitive, et sauf les rares cas o une mme variable doit tre utilise par presque
toutes les procdures dun module, il est prfrable de dclarer des variables locales
avec Dim. Mais dautres procdures peuvent, malgr tout, avoir besoin de ces variables,
notamment les procdures gnrales stockes dans des modules de code externes. Il doit
donc exister un moyen de partager des donnes locales. Cest ce que dvoile la
prochaine section.
>
:
232
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:
233
<
:
Partie II
Info
Notez que le nom des variables passes ne doit pas forcment correspondre au
nom des arguments reus (ainsi, sngDisc la ligne 12 et sngRateDisc la
ligne 15). En revanche, le nombre darguments et les types de donnes doivent
tre identiques dans la liste darguments passs et dans la liste darguments
reus. La procdure appele sen tient aux noms sous lesquels les arguments lui
ont t passs.
La procdure SalesTax() peut tre stocke dans un module de code diffrent de celui de la
procdure GetTotal(), laquelle peut rsider dans la section gnrale dun module de
feuille. Les deux variables passes, bien que locales pour GetTotal(), sont passes
comme arguments la procdure externe SalesTax(). Ici, SalesTax() doit ncessairement recevoir des arguments au nombre de deux, et du type de donnes spci.
Une fois les deux variables reues, la procdure SalesTax() peut les traiter comme sil
sagissait de variables locales pour elle-mme. Les calculs sont appliqus aux valeurs, et
la ligne 28 afche le rsultat (le montant total de la taxe) dans une bote de message.
La Figure 8.3 illustre la transmission des arguments de GetTotal() SalesTax().
Figure 8.3
GetTotal() envoie
deux arguments
SalesTax().
Info
>
:
234
La ligne semble utiliser des types de donnes non quivalents, mais Visual
Basic sait grer ce type de non-quivalence. MsgBox() requiert un argument
initial de type String, et loprateur & ne peut concatner que des chanes.
Mais lorsquon demande la concatnation dune chane et dun nombre, Visual
Basic convertit automatiquement le nombre en chane.
Info
Faire
Pour interrompre une sous-routine avant son instruction End Sub, utilisez
Exit Sub. (Pour les procdures de type fonction, ce sera End Function.)
Toutefois, Exit Sub devrait toujours tre incluse dans une instruction If (ou
autre instruction conditionnelle), sans quoi la procdure sarrterait systmatiquement et nirait jamais plus loin que Exit Sub.
Il y a une autre faon dappeler les sous-routines. Vous pouvez omettre linstruction Call
ainsi que les parenthses. Les deux instructions suivantes sont quivalentes.
Call PrintTitle (Title)
PrintTitle Title
Ainsi, et moins que la procdure appele soit expressment destine modier les
arguments passs, les arguments devraient toujours tre protgs par le mot cl ByVal.
De cette faon, la procdure appele peut triturer tant quelle veut les arguments, la
procdure appelante retrouvera toujours ses valeurs dorigine.
ce
Astu
Le mot cl ByVal peut tre utilis devant tous, une partie ou un seul des arguments passs.
235
<
:
Partie II
Ici, FuncName est le nom de la fonction, Arg la liste des arguments, et dataType le type de
donnes. La barre verticale entre Public et Private indique quune fonction est soit
prive (visible pour le module seulement), soit publique (visible pour lapplication
entire). Une fonction peut ne pas avoir darguments ; auquel cas, on omet les parenthses. Toutefois, la plupart des fonctions reoivent au moins un argument. La clause As
dataType, que lon ne trouve pas dans les procdures de type sous-routine, dclare le
type de donnes de la valeur renvoye par la fonction. Une fonction ne peut renvoyer
quune seule valeur dont le type de donnes est spci par dataType.
Si lon rcrivait la procdure SalesTax() en une fonction qui renvoie le rsultat du
calcul de la taxe, la dclaration serait la suivante :
Public Function SalesTax(curTotal As Currency, sngRateDisc
As Single) As Currency
Info
Tout comme aux sous-routines, les arguments sont passs aux fonctions par
rfrence ou par valeur, selon le degr de protection que vous souhaitez assurer
aux arguments de la fonction appelante.
La valeur renvoye doit ncessairement tre affecte une variable portant le mme nom
que la fonction. Un telle variable na pas tre dclare. Ainsi, la valeur affecte par SalesTax() une variable nomme SalesTax() serait la valeur renvoye par la fonction. Lorsque
lexcution de la fonction sachve, soit par End Function, soit par une instruction Exit
Function, la valeur renvoye par la fonction est stocke dans la variable de renvoi.
La procdure appelante doit donc rserver une place pour la valeur renvoye. La valeur
renvoye est gnralement affecte une variable. Il nest pas rare de trouver, dans une
procdure appelante, une telle instruction :
curDailyNet = CalcNetAdj(curGrSls, sngTaxRt, curGrRate, curStrExp)
>
:
236
CalcNetAdj() est une fonction laquelle quatre valeurs sont passes. CalcNetAdj() traite
ces valeurs, et affecte une valeur de renvoi la variable nomme CalcNetAdj. Au terme de
la fonction, cette valeur est affecte la variable curDailyNet de la procdure appelante.
Les exercices de n de chapitre vous invitent transformer en fonction la sous-routine
CalcTax() du Listing 8.1. Pour le moment, tudiez le Listing 8.2 an de bien assurer
votre comprhension des fonctions.
Listing 8.2 : Les fonctions renvoient la procdure appelante une valeur unique
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Valeurs initiales.
La ligne 10 passe varR et varV (32 et 64) la fonction. Aux lignes 20 et 21, la fonction
affecte varR et varV les valeurs 81 et 74. varR ayant t pass par rfrence, sa valeur
sera galement de 81 dans la procdure appelante (CP()). La ligne 23 additionne les
valeurs 81 et 74, et elle affecte la somme comme valeur de renvoi de la fonction. Lorsque
End Function sexcute, linstruction daffectation de la procdure appelante (ligne 10)
affecte 155 intI. La ligne 12 afche la valeur de intI. La ligne 13 afche la valeur 81,
montrant ainsi que varR a t modi par la fonction appele. La ligne 14 afche
toujours 64, la valeur de varV ayant t protge par le mot cl ByVal.
237
<
:
Partie II
Ici, object peut tre tout argument ou variable de contrle. objectType est lune des
valeurs suivantes :
CheckBox, ComboBox, CommandButton, Graph, Image, Label, Line,
ListBox, OptionButton, OptionGroup, PageBreak, PictureBox,
Rectangle, Shape, TextBox, ToggleButton
ition
Dfin
Une variable de contrle (on dit aussi variable dobjet) est une variable dclare comme contrle. Les variables, nous le savons, prennent les types de
donnes Integer, String ou Currency. Mais les variables peuvent tre
dclares comme Object, cest--dire comme nimporte quel objet Visual
Basic, contrles inclus.
Quand une fonction reoit un argument dclar comme de type Object, on peut vrier
de quel contrle il sagit :
If TypeOf objIncoming Is CommandButton Then
>
:
238
Fonctions numriques
Nous commencerons notre tude des fonctions internes par les fonctions de conversion en
entier. Les plus communes ont ce format :
Int(numericValue)
Fix(numericValue)
Ici, numericValue est un littral, une variable ou une expression numriques, et mme une
fonction imbrique capable de renvoyer un nombre. Le type de donnes numrique pass,
quel quil soit, est maintenu pour les valeurs renvoyes ; mais ces valeurs sont utilisables
comme des entiers Integer.
ce
Astu
Ne pas faire
Ne passez jamais Int() ou Fix() un argument non numrique. Visual Basic
gnrerait une erreur lexcution.
Ces deux fonctions ont pour effet darrondir leurs arguments lentier le plus proche.
Elles se distinguent toutefois par le traitement appliqu aux valeurs ngatives. Dans les
239
<
:
Partie II
intAns1
intAns2
intAns3
intAns4
ce
Astu
ition
Dfin
=
=
=
=
Int(6.8)
Fix(6.8)
Int(-6.8)
Fix(-6.8)
6
6
-7
-6
Vous pouvez remarquer que ni Int() ni Fix() narrondit la valeur suprieure. Int() renvoie lentier infrieur le plus proche de largument. Les
nombres ngatifs sont arrondis lentier ngatif infrieur le plus proche. Fix()
renvoie la portion entire tronque de la valeur, cest--dire que la dcimale de
largument est jete aux oubliettes.
Tronquer signie retirer. Fix() tronque la portion dcimale de son argument.
Ainsi, une valeur de 5.23 tronque donnerait 5 ; une valeur de 5.23 donnerait
5.
La fonction de valeur absolue est utile pour calculer la diffrence de valeurs telles que
distances et tempratures.
ition
Dfin
La valeur absolue est la valeur positive dun nombre. Ainsi, la valeur absolue
de 19 est 19, et la valeur absolue de 19 est galement 19.
Abs() est la fonction interne qui permet de calculer les valeurs absolues. Imaginons que
vous cherchiez mesurer la diffrence dge entre deux personnes. La valeur absolue de
cette diffrence dge serait ainsi obtenue :
intAgeDiff = Abs(intAge1 - intAge2)
Quelle que soit la personne la plus ge, cette instruction ne peut affecter intAgeDiff
quune valeur positive. Si, daventure, intAge1 tait infrieur intAge2, et que lon nait
pas utilis la fonction Abs(), le calcul aurait donn une valeur ngative.
La fonction Sqr() renvoie la racine carre dun nombre positif. Dans les instructions
suivantes, les commentaires indiquent le rsultat de chaque fonction Sqr() :
intVal1 = Sqr(4)
2
intVal2 = Sqr(64)
8
intVal3 = Sqr(4096) 16
>
:
240
Info
241
<
:
Partie II
Description
IsDate()
IsEmpty()
IsNull()
IsNumeric()
Info
La section de code prsente dans le Listing 8.3 est assez simple, mais elle dcrit le
comportement de la fonction IsEmpty() selon que les variables ont ou nont pas t
initialises. IsEmpty() permet, par exemple, de vrier si lutilisateur a entr une valeur
dans un champ.
Listing 8.3 : Vrication de variables vides
>
:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
242
La seule sortie de ce code est une bote de message qui afche ceci :
var4 est vide
Pourquoi ? Parce que toutes les autres variables ont un certain type de donnes toutes
ont t initialises.
ce
Astu
Cest IsNull() quil faut utiliser pour vrier la prsence de donnes dans des
champs ou des contrles quelconques. IsEmpty() ne devrait tre applique
quaux variables.
IsNull() interroge son argument et renvoie True si largument contient une valeur Null.
La valeur Null est une valeur spciale que lon affecte aux variables pour indiquer
labsence de donnes, ou pour signaler une erreur. (Linterprtation quaura le
programme de Null dpend, en fait, de votre code.)
ntion
Atte
Si lon peut affecter une variable une valeur Null (comme dans varA =
Null), on ne saurait en revanche interroger la valeur Null de cette faon :
Une telle condition nest pas vriable. IsNull() est le seul moyen dinterroger la valeur Null dune variable.
Linterrogation des donnes est une chose simple. Au cas o votre procdure doit
vrier si une zone de texte txtHoursWorked contient ou non des donnes, une instruction If comme celle-ci suft :
If IsNull(txtHoursWorked) Then
Linstruction If permet ici de vrier que lutilisateur a bien saisi quelque chose dans le
champ, avant que le programme ne poursuive son excution.
IsNumeric() cherche dans son argument un nombre. Pour toutes les valeurs Variant
convertibles en nombres, IsNumeric() renvoie True ; elle renvoie False pour toutes les
autres. Voici les types de donnes convertibles en nombres :
Empty (conversion en 0) ;
Integer ;
Long ;
243
<
:
Partie II
Single ;
Double ;
Currency ;
Le code suivant demande lutilisateur son ge, laide dune variable Variant. Si
lutilisateur entre une valeur non numrique, le programme afche un message derreur.
1:
2:
3:
4:
5:
6:
7:
8:
La ligne 4 sassure que lutilisateur a bien entr une valeur numrique, plutt que
davoir saisi, par exemple, son nom en toutes lettres.
La fonction VarType() permet de dterminer le type de donnes dune variable. Le
Tableau 8.2 prsente les seules valeurs que puisse renvoyer une fonction VarType().
Tableau 8.2 : Les valeurs renvoyes par VarType() indiquent le type de donnes
>
:
Valeur renvoye
Littral nomm
Type de donnes
vbEmpty
Empty
vbNull
Null
vbInteger
Integer
vbLong
Long
vbSingle
Single
vbDouble
Double
vbCurrency
Currency
vbDate
Date
vbString
String
vbObject
Object
244
Tableau 8.2 : Les valeurs renvoyes par VarType() indiquent le type de donnes (suite)
Valeur renvoye
Littral nomm
Type de donnes
10
vbError
Valeur derreur
11
vbBoolean
Boolean
12
vbVariant
Variant*
13
vbDataObject
14
vbDecimal
Decimal
17
vbByte
Byte
8192
vbArray
Tableau**
Dans le Listing 8.4, la procdure se sert dune instruction Select Case pour afcher le
type des donnes qui lui sont passes.
Listing 8.4 : VarType() permet de dterminer le type des donnes passes
245
<
:
Partie II
Listing 8.4 : VarType() permet de dterminer le type des donnes passes (suite)
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
Case 10
intMsg = MsgBox("Largument
Case 11
intMsg = MsgBox("Largument
Case 12
intMsg = MsgBox("Largument
Case 13
intMsg = MsgBox("Largument
aux donnes.")
Case 14
intMsg = MsgBox("Largument
Case 17
intMsg = MsgBox("Largument
Case Else
intMsg = MsgBox("Largument
End Select
End Sub
IIf() ne doit tre utilis quen remplacement dinstructions If... Else courtes, telles
que celles-ci :
If (curSales < 5000.00) Then
curBonus = 0.00
Else
curBonus = 75.00
End If
Chacun des deux corps de cette instruction If... Else tant constitu dune seule ligne,
on peut crire une fonction IIf() plus courte. La suivante affecte la valeur de renvoi
curBonus :
curBonus = IIf(curSales < 5000.00, 0.00, 75.00)
>
:
246
Figure 8.4
Lune des deux
valeurs est affecte
la variable situe
gauche IIf().
ce
Astu
Si lquivalent IIf() est plus court que linstruction If... Else multiligne, il
est aussi moins clair. Si, du reste, vous vouliez ajouter quoi que ce soit dun
ct ou de lautre de la fonction IIf(), il faudrait dabord la convertir en
If...Else multiligne. Aussi le format If... Else multiligne est-il prfrable
dans la plupart des cas.
On ne peut diviser par zro (la division par zro nest pas dnie en mathmatique). Si
une division par zro advient, la fonction IIf() suivante renvoie un prix de vente moyen
ou une valeur Null :
curAveSales = IIf(intQty > 0, curTotalSales / intQty, Null)
ce
Astu
Visual Basic interprte toujours la valeur zro comme un rsultat faux. Vous
pourriez donc rcrire linstruction prcdente de la manire suivante :
curAveSales = IIf(intQty, curTotalSales / intQty, Null)
La fonction Choose(), quant elle, offre une version abrge de certaines instructions
Select Case. Choose() peut avoir beaucoup darguments plus darguments mme
que toutes les autres fonctions internes. Selon la valeur du premier argument, Choose()
renvoie un seul des autres arguments. Voici le format de Choose():
Choose(intIndexNum, expression[, expression] ...)
Aprs le deuxime argument, (expression), on peut ajouter autant darguments quil est
ncessaire. intIndexNum doit tre une variable ou un champ avec une valeur comprise
entre 1 et le nombre dexpressions de la fonction.
Si, par exemple, il faut gnrer une petite table de codes produits ou de prix, Choose()
est plus appropri quune instruction If ou Select Case. En revanche, la porte de
Choose() est plus restreinte que celle de If, parce que Choose() neffectue pas de vritable
comparaison, mais choisit une valeur entire unique.
247
<
:
Partie II
ntion
Atte
Le premier argument de Choose() peut tre une expression. La valeur de cet argument
doit tre incluse dans le nombre des arguments qui suivent. Si, par exemple, les valeurs
possibles dun index vont de 0 4, on ajoute 1 lindex de sorte que la plage aille de 1
5, et que le bon choix soit opr dans la liste de Choose().
Imaginons un feuille sur laquelle un label indique des codes de prix. Lorsque lutilisateur entre un nouveau produit, il doit aussi saisir un code de prix entre 1 et 5, savoir :
1
Plein prix
Remise de 5 %
Remise de 10 %
Commande spciale
>
:
Fonction
Description
CBool()
CByte()
CCur()
248
Description
CDate()
CDbl()
CDec()
CInt()
CLng()
CSng()
CStr()
CVar()
ntion
Atte
Toutes ces fonctions exigent naturellement que largument soit convertible. Par
exemple, CByte() ne pourra convertir le nombre 123456789 en Byte, parce
que ce type de donnes est incapable de contenir une aussi grande valeur.
A la diffrence de Int() et Fix(), CInt() arrondit largument lentier le plus proche. Pour
les valeurs ngatives, CInt() renvoie galement lentier le plus proche. Dans les instructions suivantes, les commentaires indiquent le contenu de chaque variable :
intA1 = CInt(8.5)
intA2 = CInt(8.5001)
Le code suivant dclare des variables de quatre types de donnes diffrents, puis convertit chaque argument ces types de donnes. Rappelez-vous que lon passe aussi bien
des expressions numriques ces fonctions, ce qui permet de dnir un type de donnes
avant de stocker le rsultat calcul dans une variable ou dans un champ.
curVar1
dblVar2
sngVar3
varVar4
=
=
=
=
CCur(123)
CDbl(123)
CSng(123)
CVar(123)
Convertit
Convertit
Convertit
Convertit
123
123
123
123
en
en
en
en
Currency.
Double.
Single.
Variant.
249
<
:
Partie II
Fonctions de chanes
Les fonctions de chanes traitent et analysent le contenu des chanes. Visual Basic a
hrit du BASIC lun de ses plus gros avantages sur les autres langages de
programmation : un support efcace des donnes de chanes.
La fonction Len()
Len() est lune des rares fonctions qui acceptent pour arguments aussi bien les variables
numriques que les chanes. Toutefois, Len() est principalement applique aux chanes.
Cette fonction renvoie le nombre doctets quoccupe en mmoire largument. Voici le
format de Len() :
Len(Expression)
Info
ce
Astu
Conversion de chanes
Plusieurs fonctions de conversion sappliquent aux donnes de chanes. Le Tableau 8.4
dcrit chacune des fonctions utilises dans les exemples qui suivent.
Tableau 8.4 : Fonctions de conversion de chanes
>
:
Fonction
Description
CStr()
Str()
Val()
250
CStr() et Str() convertissent leurs arguments en chanes. La diffrence est que Str()
fait prcder dun blanc (espace) les nombres positifs convertis en chane. Le
Listing 8.5 illustre cette diffrence entre CStr() et Str().
Listing 8.5 : Contrairement CStr(), Str() fait prcder les nombres positifs
dun blanc
1:
2:
3:
4:
5:
6:
7:
8:
La ligne 6 gnre une bote de message qui afche ***12345***, tandis que la ligne 7
entrane lafchage de *** 12345***. Str() ajoute un blanc avant le nombre.
Fonctions ASCII
Chr() et Asc() permettent de convertir une chane en sa valeur ASCII, et vice versa. La
table ASCII recense tous les caractres possibles sur un PC et attribue chacun un numro
squentiel (code ASCII).
Chr() renvoie le caractre correspondant au code ASCII qui lui est pass comme argument. Chr() permet ainsi dafcher des caractres non disponibles sur le clavier, mais
gurant dans la table ASCII.
La fonction Asc() est lexact inverse de Chr(). L o Chr() reoit un argument numrique et renvoie un caractre, Asc() reoit un argument chane et le convertit en valeurs
ASCII correspondantes.
Au terme de linstruction suivante, strVar contient la lettre "A", puisque 65 est le code
ASCII de ce caractre.
strVar = Chr(65)
Bien entendu, une telle instruction na en soi aucun intrt ; il est bien plus simple
daffecter directement strVar le contenu A. Et quen est-il si, par exemple, votre
programme doit poser une question en espagnol ? En espagnol, les questions sont prcdes dun point dinterrogation lenvers, caractre qui napparat pas sur votre clavier.
Avec Chr(), vous afchez ce caractre dans votre bote de message :
Chr(241) donne un "" (n tilde).
strMyQuest = Chr(191) & " Como esta, " & "Se" & Chr(241) & "or ?"
intMsg = MsgBox(strMyQuest)
251
<
:
Partie II
Asc() renvoie le code ASCII du caractre qui lui est pass comme argument. (La table ASCII
est notamment fournie dans laide en ligne de Visual Basic.) Largument doit tre une chane
dau moins un caractre. Mais en prsence de plusieurs caractres dans la chane passe,
Asc() ne renvoie que le code ASCII du premier caractre.
Voici un bon exemple dutilisation de Asc() :
Lutilisateur peut rpondre par o, O, oui, Oui ou OUI. Linterrogation If...Then vriera
avec succs toutes ces entres, puisque 79 est le code ASCII de O, et 111 celui de o. Nous
disons donc : Asc() renvoie la valeur ASCII du premier caractre de la chane passe.
Fonctions de sous-chanes
Les fonctions de sous-chanes renvoient une partie de la chane. Right() renvoie les
caractres partir de la droite, Left() partir de la gauche. Mid() prlve les caractres
partir du milieu de la chane.
Voici le format des fonctions de sous-chanes :
Left(stringValue, numericValue)
Right(stringValue, numericValue)
Mid(stringValue, startPosition[, length])
>
:
strA = "abcdefg"
partSt1 = Left(strA, 1)
partSt2 = Left(strA, 3)
partSt3 = Left(strA, 20)
252
Renvoie "a".
Renvoie "abc".
Renvoie "abcdefg".
Info
strA = "abcdefg"
partSt1 = Right(strA, 1)
partSt2 = Right(strA, 3)
partSt3 = Right(strA, 20)
Renvoie "g".
Renvoie "efg".
Renvoie "abcdefg".
Mid() complte Left() et Right() en prlevant les caractres partir du milieu. Mid()
requiert trois arguments : une chane suivie de deux entiers. Le premier entier indique o
Mid() doit commencer son prlvement (position partir de 1), et le second entier dtermine
combien de caractres aprs cette position seront renvoys. Si vous ne spciez pas les deux
entiers, Mid() prend 1 comme premire position.
Mid() peut prlever nimporte quel nombre de caractres depuis nimporte quel point de
la chane. Voici un exemple :
Si largument length (longueur) nest pas spci, VB renvoie tous les caractres situs
droite de la position. Si la longueur spcie est plus grande que le reste de la chane,
Visual Basic ignore largument length.
Info
Mid()
253
<
:
Partie II
Sans lintervention des fonctions, le mot "Bonjour" aurait t stock dans la variable en
compagnie de ses diverses espaces.
Lorsque Str() convertit un nombre positif en chane, une espace est toujours ajoute au
dbut (pour gurer un signe plus imaginaire). En combinant LTrim() Str(), vous
liminez cette espace superue. Dans la premire de ces instructions, la valeur est
stocke dans str1 avec le blanc. Dans la seconde, LTrim() supprime le blanc avant
daffecter la valeur str2.
str1 = Str(234)
str2 = LTrim(Str(234))
>
:
1:
2:
3:
4:
254
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Si tout se passe bien, la chane newStr prendra comme contenu lausiV Basic (les six
premiers caractres sont inverss). La ligne 10 dclare deux variables locales : la
premire, strTemp recevra le contenu invers de la chane ; la seconde, intI, est utilise
dans la boucle For.
ce
Astu
A la ligne 12, linstruction If sassure que lentier pass ReverseIt() nest pas plus
grand que la longueur de la chane. Il est impossible dinverser plus de caractres que
nen contient la chane. Si largument en question est trop grand, linstruction If
lajuste, via la fonction Len(), au nombre rel de caractres, et la chane est inverse en
entier.
A la ligne 13, la boucle For dcrmente n (la position) jusqu la valeur 1. La fonction
Mid() de la ligne 14 concatne la nouvelle chane (le rsultat) le caractre situ la
position n. Lorsque n atteint 1, les caractres inverss sont envoys la nouvelle chane
(ligne 14). Une fois tous les caractres inverss, le code les concatne la partie droite
de la chane passe.
255
<
:
Partie II
Fonctions spciales
Visual Basic dispose de fonctions spciquement destines au traitement et lanalyse
des valeurs de date et dheure. Ces fonctions permettent, par exemple, de savoir quel
moment prcis un champ a t dit, notamment pour des questions de scurit. En
outre, les rapports gnrs par vos applications devraient tous indiquer quelle date
prcise on les a produits.
Outre ces fonctions de date et dheure, il existe des fonctions spciales de formatage
pour afcher une chane dans un format donn.
Ici, dd est le jour (entre 01 et 31), mm est le mois (entre 01 et 12), et yyyy est lanne
(entre 1980 et 2099). Date tant lune des rares fonctions se passant darguments, elle ne
requiert gure de parenthses.
Time renvoie lheure systme dans le type Variant (Date) et sous ce format :
hh:mm:ss
Ici, hh est lheure (entre 00 et 23) ; mm, les minutes (entre 00 et 59) ; et ss, les secondes
(entre 00 et 59).
Now combine les fonctions Date et Time. Now renvoie une valeur de type Variant (Date),
sous le format suivant :
dd/mm/yy hh:mm:ss
Il est important de retenir que les fonctions Date, Time et Now renvoient des valeurs qui
sont, de faon interne, stocke comme des valeurs prcision double (ce qui assure le
stockage correct de la date et de lheure). Le meilleur moyen de formater les valeurs de
date et dheure est la fonction Format(), que nous tudierons la dernire section de ce
chapitre.
A exactement 19 heures 45 minutes, linstruction currentTime = Time stocke 19:45:00
dans la variable currentTime.
>
:
256
Si lon est le 27 aot 1999, linstruction currentDate = Date stocke 27/08/99 dans la
variable currentDate.
Le 27 aot 1999, exactement 19 heures 45 minutes, linstruction currentDateTime =
Now stocke 27/08/99 19:45:00 dans la variable currentDateTime.
Info
Parce quil existe plusieurs formats de dates, Visual Basic doit pouvoir
reconnatre une date sous quelque format que vous lentriez. Du moment
que vous lencadrez de dises, vous tes libre dutiliser les formats
suivants :
dd-mm-yy ;
dd-mm-yyyy ;
dd/mm/yy ;
dd/mm/yyyy ;
dd NomMois yyyy ;
dd mmm yyyy (o mmm est une abrviation telle que "oct") ;
dd NomMois yy ;
dd-mmm-yy (o mmm est une abrviation telle que "oct") ;
Fonctions chronomtriques
La fonction Timer renvoie le nombre de secondes coules depuis que lhorloge systme
a sonn minuit. Le format de Timer est on ne peut plus simple :
Timer
Timer est lune des rares fonctions qui nacceptent aucun argument (cest la raison de
labsence de parenthses). Timer est loutil idal pour chronomtrer un vnement. Vous
pouvez, par exemple, poser une question lutilisateur et mesurer le temps quil a pris
pour rpondre. Pour cela, il faut enregistrer la valeur de Timer au moment o la question
est pose, puis soustraire cette valeur celle quaura Timer au moment de la rponse.
La diffrence entre les deux valeurs reprsente le nombre de secondes que lutilisateur a
pris pour rpondre. Le Listing 8.7 illustre cet exemple.
257
<
:
Partie II
La ligne 6 stocke la valeur de Timer (le nombre de secondes coules depuis minuit)
immdiatement avant la question. La ligne 7 pose la question, et ds que lutilisateur
saisit une rponse, la ligne 8 stocke la nouvelle valeur de Timer. La diffrence entre les
deux valeurs, calcule la ligne 11, reprsente le temps de rponse exact de lutilisateur.
Timer ne sapplique quaux dlais compris dans une mme journe. Les fonctions
DateAdd(), DateDiff() et DatePart() viennent combler cette lacune. Le Tableau 8.5 dcrit
ces trois fonctions arithmtiques.
Tableau 8.5 : Fonctions arithmtiques de comparaison de dates
Fonction
Description
DateAdd()
Renvoie une nouvelle date aprs que vous avez ajout une valeur une date.
DateDiff()
DatePart()
Ces fonctions arithmtiques peuvent traiter les lments de date prsentes dans le
Tableau 8.6. Les valeurs indiques sont les arguments utiliss par DateAdd(), DateDiff() et DatePart().
En dpit de son nom, DateAdd() sapplique aussi bien aux dates quaux heures (cest
dailleurs le cas de toutes les fonctions de date). Largument pass DateAdd() doit tre
de type Date. Voici le format de DateAdd() :
DateAdd(interval, number, oldDate)
>
:
258
Priode
yyyy
Anne
Trimestre
Mois
Jour
Jour ouvrable (1 pour dimanche, 2 pour lundi, et ainsi de suite pour Day(),
Month(), Year() et DateDiff())
ww
Semaine
Heure
Seconde
Ici, interval doit tre lune des valeurs (sous forme de chane) du Tableau 8.6. Cette
argument dnit lunit de temps qui sera ajoute ou soustraite (secondes,
minutes, etc.). Largument number spcie combien de ces units seront ajoutes ou
soustraites. Pour avancer une date, spciez un interval positif ; et un interval ngatif
pour retarder la date. oldDate est la date ou lheure de dpart (la date ou lheure
laquelle on ajoute ou soustrait). La valeur de oldDate ne change pas. A la n, DateAdd()
renvoie la nouvelle date.
Imaginons que vous ralisez un achat avec une carte de crdit dont le dlai de facturation
est de vingt-cinq jours. Linstruction suivante ajoute vingt-cinq jours la date
daujourdhui et stocke le rsultat dans intStarts :
intStarts = DateAdd("y", 25, Now)
259
<
:
Partie II
Imaginons maintenant que votre entreprise inscrive les employs un programme spcial
de retraite au bout de dix ans danciennet. Linstruction suivante ajoute dix ans la date
dembauche et stocke la date rsultante dans la variable anc :
anc = DateAdd("yyyy", 10, emb)
DateDiff() renvoie la diffrence entre deux dates. Pour obtenir une valeur positive, il
faut imbriquer DateDiff() dans une fonction Abs(). Cette diffrence est exprime dans
lunit de temps spcie. Voici le format de DateDiff() :
DateDiff(interval, date1, date2)
DatePart() renvoie une partie de la date (la partie spcie par lunit de temps).
DatePart() permet dextraire dune date le jour, la semaine, le mois, lheure, etc. Voici le
format de DatePart() :
DatePart(interval, date)
Les fonctions de date et dheure que nous avons tudies traitent des valeurs srielles.
Ces valeurs sont stockes comme valeurs prcision double an que les dates et les
heures soient correctement stockes et que les oprations renvoient des rsultats
corrects.
ition
Dfin
>
:
260
Ici, year est un entier (entre 00 et 99, pour 1900 et 1999, ou une anne quatre chiffres) ou
une expression. month est un entier (entre 1 et 12) ou une expression. day est un entier
(entre 1 et 31) ou une expression. En passant une expression, vous pouvez spcier un
nombre dannes, de mois ou de jours, partir de, ou depuis, la valeur. Pour mieux
comprendre ce type darguments, examinez les appels de fonctions DateSerial()
suivants. Chacune delles renvoie la mme valeur :
d = DateSerial(1998, 10, 6)
d = DateSerial(1988+10, 12-2, 1+5)
Les fonctions DateSerial() permettent de maintenir les arguments de date dans certaines
limites. Prenons un exemple. Lanne 1996 tait bissextile, et le mois de fvrier de cette
anne navait donc que vingt-neuf jours. Lappel de fonction DateSerial() suivant
semble devoir renvoyer un rsultat incorrect, puisque le mois de fvrier, mme dans une
anne bissextile, ne peut contenir trente jours :
d = DateSerial(1996, 2, 29+1)
Mais cette fonction renverra bien le rsultat correct, car DateSerial() ajuste la date de sorte
que d corresponde au 1er mars 1996, soit le jour suivant le dernier jour de fvrier.
Le Listing 8.8 illustre une utilisation intressante de la fonction DateSerial().
Listing 8.8 : Ce code calcule le prochain jour ouvrable aprs la date spcie
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
261
<
:
Partie II
Lorsque cette fonction est appele, elle reoit une valeur de date stocke comme Date
ou Variant. Comme lindiquent les commentaires, la fonction renvoie la date du
premier jour ouvrable du mois suivant la date argument (entre 2, lundi, et 6, vendredi).
La fonction DateValue() diffre seulement de DateSerial() en ce quelle accepte les
arguments de type chane. En voici le format :
DateValue(stringDateExpression)
Ici, stringDateExpression doit tre une chane reconnaissable par Visual Basic comme
date (voir les exemples donns plus haut pour linstruction Date). Si lutilisateur doit
entrer une date valeur par valeur (le jour, puis le mois, puis lanne), vous pouvez
employer DateValue() pour convertir ces valeurs au format sriel interne. Si lutilisateur
doit entrer une date dun seul tenant (qui sera stocke dans une variable chane), telle
que 19 octobre 1999, DateValue() convertit galement cette chane en valeur srielle
de date.
Les fonctions TimeSerial() et TimeValue() sappliquent de la mme faon, mais aux
heures. Si lutilisateur indique lheure laide de trois valeurs, TimeSerial() convertit
ces valeurs au format sriel interne (type Date ou Variant). Voici le format de
TimeSerial() :
TimeSerial(hour, minute, second)
Les fonctions Day(), Month() et Year() convertissent chacune largument (de type
Variant ou Date) en numro du jour, du mois et de lanne. Ces trois fonctions sont fort
simples :
Day(dateArgument)
Month(dateArgument)
Year(dateArgument)
Enn, Weekday() renvoie le numro du jour ouvrable (voir Tableau 8.6) pour largument
date qui lui est pass.
Les instructions suivantes passent la date du jour (obtenue par Now) aux fonctions Day(),
Month() et Year() :
>
:
262
d = Day(Now)
m = Month(Now)
y = Year(Now)
Les numros du jour, du mois et de lanne de la date courante sont stocks dans les
trois variables.
La fonction Format()
Format() est lune des fonctions les plus puissantes et les plus complexes. Elle renvoie
largument sous un format diffrent de celui qui a t pass. Voici le format de Format() :
Format(expression, format)
Format() renvoie une valeur de type Variant, que lon utilise gnralement comme
chane. Largument expression est une expression numrique ou une expression chane.
Format() peut modier toutes sortes de donnes : nombres, chanes, dates, heures, etc.
Elle peut notamment servir afcher un montant en incluant la virgule et le symbole "FF".
Largument format est une variable chane ou une expression qui contient un ou
plusieurs des caractres de formatage prsents aux Tableaux 8.7 8.9. Ces trois
tableaux correspondent aux diverses catgories de donnes (chane, nombre ou date).
Ces tableaux sont longs. Mais il vous sufra de quelques exemples pour comprendre le
fonctionnement des caractres de formatage.
Tableau 8.7 : Caractres de formatage de chanes
Symbole
Description
&
<
>
263
<
:
Partie II
(chane nulle)
Intercale des slashs entre les jours, les mois et les annes.
-, +, $,
\
>
:
Description
264
space
Description
dd
ddd
dddd
ddddd
Afche la date selon le Style de date courte spci dans les Paramtres
rgionaux de votre Panneau de conguration (gnralement dd/mm/yy).
dddddd
Afche la date selon le Style de date longue spci dans les Paramtres
rgionaux de votre Panneau de conguration (gnralement dd mmmm yyyy).
w, ww
mm
Afche le mois sur deux chiffres, soit de 01 12. Plac aprs h ou hh, mm
reprsente galement les minutes.
mmm
mmmm
yy
yyyy
h, n, s
ttttt
265
<
:
Partie II
Comme le montre la dernire instruction, les chanes peuvent recevoir les formats les
plus varis. Si la chane formater, par exemple un numro de tlphone, est une variable chane issue dun champ de formulaire ou dun tableau de donnes, Format()
sapplique de la mme manire.
Imaginons le cas o le code dappel extrieur (par exemple 0) est facultatif. Format()
sappliquant de droite gauche, linstruction :
strS = Format("0143646421", "(@) @@-@@-@@-@@-@@")
Si le code dappel extrieur avait t saisi, il aurait t afch entre les parenthses.
! a pour effet dinverser le sens dapplication du formatage ; il ne doit tre utilis que
dans le cas, par exemple, o des donnes sont susceptibles de manquer la n de la
chane. Linstruction :
strS = Format("43646421", "!(@) @@-@@-@@-@@"
>
:
1:
2:
3:
4:
5:
6:
266
strS
strS
strS
strS
strS
strS
=
=
=
=
=
=
7:
8:
9:
10:
strS
strS
strS
strS
=
=
=
=
Le Listing 8.10 illustre le fonctionnement du formatage des dates et des heures. Les
commentaires indiquent le rsultat du formatage.
Listing 8.10 : Format() appliqu aux dates et heures
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
En rsum
Ce chapitre a dtaill la structure gnrale dun programme Visual Basic. Lorsque vous
crez une application contenant plusieurs modules et procdures, vous devez tenir
compte de la porte des variables an que les procdures aient accs toutes les
donnes ncessaires. Les variables, nous lavons vu, doivent rester locales le plus
souvent possible. Pour se partager les donnes, vos procdures devront donc se passer
les arguments adquats. Les procdures que vous crirez pourront tre des sous-routines
aussi bien que des fonctions. En crant ces procdures, vous construirez vos propres
bibliothques de routines, exploitables dans dautres applications.
Pour pauler vos propres procdures, Visual Basic met votre disposition une multitude
de fonctions internes, capables danalyser et de traiter des nombres, des chanes et
dautres donnes. Les fonctions internes tant, comme leur nom lindique, une partie du
langage Visual Basic, elles sont disponibles dans tous les modules, tout moment.
Le prochain chapitre revient la nature visuelle de Visual Basic, et vous explique
comment crer des botes de dialogue standards.
267
<
:
Partie II
Questions-rponses
Q Pourquoi les contrles ne peuvent-ils tre locaux ou globaux ?
R Les contrles doivent tre accessibles la totalit du code. Ils sont donc, pour ainsi
dire, publics pour toutes les applications. Les contrles sont, en fait, des objets bien
distincts du code. Ainsi, moins que vous ne criez des variables de contrles pour
y stocker les valeurs de proprits de certains contrles, vous navez jamais vous
soucier de la porte des contrles.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.
Quiz
1. Quelles variables ont la plus grande porte : les locales, celles de niveau module ou les
publiques ?
2. Quelles variables ont la porte la plus restreinte : les locales, celles de niveau
module ou les publiques ?
3. Le mot cl ByRef est optionnel. Vrai ou faux ?
4. Combien de valeurs une sous-routine peut-elle renvoyer ?
5. Nommez des fonctions qui peuvent constituer un quivalent abrg de If.
6. Que se passe-t-il si le premier argument de Choose() est infrieur 1 ?
7. A quoi sert la fonction Abs() ?
8. Dans chacune des instructions suivantes, que recevra la variable strS ?
a. strS = Format("74135", "&&&&&-&&&&")
b. strS = Format(12345.67, "######.###")
9. Sans consulter la table ASCII, dites ce que intN contiendra aprs excution de
linstruction daffectation suivante :
intN = Asc(Chr(192))
268
Exercices
1. Rcrivez le Listing 8.1 de sorte que SalesTax() soit une fonction qui renvoie la
procdure appelante le montant total de la taxe. La procdure appelante,
GetTotal(), devra afcher dans une bote de message la valeur renvoye par SalesTax().
2. Rcrivez en fonction IIf() linstruction If suivante :
If (intTotal > 10000) Then
If (ID = 1) Then
intBonus = 50
ElseIf (ID = 2) Then
intBonux = 75
ElseIf (ID = 3) Then
intBonus = 100
End If
269
<
:
Chapitre
linstruction On Error Goto, qui permet de grer avec simplicit le bouton Annuler.
271
Partie II
Pour crer une application qui, entre autres tches, ouvre des chiers et envoie des
impressions, un choix entre deux partis soffre vous :
Rien ne vous empche, par exemple, dinnover dans le type de bote de dialogue qui
safche lorsque lutilisateur slectionne Fichier, Ouvrir. Mais ce serait imprudent. Car
votre application ne serait dj plus standard, et vos utilisateurs devraient revenir sur les
habitudes acquises dans les autres applications, mme pour effectuer une opration trs
simple. En outre, de tels programmes demanderaient plus de travail, car vous devriez
concevoir de nouvelles botes de dialogue pour toutes les manipulations.
Info
Faire
Vos applications doivent prsenter les mmes menus et les mmes botes de
dialogue que les applications Windows standards.
Pour ceux qui veulent gagner du temps et se conformer aux standards, Visual Basic
dispose du contrle Common Dialog, qui permet de gnrer des botes de dialogue avec
le moins de programmation possible. Ces botes de dialogue auront exactement le mme
aspect et le mme fonctionnement que les botes de dialogue similaires des applications
Windows standards. Voici les options Common Dialog :
Couleurs. Afche une bote de dialogue dans laquelle lutilisateur peut choisir sur
une palette de couleurs, et mme dnir des couleurs personnalises.
Police. Afche une bote de dialogue dans laquelle lutilisateur choisit parmi des
polices, des attributs et des tailles de caractres.
Ouvrir. Afche une bote de dialogue dans laquelle lutilisateur slectionne un
chier ouvrir partir des dossiers et des lecteurs, voire dun rseau.
Imprimer. Afche une bote de dialogue dans laquelle lutilisateur slectionne une
imprimante ou en modie les paramtres.
Enregistrer. Afche une bote de dialogue dans laquelle lutilisateur spcie le nom
et le lieu denregistrement dun chier.
Aide Windows. Lance le moteur daide Windows et afche la bote de dialogue
initiale du systme daide de votre application.
Info
>
:
272
Le contrle Common Dialog vous permet dajouter diverses botes de dialogue votre application, avec un effort minimum.
Info
Vous pouvez, aussi bien, crer des botes de dialogue standards sans laide du
contrle Common Dialog. Vous devrez alors reproduire sur la feuille la disposition exacte des zones de texte, barres de dlement, zones de liste, et autres
lments invitables. Mme avec trs peu de contrles sur la feuille, lcriture
dune bote de dialogue est toujours fastidieuse. Bref, il faut vraiment avoir une
excellente raison pour se passer du contrle Common Dialog !
Les botes de dialogue gnres par le contrle Common Dialog sont dites modales.
ition
Dfin
Est modale une bote de dialogue que lutilisateur doit ncessairement fermer
(en cliquant sur OK ou sur Annuler) avant de poursuivre toute autre opration
dans lapplication.
273
<
:
Partie II
2. Faites dler la liste jusqu loption Microsoft Common Dialog Control 6.0.
3. Cochez la case et cliquez sur OK. Le contrle Common Dialog safche au bas de la
fentre Bote outils.
ce
Astu
Protez-en pour jeter un coup dil aux autres contrles disponibles dans
la bote de dialogue Composants. Tous sont des contrles ActiveX. Microsoft Calendar Control 8.0, par exemple, permet dajouter vos applications des fonctions de calendrier, telles quen exigerait un programme de
gestion de planning ou un programme de facturation. Si vous dcidez
dajouter de nouveaux contrles votre Bote outils (a ne cote rien),
vous pouvez galement parcourir leurs proprits spciques. Consultez
laide en ligne au sujet des vnements et des mthodes supports par ces
contrles. Vous trouverez dans les revues spcialises et sur lInternet des
contrles supplmentaires capables dacclrer le dveloppement de vos
programmes. Le Chapitre 17 vous apprendra crire vos propres contrles
ActiveX.
>
:
274
sur la feuille. Vous pouvez donc le placer lcart, et disposer les autres contrles
comme bon vous semble. Lorsque le contrle Common Dialog sera dclench, la bote
de dialogue safchera automatiquement au centre de lcran. Le reste du temps, Visual
Basic masque le contrle Common Dialog de sorte quil ne se superpose pas, lors de
lexcution, aux autres contrles de la feuille.
Pour que le programme dclenche le contrle Common Dialog en afchant un type spcique de bote de dialogue, vous devez crire votre code de faon approprie.
Cest laide des proprits et des mthodes que lon spcie quelle forme de bote de
dialogue le contrle Common Dialog doit afcher. Les mthodes, vous vous en souvenez peut-tre, sont des procdures internes appliques des contrles particuliers. Voici
les mthodes du contrle Common Dialog :
Soit un contrle Common Dialog nomm dbFont. Aprs quelques rglages de proprits, il suft dappliquer ce contrle la mthode ShowFont pour afcher une bote de
dialogue de type Police :
dbFont.ShowFont
De mme, pour afcher par exemple, en rponse une slection de menu Fichier,
Ouvrir une bote de dialogue de type Ouvrir, il suft dappliquer la mthode ShowOpen au contrle dbFont :
dbFont.ShowOpen
Comme vous le voyez, un seul contrle Common Dialog suft pour afcher divers types
de botes de dialogue. Toutefois, avant de dclencher le contrle par une mthode, il est
indispensable de dnir quelques proprits.
Info
275
<
:
Partie II
Car la proprit BackColor, comme vous vous en souvenez, appelle un code de couleur
hexadcimal. (Cest dailleurs le cas de toutes les proprits lies la couleur, telles que
ForeColor.) Lutilisateur peut toujours rpondre la InputBox() par "rouge" ou "bleu",
la pauvre proprit BackColor ny comprendra rien. La rponse de lutilisateur ne peut
en aucun cas tre affecte ainsi :
frmTitle.BackColor = strAns
La bote de dialogue Couleurs offre lutilisateur un moyen de slectionner une couleur, mais
se charge galement de convertir la valeur choisie en code hexadcimal. Une fois la bote de
dialogue referme, il ne vous reste qu affecter la valeur renvoye la proprit BackColor de
la feuille.
Pour que le contrle Common Dialog afche la bote de dialogue Couleurs, suivez ces
tapes :
1. Dans la proprit DialogTitle du contrle Common Dialog, saisissez le libell qui
doit apparatre sur la barre de titre. Par exemple, Couleur darrire-plan.
>
:
276
Valeur
Description
cdlCCRGBInit
cdlCCFullOpen
cdlCCPreventFullOpen
cdlCCHelpButton
277
<
:
Partie II
Pour afcher par dfaut un jeu de couleur restreint, tout en laissant lutilisateur la
possibilit de cliquer sur le bouton Dnition de couleurs personnalises, il suft
domettre la valeur cdlCCFullOpen. La Figure 9.4 montre cette bote de dialogue
restreinte.
Figure 9.4
La bote de dialogue
Couleur en mode restreint.
>
:
278
Une tiquette identie dans le code une section destine grer les erreurs.
On applique aux tiquettes les mmes conventions de dnomination que
pour les variables. En revanche, les tiquettes doivent toujours se terminer
par un deux-points, ce qui justement les distingue des variables. Selon
lexemple donn ci-dessus, la procdure doit inclure, quelque part aprs
linstruction On Error Goto, une tiquette telle que :
dbErrHandler:
Si lutilisateur slectionne une couleur et clique sur OK, la ligne 14 applique cette couleur
larrire-plan de la feuille. Plutt que dinterrompre la procdure quand lutilisateur
279
<
:
Partie II
clique sur OK, il est plus simple de dnir les couleurs par dfaut (entre les lignes 16 et
19) de larrire-plan de la feuille.
ntion
Atte
Comme pour la bote de dialogue Couleurs, il faut rgler les valeurs de la proprit
Flags. Toutefois, la bote de dialogue Police tant plus complexe, les valeurs de Flags
sont ici diffrentes.
>
:
280
Info
Valeur
Description
cdlCFANSIOnly
&H400
cdlCFApply
&H200
cdlCFBoth
&H3
cdlCFEffects
&H100
cdlCFFixedPitchOnly
&H4000
cdlCFForceFontExist
&H10000
cdlCFHelpButton
&H4
cdlCFLimitSize
&H2000
cdlCFNoFaceSel
&H80000
cdlCFNoSimulations
&H1000
cdlCFNoSizeSel
&H200000
cdlCFNoStyleSel
&H100000
cdlCFNoVectorFonts
&H800
281
<
:
Partie II
Valeur
Description
cdlCFPrinterFonts
&H2
cdlCFScalableOnly
&H20000
cdlCFScreenFonts
&H1
cdlCFTTOnly
&H40000
cdlCFWYSIWYG
&H8000
ntion
Atte
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Examinez les affectations composites des lignes 6 10. Vous navez pas encore rencontr
cette sparation des noms de proprits par des points. Rappelez-vous que, lorsque vous
cliquez sur les points de suspension de la proprit Font, une bote de dialogue safche et
>
:
282
propose les diffrentes valeurs. Cest que la proprit Font peut contenir une multitude de
valeurs. A chaque valeur de la proprit Font correspond un style de police, une taille, une
couleur, etc. Les noms composites doivent tre lus de droite gauche. Reprenons
linstruction de la ligne 8 :
LblMessage.Font.Bold = CdbFont.FontBold
283
<
:
Partie II
>
:
Littral nomm
Valeur
Description
cdlOFNAllowMultiselect
&H200
cdlOFNCreatePrompt
&H2000
cdlOFNExplorer
&H80000
cdlOFNExtensionDifferent
&H400
cdlOFNFileMustExist
&H1000
cdlOFNHelpButton
&H10
cdlOFNHideReadOnly
&H4
284
Valeur
Description
cdlOFNLongNames
&H200000
cdlOFNNoChangeDir
&H8
cdlOFNNoDereferenceLinks
&H100000
cdlOFNNoLongNames
&H40000
cdlOFNNoReadOnlyReturn
&H8000
cdlOFNNoValidate
&H100
cdlOFNOverwritePrompt
&H2
cdlOFNPathMustExist
&H800
cdlOFNReadOnly
&H1
cdlOFNShareAware
&H4000
Souvent, dans les botes de dialogue de manipulation de chiers, un ltre est appliqu
aux extensions, de sorte que seuls apparaissent les chiers dune extension donne (par
exemple, les chiers rpondant la slection joker *.doc). Bien sr, rien nempche
lutilisateur de passer outre ce ltre, en appliquant un autre ltre ou en tapant *.*,
pour afcher tous les types de chiers. Mais vous pouvez spcier le ltre par dfaut
laide de la proprit Filter :
285
<
:
Partie II
Figure 9.7
Une bote de
dialogue Ouvrir
gnre par
le contrle Common
Dialog.
Par exemple, linstruction suivante applique un ltre selon lequel seuls les documents
Word et Excel apparatront lafchage de la bote de dialogue :
cdbFiles.Filter = "Documents Word (*.doc)|*.doc|Documents
Excel (*.xls)|*.xls"
ntion
Atte
Vous pouvez spcier un ltre multiple en incluant pour Filter plusieurs chanes. Si vous
spciez plusieurs ltres, vous devez affecter la proprit FilterIndex le ltre utiliser
dans la bote de dialogue Ouvrir courante. Pour le premier ltre, la valeur FilterIndex
sera 1, et ainsi de suite.
La proprit FileName du contrle Common Dialog contient, aprs fermeture de la bote
de dialogue, le nom du chier slectionn.
>
:
286
une slection multiple dans la bote de dialogue Ouvrir. Cela est, par nature, impossible
dans une bote de dialogue Enregistrer.
La Figure 9.8 montre quel point la bote de dialogue Enregistrer ressemble sa cousine
Ouvrir. Les valeurs prsentes au Tableau 9.3 sappliquent aussi la proprit Flags
des botes de dialogue Enregistrer, incluant les ltres dextensions.
Figure 9.8
Une bote de dialogue
Enregistrer gnre
par le contrle
Common Dialog.
287
<
:
Partie II
ntion
Atte
Le code du Listing 9.3 ouvre la bote de dialogue Imprimer en rponse une slection
de menu.
Listing 9.3 : Gestion de la bote de dialogue Imprimer
1: Private mnuFilePrint_Click()
2:
Dim intBegin As Integer, intEnd As Integer
3:
Dim intNumCopies As Integer, intI As Integer
4:
Suppose que Cancel est dfinie comme True.
5:
6:
On Error Goto dbErrHandler
7:
Affiche la bote de dialogue Imprimer.
8:
cbdPrint.ShowPrinter
9:
Reoit les valeurs slectionnes par lutilisateur.
10:
intBegin = cbdPrint.FromPage
11:
intEnd = cbdPrint.ToPage
12:
intNumCopies = cbdPrint.Copies
13:
14:
Imprime le nombre de copies demand.
15:
For intI = 1 To intNumCopies
16:
Ici, code charg de grer la sortie imprimante.
17:
Next intI
18:
Exit Sub
19:
20: dbErrHandler:
21:
Lutilisateur a appuy sur Annuler.
22:
Exit Sub
23: End Sub
>
:
288
En rsum
Vous tes maintenant en mesure dajouter des botes de dialogue standards vos
programmes. Pour une bote de dialogue douverture de chier, par exemple, il vaut
mieux offrir vos utilisateurs une interface familire. Vos applications nen seront que
plus conviviales.
Le contrle Common Dialog implique que vous dnissiez certaines proprits, puis
que vous lui appliquiez la mthode approprie. Tout ce que fait ce contrle, cest de
dnir lui-mme des proprits. Cest votre code de prendre le relais ds la fermeture
de la bote de dialogue, dinterprter les slections de lutilisateur, et de grer de faon
adquate le bouton Annuler.
Dans le prochain chapitre, vous apprendrez suivre les mouvements de la souris an de
rendre vos applications rellement interactives. Vous apprendrez galement programmer
les contrles de type zone de liste, qui proposent diverses options lutilisateur.
Questions-rponses
Q Pourquoi le contrle Common Dialog ne peut-il gnrer dautres styles de
botes de dialogue standards, tels que la bote de dialogue Zoom de Word ou
dExcel ?
R Le contrle Common Dialog ne peut pas tout faire. Il doit rester maniable et ne pas
consommer trop de ressources mmoire. Si les programmes Windows les plus
courants contiennent de multiples botes de dialogue, toutes ne sont pas assez
communes pour constituer un vritable standard. Par exemple, la plupart des applications Windows se passent de la bote de dialogue Zoom de Word et dExcel. Du
reste, les feuilles et contrles Visual Basic vous permettent, avec un peu de travail,
toutes les botes de dialogue que vous voulez.
289
<
:
Partie II
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront la mise en pratique de ce que vous avez appris. Il convient de
comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant.
Vous trouverez ces rponses lAnnexe A.
Quiz
1. Que faut-il faire dans la Bote outils avant de pouvoir placer un contrle Common
Dialog sur la feuille ?
2. Enumrez les diffrents styles de botes de dialogue que le contrle Common Dialog
peut gnrer.
3. A quoi sert le contrle Common Dialog ?
4. Pourquoi ne peut-on redimensionner le contrle Common Dialog sur la feuille ?
5. En fait, la bote de dialogue Ouvrir nouvre aucun chier. Vrai ou faux ?
6. A quoi sert la proprit Filter dans les botes de dialogue Ouvrir ou Enregistrer ?
7. Que fait la proprit Flags ?
8. Si aucune valeur de Flags nest dnie, Visual Basic ne peut afcher la bote de
dialogue Police. Vrai ou faux ?
9. Si aucune valeur de Flags nest dnie, Visual Basic ne peut afcher la bote de
dialogue Imprimer. Vrai ou faux ?
10. La mthode Show afche un contrle Common Dialog. Vrai ou faux ?
>
:
290
Exercices
1. Modier le code du Listing 9.2 an de grer la slection du bouton Annuler. Assurez-vous quaucune proprit ne sera change si lutilisateur clique sur Annuler.
2. Ecrivez une procdure qui gnre la bote de dialogue Ouvrir montre la Figure 9.10.
Appliquez un ltre *.txt. Faites en sorte que les slections de lutilisateur soient
annules sil clique sur le bouton Annuler.
Figure 9.10
Crez cette bote
de dialogue Ouvrir.
291
<
:
Chapitre
10
Gestion de la souris
et contrles avancs
Vous allez maintenant apprendre crire des applications qui ragissent lactivit de la
souris : dplacements, clics, glisser-dposer, etc. Lutilisation de la souris est inhrente
linterface et aux applications Windows, et vos programmes doivent tre en mesure de
rpondre dune manire adquate ce type dvnements.
Nous explorerons aussi un nouveau genre de contrles : les contrles de listes. Vous
avez, sans nul doute, dj manipul des zones de listes dans diverses applications. Ce
chapitre vous explique comment crer et grer vos propres contrles de listes, et dtaille
les diffrents types proposs par Visual Basic.
Les contrles de listes donnent lutilisateur le choix parmi plusieurs options prdnies. Ces contrles nous amneront galement tudier les tableaux de variables. Les
tableaux de variables permettront vos applications de traiter efcacement de grandes
quantits de donnes.
Voici ce que nous dcouvrirons aujourdhui :
le contrle timer ;
293
Partie II
Rponse la souris
La rponse la souris est un fondement des applications Windows. Si lutilisateur se
sert de sa souris lors de lexcution, Windows passe les vnements souris votre
programme. Les programmes que vous crivez doivent interroger les vnements souris
et y rpondre au moment et de la faon ncessaires. Si lutilisateur se contente de
cliquer sur un bouton doption ou sur une case cocher, naturellement, le programme
na pas rpondre, car le contrle dclenche un vnement Click. Mais Visual Basic
suit galement les mouvements de la souris lorsque lutilisateur effectue des glisserdposer ou des copier-coller.
Info
ntion
Atte
En fait, les programmes Windows doivent rpondre aussi bien la souris quau
clavier. Le standard Windows veut que tous les programmes puissent tre, si
ncessaire, manipulables partir du seul clavier. Ainsi, lutilisateur qui prfre
le clavier ou dont la souris est hors service pourra, malgr tout, exploiter ses
applications. Il faut toutefois noter que certains programmes, par nature, se
passent difcilement de la souris. Par exemple, un programme de dessin serait
inimaginable sans le support de la souris.
La Bote outils ne contient aucun contrle li la souris. Un programme
rpond la souris par le biais des vnements, et non par les proprits de
contrles.
>
:
mouvement de la souris ;
clic simple ;
294
double-clic ;
glisser-dposer.
Ajustement du curseur
Le curseur, ou pointeur, rete lcran les mouvements physiques de la souris sur le
tapis. La forme du pointeur (par dfaut, une che) est souvent modie par lapplication. Par exemple, lors dune opration de glisser-dposer, ou lorsque lutilisateur place
le pointeur sur un objet indisponible. Le pointeur peut encore se transformer en sablier,
pour indiquer quun traitement quelconque (tri de donnes, etc.) est en cours.
Votre application peut contrler la forme du pointeur. Le Tableau 10.1 prsente les diffrents types de pointeurs disponibles. Pour changer la forme du pointeur lorsquil passe sur
un contrle de la feuille, il faut dnir la proprit MousePointer de ce contrle. A peu
prs tous les contrles disposent dune proprit MousePointer, laquelle peut prendre lune
des valeurs prsentes au Tableau 10.1. Ces valeurs sont spcier en cours dexcution,
par laffectation de constantes nommes, ou lors de la cration, par le rglage de la
proprit MousePointer des contrles.
Tableau 10.1 : La forme du pointeur est modiable
Constante nomme
Description
VbArrow
VbCrosshair
Pointeur cruciforme
VbIbeam
Curseur de texte
VbIconPointer
VbSizePointer
VbSizeNESW
VbSizeNS
VbSizeNWSE
VbSizeWE
VbUpArrow
VbHourglass
Sablier (attente)
295
<
:
Partie II
Description
VbNoDrop
VbArrowHourglass
Flche + sablier
vbArrowQuestion
vbSizeAll
vbCustom
ce
Astu
Vous pouvez crer vos propres pointeurs. Le pointeur doit avoir une rsolution
de 16 16 pixels, comme les icnes. (Les chiers dicnes portent lextension
.ICO ; la plupart des programmes de dessin vous permettent de crer des
icnes standards.) Pour afcher votre propre chier icne la place des
pointeurs prdnis du Tableau 10.1, il suft den affecter le chemin daccs
la proprit MouseIcon, et de dnir la proprit MousePointer comme 99 Custom. La nouvelle forme restera le pointeur par dfaut jusqu ce que vous
en changiez de nouveau. Entre ce chapitre et le suivant, le Bonus projet 5,
"Pratique de la souris,", vous en dira plus sur les pointeurs personnaliss.
Dplacements et clics
Lorsque lutilisateur dplace la souris ou clique, Windows gnre des vnements souris
et les envoie votre programme. Si le programme ne contient pas de procdures vnementielles appropries, ces vnements seront ignors. Il faut donc que le code pare
toute ventualit. Le Tableau 10.2 dcrit chacun des vnements souris.
Tableau 10.2 : Evnements souris gnrs par Windows
>
:
Evnement
Description
Click
DblClick
MouseDown
MouseMove
MouseUp
296
Les vnements souris sont tous associs des contrles. En consultant la liste Objet de
la fentre Code, vous constaterez quil existe, de mme, des vnements souris pour
presque tous les contrles, ainsi que pour les feuilles. Par exemple, pour rpondre un
clic sur votre feuille frmTest, vous utiliseriez une procdure vnementielle frmTest
_Click().
Info
Certains vnements lis aux clics de souris impliquent que vous interrogiez
un argument de procdure vnementielle pour dterminer sur quel bouton
lutilisateur a cliqu. Ces arguments ne sont passs que par les procdures
vnementielles MouseDown et MouseUp.
intShift. Indique, laide dune comparaison de bits, si lutilisateur a appuy sur Alt,
Ctrl ou Maj pendant le dplacement de la souris ou le clic.
297
<
:
Partie II
[ic:ccc]sngY As Single)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
A la ligne 3, la comparaison And spciale interroge un bit interne pour dterminer les
touches conjointement utilises.
ce
Astu
>
:
298
Faire
Interrogez les combinaisons touches/souris lorsque vos applications permettent la slection de texte avec la touche Maj, ou la slection multiple avec la
touche Ctrl. Beaucoup de contrles, tels que les zones de listes, que vous
dcouvrirez plus loin, grent automatiquement les combinaisons Ctrl-souris
pour la slection des lments. Pour ces contrles, vous navez donc pas
vous occuper de ce type dvnements clavier/souris.
Le Projet bonus 5, situ entre ce chapitre et le suivant, contient le code
dune application complte qui met en uvre la gestion des mouvements et
des clics de souris.
le glisser-dposer automatique ;
le glisser-dposer manuel.
1:
2:
3:
4:
5:
299
<
:
Partie II
txtMouse.Text = "On a cliqu sur limage la position " & X & "," & Y
imgMouse.Drag
End Sub
La mthode Drag autorise le glisser-dposer. Sans la mthode Drag, la procdure vnementielle MouseDown() ne peut grer lopration. On se sert du glisser-dposer manuel
pour imposer des restrictions au dplacement, avant et pendant lopration.
Info
>
:
300
Le Projet bonus 7 situ aprs le Chapitre 14, propose une application qui met
en uvre les clics du bouton droit et les menus contextuels.
ComboBox simple ;
ComboBox droulante.
ce
Astu
Pour ajouter des lments une liste, on se sert de la mthode AddItem (voir
Listing 10.2).
301
<
:
Partie II
1:
2:
3:
4:
5:
6:
7:
8:
9:
Info
ce
Astu
>
:
302
leur propre jeu de mthodes. A propos des contrles externes que vous pourrez
ajouter, la liste des mthodes est gnralement fournie dans la documentation.
La procdure Form_Load() ci-dessus charge une feuille avec, en son centre, la zone de
liste lstColors. (Voir Figure 10.1.)
Figure 10.1
La zone de liste contient
les lments spcis.
ntion
Atte
Si vous initialisez des valeurs de la zone de liste lors de la cration, il faut vider
la proprit List dans la fentre Proprits aprs avoir nomm le contrle.
Visual Basic afche automatiquement le nom du contrle ListBox comme
premier lment de la liste.
Une zone de liste simple afche les lments spcis dans la liste des valeurs.
Cest le programmeur qui initialise la liste ; lutilisateur ne peut ajouter directement des lments.
Si la hauteur ou la largeur de la zone de liste ne permet pas dafcher tous les lments,
des barres de dlement verticale et horizontale apparaissent. Et si des valeurs viennent
sajouter la liste dans le cours de lexcution, Visual Basic ajoute automatiquement les
barres de dlement.
Le but de la zone de liste est de permettre lutilisateur de choisir dans une liste plutt que
davoir saisir les valeurs. Lorsque lutilisateur slectionne un lment de la liste, voici ce
qui se passe :
La slection est copie dans la proprit Text de la zone de liste. Ainsi, lstColors.Text
change au cours de lexcution, selon les choix de lutilisateur.
Text ne peut contenir quune seule valeur. Pour mieux illustrer cette proprit, imaginons quune zone de texte nomme txtColor soit ajoute la feuille de la Figure 10.1.
303
<
:
Partie II
Ds que lutilisateur fait une slection dans lstColors, la procdure suivante envoie
llment la zone de texte :
Private Sub lstColors_Click()
txtColor.Text = lstColors.Text
End Sub
Si vous placez sur la feuille une zone de texte destine afcher llment slectionn,
il faut vider la proprit Text de la zone de texte dans la fentre Proprits. De la sorte,
rien napparatra avant que lutilisateur nait effectu une slection. La proprit Font
des zones de texte doit presque toujours tre modie, car la valeur par dfaut donne un
afchage trop petit. Pour afcher plus dun lment la fois, il peut aussi tre ncessaire
dagrandir la zone de liste. Dans la Figure 10.2, llment slectionn dans la zone de
liste a t envoy la zone de texte.
Figure 10.2
La zone de texte
contient llment
de liste slectionn.
Chaque lment de la zone de liste se voit affecter une valeur index, pour tre distingu
des autres. Lindex commence 0 pour le premier lment, et ainsi de suite (il ne peut y
avoir de doublons). La proprit ListIndex de la zone de liste contient la valeur dindex
de llment slectionn. Vous pouvez ainsi dterminer quel lment a t choisi.
Dautres mthodes du contrle ListBox, telles que RemoveItem, se servent des valeurs de
la proprit ListIndex. Par exemple, pour retirer le troisime lment de la liste, voici
ce que serait le code :
lstColors.RemoveItem 2
A chaque suppression dun lment, les valeurs dindex sont automatiquement renumrotes. Exemple : le quatrime lment de la liste a la valeur dindex 3 (rappelons que
lindex commence 0), mais si vous supprimez un lment situ avant, le quatrime
lment deviendra le troisime, et prendra 2 pour valeur dindex. Si la proprit Sorted
est dnie comme True, Visual Basic retrie les valeurs dindex aprs chaque ajout ou
suppression.
>
:
304
ce
Astu
Lutilisateur ne peut lui-mme ajouter des valeurs la zone de liste. Cela, seul le code
peut le faire, laide de la mthode AddItem. Lutilisateur ne peut, non plus, supprimer
des lments. Cest le privilge de la mthode RemoveItem.
Supposons quil faille retirer tous les lments que nous avons ajouts la zone de liste.
On pourrait appliquer la mthode RemoveItem chacun. Mais il y a plus simple : une
boucle For. Le code suivant reprend lexemple de la zone de liste lstColors :
1:
2:
3:
4:
Naturellement, pour vider entirement la liste laide dune boucle For, il faut connatre
le nombre exact des lments. Mais, chaque lment ayant t ajout dans le code, cela
ne devrait pas tre bien difcile.
On peut aussi permettre lutilisateur dajouter des valeurs la liste, laide, par exemple, dune zone de texte et dun bouton de commande qui dclencherait la mthode
AddItem. Mme dans un tel cas, il reste possible de tenir une comptabilit prcise des
valeurs de la liste, via une variable qui serait incrmente ou dcrmente chaque fois
que lutilisateur ajoute ou supprime un lment.
En ralit, il est inutile de recourir une variable compteur de ce type. Visual Basic se
charge, en interne, de suivre lvolution du contenu de la liste. La proprit ListCount
contient et met jour le nombre total des lments de la liste. La valeur de ListCount est
toujours suprieure la plus grande valeur de ListIndex, puisque ListIndex commence 0.
Ainsi, pour connatre le nombre actuel des lments de la liste, ou pour leur appliquer
une mthode lintrieur dune boucle For, la proprit ListCount peut tre utilise
comme ceci :
1:
2:
3:
4:
5:
305
<
:
Partie II
ce
Astu
Le contrle ListBox dispose dune mthode, Clear, qui supprime instantanment tous les lments, sans quune boucle soit ncessaire. Si donc vous voulez
vider compltement la liste, linstruction lstColors.Clear est ce qui se fait de
plus simple.
ComboBox simple ;
ComboBox droulante.
Info
ition
Dfin
ition
Dfin
Alors que la zone de liste apparat toujours dans la forme et la taille que vous
lui avez attribues, la ComboBox liste droulante (ou zone de liste droulante
modiable) safche sur une seule ligne jusqu ce que lutilisateur clique
dessus pour louvrir.
La ComboBox simple est une zone de liste simple combine une zone de texte.
Lutilisateur peut ajouter des lments la liste en entrant des valeurs dans la
zone de texte connexe.
La ComboBox droulante (ou zone de liste droulante xe) noccupe sur la
feuille quune seule ligne, jusqu ce que lutilisateur slectionne le contrle.
Alors seulement, la ComboBox souvre et afche la liste des lments. Lutilisateur peut slectionner un lment ou entrer une nouvelle valeur dans la zone de
texte connexe.
>
:
306
La ComboBox liste droulante fonctionne comme une zone de liste, cela prs que
cette dernire occupe gnralement plus de place sur la feuille. La ComboBox liste
droulante ne souvre pour afcher son contenu que lorsque lutilisateur clique sur la
petite che.
La Figure 10.3 montre une feuille prsentant deux ComboBox liste droulante, qui
contiennent les mmes lments. Avant que celle de droite nait t droule, les deux
ComboBox occupaient le mme espace sur la feuille.
Figure 10.3
Avant que lutilisateur
ne la slectionne,
la ComboBox liste
droulante occupe
trs peu despace.
On se sert des ComboBox liste droulante pour offrir lutilisateur de multiples choix
tout en conomisant de lespace sur la feuille. Comme vous pouvez le voir sur la
Figure 10.3, la ComboBox liste droulante nafche pas de texte tant que lutilisateur ne
la pas slectionne. Il convient donc dindiquer lutilisateur, via un label ou une bote
de message, quels types dlments lui sont proposs.
On ajoute des entres aux ComboBox liste droulante comme aux zones de liste : par la
mthode AddItem. Le code suivant ajoute six couleurs aux contrles de la Figure 10.3 :
Private Sub Form_Load()
Initialise les deux ComboBox.
cboColor1.AddItem "Rouge"
cboColor1.AddItem "Bleu"
cboColor1.AddItem "Vert"
cboColor1.AddItem "Jaune"
cboColor1.AddItem "Orange"
cboColor1.AddItem "Blanc"
cboColor2.AddItem "Rouge"
307
<
:
Partie II
End
cboColor2.AddItem
cboColor2.AddItem
cboColor2.AddItem
cboColor2.AddItem
cboColor2.AddItem
Sub
"Bleu"
"Vert"
"Jaune"
"Orange"
"Blanc"
Les ComboBox liste droulante supportent les mmes mthodes et les mmes proprits que les zones de liste.
Le deuxime style de Comb oBox, la ComboBox simple, fonctionne comme une
combinaison de zone de liste et de zone de texte. Ainsi, lutilisateur peut slectionner un
lment ou en entrer un nouveau. Lorsque la proprit Style est dnie comme 1 Simple Combo, le contrle peut tre dimensionn comme une zone de liste. Si, un
moment donn de lexcution, la hauteur et la largeur spcies ne permettent pas
dafcher tout le contenu, des barres de dlement safchent automatiquement.
Sur la Figure 10.4, la liste des couleurs est contenue dans une ComboBox simple.
Les lments sont ajouts laide de la mthode AddItem ; les utilisateurs peuvent aussi
entrer de nouvelles valeurs. Aprs avoir dispos le contrle sur la feuille, vous devez en
effacer la proprit Text. Autrement, le nom du contrle apparatrait dans le champ de la
zone de texte. Vous pouvez aussi bien spcier dans cette proprit Text une valeur par
dfaut, que lutilisateur sera libre daccepter ou de modier.
Figure 10.4
Lutilisateur peut
slectionner
une couleurs
ou entrer
une nouvelle valeur.
Dans la ComboBox simple de la Figure 10.4, les couleurs apparaissent dans lordre
alphabtique. Vous avez devin ? Eh oui, la proprit Sorted est dnie comme True.
>
:
308
Info
La ComboBox simple najoute pas automatiquement les entres utilisateur. Cest vous et
votre code de faire en sorte que le contenu soit mis jour si, du moins, lutilisateur est
autoris entrer de nouvelles valeurs. Les ComboBox simples ne servent gnralement
qu proposer lutilisateur des choix prdnis. Pour lui permettre dajouter des
lments, vous devez crire pour le contrle une procdure vnementielle LostFocus(),
comme celle-ci :
Private Sub cboColor_LostFocus()
cboColor2.AddItem cboColor1.Text
End Sub
309
<
:
Partie II
Figure 10.5
Lutilisateur peut
slectionner
un lment ou entrer
une nouvelle valeur.
Le contrle Timer
Le contrle Timer vous permet de gnrer des rponses sur la base des valeurs envoyes
par lhorloge interne du PC. Vous pouvez ainsi crire un code qui sexcutera au bout
dun certain laps de temps, ou programmer des traitements en arrire-plan. Lhorloge
interne dclenche un vnement timer dix-huit fois par seconde. Cette horloge est
capitale pour le fonctionnement du processeur, de la mmoire et du disque dur, les
donnes tant traites selon un ordre trs strict.
Info
Votre PC gnre un vnement timer dix-huit fois par seconde, quelle que soit
la vitesse du processeur.
Les applications Visual Basic rpondent aux vnements timer. Ces vnements sont
gnrs par lhorloge interne du PC, et Windows les envoie au programme en cours
dexcution. Vous pouvez prdnir lintervalle de temps dans lequel Windows envoie
cette information votre programme. Comme pour les autres vnements, vous pouvez
aussi crire des procdures vnementielles qui sexcuteront chaque fois quun vnement timer aura lieu. Retenez ceci : le code peut sexcuter sur la base dintervalles de
temps, indpendamment de la vitesse du PC, parce que le temps est une constante.
Le contrle Timer reoit les vnements timer et y rpond en fonction des proprits
que vous avez dnies. Lorsque vous disposez le contrle Timer sur la feuille, vous
dterminez la frquence des vnements timer. Cet intervalle correspond lune des
>
:
310
proprits du contrle Timer. Lorsque ce laps de temps sest coul, le contrle Timer
dclenche la procdure vnementielle approprie.
Info
ce
Astu
Comme pour les autres contrles, vous pouvez placer sur la feuille autant de
contrles Timer que vous voulez. Par exemple, vous pouvez placer trois contrles Timer diffrents, dont lun dclenchera un vnement spcique toutes les
minutes, lautre toutes les demi-heures, et le troisime toutes les heures.
Cest en exprimentant que vous dcouvrirez tous les emplois possibles du
contrle Timer. Les procdures vnementielles Timer permettent, notamment,
de piloter des tches en arrire-plan. Il est aussi possible de simuler une
animation en redessinant une image chaque dclenchement de lvnement,
par exemple toutes les demi-secondes.
Pour disposer le contrle Timer sur la feuille, double-cliquez sur loutil correspondant
de la Bote outils, puis placez le contrle rsultant lcart des autres contrles de la
feuille. Comme le contrle Common Dialog, le contrle Timer ne peut tre dimensionn,
et napparat pas sur la feuille lors de lexcution.
La Figure 10.6 montre un contrle Timer au centre de la feuille.
Figure 10.6
Le contrle Timer
peut tre dplac sur
la feuille, mais non
redimensionn.
Le contrle Timer supporte trs peu de proprits. Des six proprits dnissables lors
de la cration, cinq sont plutt communes :
Tag contient les informations que vous tes libre dadjoindre au contrle.
311
<
:
Partie II
ce
Astu
Le contrle Timer nest pas dune exactitude absolue. Les cristaux lintrieur
de lordinateur sont trs prcis, mais le temps que Windows envoie lvnement
au programme, un peu de cette prcision sest perdu. En outre, dautres vnements systme (transfert par rseau, activit du modem, etc.) peuvent ralentir
lactivit du timer. Malgr les apparences, lordinateur ne peut rellement pas
faire deux choses la fois, et le contrle Timer de votre application Visual
Basic na pas toujours la priorit. Conclusion : le contrle Timer est efcace
pour des tches rclamant une ponctualit la seconde prs. Visual Basic ne
dispose pas de contrles plus prcis.
Le contrle Timer ne supporte quun seul vnement : lvnement Timer. Ainsi, pour
un contrle Timer nomm tmrClock, vous ne pourrez crire quune seule procdure
vnementielle : tmrClock_Timer(). Cette procdure contiendra le code qui doit
sexcuter chaque fois que scoule lintervalle spci.
A titre dexercice, nous vous invitons crer une application simple qui mette en uvre
le contrle Timer. Suivez ces tapes :
1. Crez un nouveau projet et placez un contrle Timer sur la feuille.
2. Affectez la proprit Interval la valeur 1000, de sorte que le contrle rponde la
procdure vnementielle toutes les secondes.
>
:
312
txtTimer1.Text = txtTimer1.Text + 1
End Sub
txtTimer2.Text = txtTimer2.Text + 1
End Sub
Ce code incrmente de 1 la valeur des zones de texte (ces valeurs sont par dfaut de
type Variant).
313
<
:
Partie II
9. Ajoutez un label sous chaque zone de texte : "Lent" pour la premire ; et "Rapide"
pour la seconde.
10. Excutez lapplication. Votre feuille devrait ressembler la Figure 10.8. Voici ce qui se
produit : la premire zone de texte sactualise toutes les secondes, lautre toutes les
demi-secondes. Dans les limites de la prcision du contrle Timer, la seconde zone de
texte devrait donc se mettre jour deux fois plus rapidement que la premire.
Figure 10.8
Les deux zones de
texte sactualisent
des intervalles
diffrents.
Les tableaux
Nous avons vu que les contrles ListBox exploitent les valeurs dindex. Chaque lment
de la liste se voit attribuer une valeur dindex : 0 pour le premier, 1 pour le deuxime, et
ainsi de suite. La zone de liste en elle-mme est unique, mais elle peut recouvrir une
multitude de valeurs. Ces valeurs se distinguent par leur valeur dindex.
Cette indexation des lments de liste offrent une analogie intressante avec le concept que
nous allons maintenant tudier : les tableaux. La zone de liste est un contrle avec des
lments indexs. Un tableau est une liste de variables qui contient des lments
indexs. La terminologie exacte nomme les valeurs dindex des tableaux des indices.
ition
Dfin
ition
Dfin
Un tableau est une liste de variables, de noms et de types de donnes identiques. Le terme indice dsigne chaque variable de la liste.
Les variables suivantes sont proprement individuelles et ne font pas partie dun tableau :
intCount
>
:
314
curPay
sngLength
strDeptCode
Les variables individuelles se prtent bien au stockage de valeurs individuelles (la prime
accorde tel ou tel commercial, etc.). En revanche, pour stocker une liste de valeurs
similaires, on se servira plutt dun tableau.
Il ne sagit pas, une fois que vous saurez dclarer et utiliser les tableaux, dy stocker toutes
vos donnes Visual Basic. Pour les boucles ou les entres utilisateur, vous continuerez
employer les variables individuelles, faites pour cela. Les tableaux, eux, sont faits pour
recevoir des listes de donnes. En cas doccurrences multiples de donnes devant tre
suivies dans votre application (par exemple, les champs dune table lue en mmoire), les
tableaux permettront de stocker dune faon adquate les donnes.
Imaginons que vous ayez tablir des statistiques au sujet des primes accordes
100 commerciaux. Vous devez calculer, pour toutes ces primes, la moyenne, le maximum, le minimum et la variation moyenne des valeurs. Vous pouvez dclarer 100 variables,
chacune portant un nom diffrent, tel que curBonus1, curBonus2, etc. Et pour cumuler
tout a ? Il faudrait, pour chaque addition ou chaque comparaison, rpter les 100 variables dans une mme instruction... Cest l quinterviennent les tableaux. Au lieu de
dclarer 100 variables, vous dclarez un seul tableau, portant un seul et mme nom, et
contenant la liste des 100 primes. Pour parcourir les valeurs du tableau, nul besoin de
lister les 100 variables ; il suft dune boucle For qui passe dun indice lautre, de 1
100. Sans laide des tableaux, de telles manipulations seraient quasi impensables.
Pour mieux illustrer cet exemple, voici un fragment du code qui aurait servi additionner les 100 variables individuelles :
curTotal = curBonus1 + curBonus2 + curBonus3 + curBonus4 + ...
La boucle aurait aussi bien pu parcourir les valeurs en sens inverse. En outre, il nest pas
ncessaire daccder aux lments du tableau dans lordre. Supposons que vous vouliez
calculer la moyenne de la premire et de la dernire prime du tableau. Cest ce que fait
linstruction suivante :
curAvgBonus = (curBonus(1) + curBonus(100)) / 2.0
315
<
:
Partie II
Les lments du tableau peuvent tre appels dans nimporte quel ordre, pourvu
quon spcie lindice.
A dire vrai, ce dernier point dpend de vos prfrences. Par dfaut, le premier indice est
0. Mais les programmeurs Visual Basic (contrairement aux programmeurs C et C++)
prfrent, en gnral, commencer par lindice 1. Pour ce faire, il suft dinclure dans la
section de dclarations du module linstruction suivante :
Option Base 1
Visual Basic offre un autre moyen de dnir la plage des indices ; nous verrons cela
dans la prochaine section.
ce
Astu
Info
Dune certaine manire, on accde aux valeurs dun tableau comme le facteur distribue
le courrier dun immeuble : ladresse est la mme, seul change le nom des destinataires.
>
:
316
Il y a, en fait, (et cest une particularit de Visual Basic) une exception la rgle selon
laquelle un tableau doit relever dun seul type de donnes. En effet, les tableaux peuvent
tre dclars comme de type Variant ; auquel cas, les lments contenus pourront tre
de types de donnes diffrents.
Linstruction suivante dclare un tableau de type Integer contenant cinq lments (on prsuppose ici que linstruction Option Base 1 apparat dans la section de dclarations) :
Dim intCounts(5) As Integer
Quy a-t-il dans intCounts(1), intCounts(2), etc. ? Eh bien, personne ne le sait pour
linstant. Comme les variables, les lments du tableau doivent avant toute chose tre
initialiss. En prcisant lindice, vous pouvez utiliser les lments de tableau comme
vous le feriez pour des variables. Par exemple :
intNumber = intCounts(2) * intFactor / 15
txtValue.Text = intCounts(4)
intCounts(5) = 0
317
<
:
Partie II
Figure 10.9
Le tableau intCounts
contient cinq
lments ; le premier
indice est 1.
Tableau intCounts
intCounts(1)
intCounts(2)
intCounts(3)
intCounts(4)
intCounts(5)
On peut aussi, laide de la clause To, spcier les indices de dbut et de n. Considrez
les trois dclarations de tableaux suivantes :
Public varCustNumber(200 To 999) As Variant
Public strCustName(200 To 999) As String
Public curCustBalance(200 To 999) As Currency
Dans chaque tableau, le premier indice est 200, le dernier 999. Si, aprs une telle
dclaration, vous tentiez quelque chose comme strCustName(4), Visual Basic gnrerait
une erreur.
>
:
318
ntion
Atte
Il pourra vous tre utile, selon le cas, de spcier un indice de dpart autre que 0 ou 1.
La dclaration donne en exemple ci-dessus, par exemple, serait approprie une liste
de client dont le premier numro de compte est 200. En faisant commencer vos indices
200, vous assurez la symtrie entre les numros de compte et les indices eux-mmes.
Spciez toujours un indice de n assez grand, an de rserver une marge sufsante
pour les lments venir.
Visual Basic inclut une fonction interne spciale, Array(). La fonction Array() permet
de dclarer et dinitialiser les tableaux plus facilement.
ce
Astu
La fonction Array() est assez proche des anciennes instructions BASIC READ
et DATA. Les petits tableaux dont les valeurs sont dj connues peuvent tre
ainsi rapidement initialiss.
Le type de donnes Variant, vous le savez, peut contenir tous les autres types. Supposons que vous cherchiez stocker dans un Tableau Days le nombre de jours de chaque
mois (sans tenir compte des annes bissextiles). Pour commencer, vous dclarez une
variable Variant :
Dim Days As Variant
Puis, plutt que dutiliser une boucle For, vous initialisez le tableau en une seule tape,
laide de la fonction Array() :
Days = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
Pour traiter les donnes dun tableau, il suft de spcier lindice des lments utiliss.
319
<
:
Partie II
Pour vous familiariser avec lutilisation des indices, nous vous proposons quelques
exemples. Bien que la plupart des programmes reoivent leurs donnes de chiers et de
formulaires, les listings qui suivent mettent en uvre des tableaux dont les lments sont
des valeurs renvoyes par la fonction InputBox(). Les tableaux tant destins recevoir
dimportantes quantits de donnes, il nest pas question de saisir ces donnes dans les
variables avant chaque excution du programme. Les instructions daffectation ne conviennent pas non plus aux grandes quantits de donnes exploites par des programmes interactifs.
Dans le Listing 10.3, le programme dclare deux tableaux. Les donnes sont, dune
part, les noms de 35 familles membres dune association de quartier, et, dautre part, les
cotisations annuelles dues. Le programme reoit les donnes puis afche les rsultats.
Info
Notez que ce programme reoit et afche toutes les donnes laide de simples routines.
La routine dentre (lignes 9 22) utilise une boucle For, tandis que la routine de
sortie (lignes 28 32) utilise une boucle Do. La mthode employe pour contrler les
>
:
320
boucles est sans importance. Ce qui compte, ici, cest que lon reoive, traite et afche
un grand nombre de donnes en un minimum de lignes, et que sufsent, pour cela, les
indices du tableau et quelques instructions de boucles.
Cet exemple met en uvre des tableaux parallles, cest--dire deux tableaux travaillant
cte cte. A chaque lment dun tableau correspond un lment de lautre tableau.
Les tableaux parallles fonctionnent en mmoire comme fonctionnent, dans une table,
deux champs lis.
Notre petit programme dassociation de quartier fournit une belle illustration, mais ne
fonctionne que sil y a exactement 35 familles. Et si lassociation sagrandit ? Il faudra
alors modier le programme. Cest pourquoi la plupart des programmes, contrairement
notre exemple, ne dnissent pas a priori une quantit limite de donnes. Il vaut
toujours mieux dclarer plus dlments de tableau que lon na dj de donnes. Le
programme permet de dterminer quels lments sont rellement utiliss.
Le prochain programme est semblable celui du Listing 10.3, ceci prs quil dclare
500 lments pour chaque tableau. Avec un tel nombre, on est certain davoir toujours
assez de valeurs disponibles. Lutilisateur nentre que le nombre dlment rels.
Le programme du Listing 10.4 est trs exible, permettant un nombre dentres et de
sorties diffrent chaque excution. La seule limte est celle que lon atteindra lorsque
lassociation approchera les 500 membres.
ntion
Atte
Dclarez assez dlments de tableaux pour couvrir vos besoins estims, mais
pas plus que vous ne puissiez rellement utiliser. Les lments de tableaux
occupent de la mmoire mme sils sont vides.
321
<
:
Partie II
Listing 10.4 : On peut dclarer plus dlments que lon na de donnes (suite)
19:
20:
21:
22:
23:
24:
25:
A la ligne 15, la frappe de la touche Entre sans saisie de valeur provoque linterruption
de la boucle. Ce nest pas parce que 500 lments sont rservs quil faut tous les utiliser.
Le programme du Listing 10.5 montre comment on accde en dsordre aux lments du
tableau. Le programme demande les salaires pays pour chacun des douze derniers mois. Il
attend ensuite que lutilisateur saisisse le mois consulter. Le total du mois demand safche alors. Ce listing donne un exemple de programme capable de rechercher des donnes
prcises dans un tableau : on stocke les donnes, puis on attend la requte de lutilisateur.
Listing 10.5 : Programme de recherche de donnes
>
:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
322
Aprs que lutilisateur a entr les douze salaires dans le tableau (lignes 9 11), il peut
demander consulter nimporte quel mois (un la fois), simplement en spciant le
numro du mois, qui correspond lindice.
Le Listing 10.6 illustre les diverses oprations mathmatiques que lon peut effectuer
sur les tableaux. Le programme demande une srie de tempratures, et interrompt sa
demande lorsque lutilisateur entre 99 pour signaler la n de la liste. Puis le
programme calcule la moyenne des tempratures.
Listing 10.6 : Lutilisateur indique au programme la n de la srie de donnes
323
<
:
Partie II
En rsum
Ce chapitre vous a expliqu comment intgrer le support de la souris vos applications.
Les vnements souris informent votre programme des dplacements, clics et doubleclics, et indiquent quel bouton a t utilis. A laide des mthodes appropries, vous
pouvez grer les oprations de glisser-dposer, qui permettent lutilisateur de dplacer
un objet tel quun contrle, dune partie lautre de la feuille.
Nous avons galement dcouvert le contrle Timer, qui permet de programmer lexcution selon des critres temporels. Le timer se base sur lhorloge interne du PC, et peut
dclencher des procdures aprs coulement dun laps de temps dni en millisecondes.
Il existe plusieurs types de contrles de listes La Bote outils comprend cet effet les
contrles ListBox et ComboBox. La diffrence entre les types disponibles est parfois tnue,
mais les exemples daujourdhui auront dtaill le fonctionnement et les avantages de
chacun, an que vous fassiez le meilleur choix pour vos applications.
Vers la n de ce chapitre, nous sommes pass des contrles de listes aux tableaux de
variables, dont la structure est semblable celle des lments de listes. Un tableau de
variables contient de multiples valeurs, auxquelles on accde laide dun indice numrique.
Dans le prochain chapitre, nous tudierons la gestion des feuilles.
Questions-rponses
Q Comment choisir entre les diffrents types de listes ?
R Si les contrles de listes sobtiennent tous partir des outils ListBox et ComboBox
de la Bote outils, ils ont chacun un fonctionnement particulier. Dans la zone de
liste simple, lutilisateur ne peut que slectionner lun des lments proposs, il ne
>
:
324
peut pas en ajouter. La liste conserve la taille qui lui a t attribue lors de la
cration ; si ncessaire, des barres de dlement safcheront automatiquement.
Le contrle ComboBox, selon les spcications de sa proprit Style, peut revtir
trois formes diffrentes. La ComboBox droulante reste ferme jusqu ce que
lutilisateur clique dessus, ce qui conomise de la place sur la feuille. La ComboBox
simple inclut une zone de texte dans laquelle lutilisateur peut entrer de nouvelles
valeurs. De mme, la zone de liste droulante noccupe que peu de place, et autorise
lajout dlments.
Q Pour prsenter lutilisateur une liste de valeurs, dois-je utiliser lune des
zones de liste ou un tableau ?
R Ce sont deux choses diffrentes, et vous navez pas choisir entre zones de liste et
tableaux. Vous pouvez trs bien utiliser les deux dans une mme application. Le
tableau est l pour accueillir les donnes reues par votre application, tandis que les
listes ne servent qu prsenter des donnes.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.
Quiz
1. Quels vnements souris rpondent des boutons particuliers ? Quels vnements
souris rpondent aux deux ?
2. Comment dterminer quel bouton a servi lors dun vnement MouseDown ?
3. Comment modier licne qui apparat lors dune opration de glisser-dposer ?
4. Comment crer une procdure vnementielle capable de rpondre un intervalle plus
grand que 65 secondes (limite approximative du contrle Timer) ?
5. Comment initialise-t-on un contrle de liste ?
6. Comment le programme reconnat-il les lments que lutilisateur a slectionns ?
7. Donnez deux moyens de retirer tous les lments dun contrle de liste.
325
<
:
Partie II
Exercices
1. Ecrivez un programme qui afche dans une zone de liste la liste des membres de
votre famille. Ajoutez-en assez pour que des barres de dlement safchent. Faites
en sorte que la liste soit automatiquement trie.
2. Lancez le projet dexemple Listcmbo, fourni avec Visual Basic. Lapplication
contient une base de donnes dditeurs informatiques amricains. Cliquez sur le
bouton Utiliser le contrle ComboBox standard, puis cliquez sur le champ Etat.
Cliquez ensuite sur le bouton Utiliser le contrle ListBox standard, puis ouvrez de
nouveau le champ Etat. Vous constaterez aisment la diffrence entre les deux.
3. Modiez lapplication de lexercice 1 de faon que les trois sortes de ComboBox
apparaissent sur la feuille, pour afcher les mmes donnes. Faites en sorte que tout
changement (ajout dlment) dans lune des ComboBox soit automatiquement
report dans lautre.
>
:
326
PB4
Slections multiples
dans une zone de liste
Ce Projet bonus met en uvre les zones de liste tudies au Chapitre 10. Il vous permettra galement dapprofondir votre comprhension des tableaux. Lapplication que vous
allez crer doit permettre les slections multiples ; vous devrez pour cela dnir les
valeurs de proprits adquates. Vous devrez galement dterminer si lutilisateur a bel
et bien slectionn plusieurs valeurs, an que ces valeurs puissent servir ailleurs dans le
programme.
Les slections multiples sont souvent utilises. Par exemple, une entreprise peut distribuer ses clients un chier catalogue dans lequel les divers produits sont proposs sous
forme de liste. Le client peut dcider de nacheter quun seul produit, comme en slectionner des dizaines.
Crer la feuille
Pour quune zone de liste accepte les slections multiples, vous devez modier la
proprit MultiSelect. Si la MultiSelect a la valeur 1 - Simple (comme oppose de la
valeur par dfaut, 0 - None), lutilisateur peut effectuer des slections multiples. Si la
valeur de MultiSelect est 2 - Extended, lutilisateur peut slectionner une plage
dlments en tenant la touche Maj, ainsi que slectionner plusieurs lments discontinus
en tenant la touche Ctrl (exactement comme dans les botes de dialogue Ouvrir).
327
Partie II
La Figure PB4.1 montre une feuille sur laquelle des zones de texte afchent
"Slectionn" si llment correspondant a t slectionn dans la zone de liste, et "Non
slectionn" autrement. La proprit MultiSelect de la liste "Destination" a pour valeur
2 - Extended.
Figure PB4.1
Vous pouvez effectuer
des slections
multiples dans
les zones de liste.
La premire chose faire, cest dajouter les contrles sur la feuille. Suivez pour cela le
Tableau PB4.1.
Tableau PB4.1 : Proprits des contrles de la feuille
>
:
Contrle
Proprit
Valeur
Feuille
Name
frmDest
Feuille
Caption
Feuille
Height
6600
Feuille
Width
7230
Label 1
Name
lblListBoxCap
Label 1
Caption
Destination
Label 1
FontStyle
Bold
Label 1
FontSize
24
328
Proprit
Valeur
Label 1
Height
600
Label 1
Left
2190
Label 1
Top
120
Label 1
Width
3060
Label 2
Name
lblChicago
Label 2
BorderStyle
Fixed Single
Label 2
Caption
Chicago
Label 2
FontStyle
Bold
Label 2
FontSize
18
Label 2
Height
495
Label 2
Left
360
Label 2
Top
1995
Label 2
Width
2655
Label 3
Name
lblWashington
Label 3
Caption
Washington
Label 3
BorderStyle
Fixed Single
Label 3
FontStyle
Bold
Label 3
FontSize
18
Label 3
Height
495
Label 3
Left
4035
Label 3
Top
1980
Label 3
Width
2655
Label 4
Name
lblDallas
329
<
:
Partie II
>
:
Contrle
Proprit
Valeur
Label 4
Caption
Dallas
Label 4
BorderStyle
Fixed Single
Label 4
FontStyle
Bold
Label 4
FontSize
18
Label 4
Height
495
Label 4
Left
360
Label 4
Top
3480
Label 4
Width
2655
Label 5
Name
lblHouston
Label 5
Caption
Houston
Label 5
BorderStyle
Fixed Single
Label 5
FontStyle
Bold
Label 5
FontSize
18
Label 5
Height
495
Label 5
Left
4035
Label 5
Top
3480
Label 5
Width
2655
Label 6
Name
lblSeattle
Label 6
Caption
Seattle
Label 6
BorderStyle
Fixed Single
Label 6
FontStyle
Bold
Label 6
FontSize
18
Label 6
Height
495
330
Proprit
Valeur
Label 6
Left
360
Label 6
Top
4920
Label 6
Width
2655
Label 7
Name
lblDayton
Label 7
Caption
Dayton
Label 7
BorderStyle
Fixed Single
Label 7
FontStyle
Bold
Label 7
FontSize
18
Label 7
Height
495
Label 7
Left
4035
Label 7
Top
4920
Label 7
Width
2655
Zone de liste
Name
lstFirstList
Zone de liste
Height
840
Zone de liste
Left
2865
Zone de liste
MultiSelect
2-Extended
Zone de liste
Top
870
Zone de liste
Width
1335
Zone de texte 1
Name
txtChicago
Zone de texte 1
FontSize
18
Zone de texte 1
FontStyle
Bold
Zone de texte 1
Height
495
Zone de texte 1
Left
120
331
<
:
Partie II
>
:
Contrle
Proprit
Valeur
Zone de texte 1
Text
Non slectionn
Zone de texte 1
Top
2520
Zone de texte 1
Width
3105
Zone de texte 2
Name
txtWashington
Zone de texte 2
FontSize
18
Zone de texte 2
FontStyle
Bold
Zone de texte 2
Height
495
Zone de texte 2
Left
3840
Zone de texte 2
Text
Non slectionn
Zone de texte 2
Top
2520
Zone de texte 2
Width
3105
Zone de texte 3
Name
txtDallas
Zone de texte 3
FontSize
18
Zone de texte 3
FontStyle
Bold
Zone de texte 3
Height
495
Zone de texte 3
Left
120
Zone de texte 3
Text
Non slectionn
Zone de texte 3
Top
3960
Zone de texte 3
Width
3105
Zone de texte 4
Name
txtHouston
Zone de texte 4
FontSize
18
Zone de texte 4
FontStyle
Bold
Zone de texte 4
Height
495
332
Proprit
Valeur
Zone de texte 4
Left
3840
Zone de texte 4
Text
Non slectionn
Zone de texte 4
Top
3960
Zone de texte 4
Width
3105
Zone de texte 5
Name
txtSeattle
Zone de texte 5
FontSize
18
Zone de texte 5
FontStyle
Bold
Zone de texte 5
Left
120
Zone de texte 5
Height
495
Zone de texte 5
Text
Non slectionn
Zone de texte 5
Top
5400
Zone de texte 5
Width
3105
Zone de texte 6
Name
txtDayton
Zone de texte 6
FontSize
18
Zone de texte 6
FontStyle
Bold
Zone de texte 6
Height
495
Zone de texte 6
Left
3840
Zone de texte 6
Text
Non slectionn
Zone de texte 6
Top
5400
Zone de texte 6
Width
3105
333
<
:
Partie II
Ajouter le code
Le Tableau PB4.1 ne rserve pas de blancs dans les valeurs des zones de texte ; ce sera le rle
de la procdure Form_Load(). Le Listing PB4.1 fournit le code de ce projet.
Listing PB4.1 : Initialiser la zone de liste et interroger les slections multiples
>
:
334
44:
If lstFirstList.Selected(5) Then
45:
txtDayton.Text = "Slectionn"
46:
Else
47:
txtDayton.Text = "Non slectionn"
48:
End If
49:
50: End Sub
Analyse
Les lignes 3 8 initialisent la zone de liste. La proprit MultiSelect ayant pour valeur Extended, lutilisateur peut slectionner plusieurs villes la fois.
Lorsque les slections multiples sont autorises, Visual Basic doit crer un tableau spcial,
semblable aux tableaux de variables, mais ne contenant que des proprits. Ici, le tableau de
proprits est nomm Selected. Ce tableau stend de Selected(0) Selected(5), pour
accueillir les six lments de la liste.
Les valeurs du tableau sont toutes de type Boolean. Elles seront True ou False, selon la slection.
A la premire excution du programme, toutes les valeurs Selected sont False, puisque aucune
slection na encore eu lieu. Chaque fois que lutilisateur slectionne un lment dans la liste, la
valeur Selected correspondante devient True. La procdure Click() (lignes 11 48) se charge de
mettre jour les six zones de texte pour reter les slections.
Info
335
<
:
PB 5
Pratique de la souris
Ce Projet bonus vous invite mettre en pratique les techniques de gestion de la souris
tudies au Chapitre 10. En rpondant aux vnements souris et en interrogeant les
arguments de la procdure vnementielle, le programme dtermine si lutilisateur a
cliqu, double-cliqu, ou sil a dplac la souris.
Ce Projet bonus est un peu diffrent des autres. Vous commencerez par tudier un exemple
dans lequel on change licne de dplacement. Puis, vous construirez une application
capable de rpondre aux vnements souris.
337
Partie II
Figure PB5.1
Voil un pointeur
heu-reux !
Lancez cette petite application, et vous constaterez que Visual Basic se charge dafcher
licne spcie.
Programmer la souris
Nous allons maintenant crer un nouveau projet dans lequel un contrle afche une
image (comme cela a t tudi au Chapitre 2). A la proprit Picture de ce contrle
Image, vous affecterez une icne gurant une cible. Cette icne se trouve dans le
dossier \Graphics\Icons\Misc. Vous ajouterez ensuite la feuille une zone de texte
nomme txtMouse (voir Tableau PB5.1). Le contenu de cette zone de texte retera les
dplacements et les clics de la souris. Ce projet illustre le fonctionnement des procdures
vnementielles lies la souris.
La Figure PB5.2 montre la feuille que vous allez crer.
Figure PB5.2
Lutilisateur doit
cliquer sur limage.
>
:
338
Il faut dabord crer la feuille. Suivez, pour cela, les spcications du Tableau PB5.1.
Tableau PB5.1 : Proprits des contrles de la feuille
Contrle
Proprit
Valeur
Feuille
Name
frmMouse
Feuille
Caption
Gestion de la souris
Feuille
Height
4230
Feuille
Width
5265
Zone de texte
Name
txtMouse
Zone de texte
Alignment
2-Center
Zone de texte
FontStyle
Bold
Zone de texte
FontSize
14
Zone de texte
Height
1095
Zone de texte
Left
840
Zone de texte
MultiLine
True
Zone de texte
Text
Servez-vous de la souris
Zone de texte
Top
1320
Zone de texte
Width
3255
Image
Name
imgMouse
Image
Height
480
Image
Left
2400
Image
Picture
Image
Top
480
339
<
:
Partie II
Ajouter le code
Le Listing PB5.1 fournit le code de ce projet.
Listing PB5.1 : Rpondre aux vnements souris
>
:
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: Private Sub imgMouse_MouseMove(intButton As Integer, intShift
As Integer, sngX As Single, sngY As Single)
35:
txtMouse.Text = "Vous vous tes dplac sur limage"
36: End Sub
340
Analyse
Les diffrentes procdures vnementielles interrogent lactivit de la souris. Les lignes
1 4 contiennent la procdure vnementielle la plus simple, qui rpond lorsque que
lon clique nimporte o sur la feuille. Linstruction Beep est l pour signaler lvnement Click, qui autrement ne serait jamais peru (il se produit bien trop rapidement).
Comme nous lavons vu au Chapitre 10, lvnement MouseDown a lieu avant
lvnement Click (si, du moins, le code contient les deux vnements). Le texte de
MouseDown safchera donc pour montrer o lon a cliqu sur la feuille. Puis, lorsquon
relche le bouton de la souris, cest le texte de lvnement Click qui safche pour
disparatre aussitt (do lintrt de linstruction Beep).
Info
ntion
Atte
Les lignes 9 12 traitent les arguments de lvnement MouseDown. Les valeurs en twips
sngX et sngY indiquent les coordonnes du clic. Notez que ce code ragira aux clics du
bouton gauche comme aux clics du bouton droit, les deux pouvant dclencher lvnement
MouseDown. La procdure ne sexcute que si vous cliquez sur la feuille ; et lvnement Click a lieu ds que vous relchez le bouton.
Les lignes 15 17 grent le dplacement de la souris sur la feuille, et uniquement sur la
feuille.
La ligne 20 22 grent le positionnement de la souris sur limage. Si vous cliquez sur
limage, la procdure vnementielle Click met jour la zone de texte pour indiquer ce
qui vient de se passer. Mais lvnement MouseDown passant avant lvnement Click, vous
naurez pas le temps de lire cette indication ; en revanche, vous pourrez entendre le son
gnr par linstruction Beep.
Les lignes 24 26 grent le double-clic sur limage laide dune procdure vnementielle DblClick. Les lignes 28 32 traitent lvnement MouseDown de limage, avant
mme que lvnement Click nait lieu. Enn, les lignes 34 36 grent les mouvements
de la souris sur limage.
341
<
:
Partie II
Info
Grce ce Projet bonus, vous savez quoi vous attendre quant la programmation de la
souris. Vous savez notamment que lvnement MouseDown a toujours priorit sur les
vnements Click et DblClick.
Implmenter le glisser-dposer
automatique
Rien de plus simple que dajouter vos applications le support du glisser-dposer.
Dabord, affectez la proprit DragIcon du contrle image licne qui doit safcher
lors de lopration. Choisissez, par exemple, limage Clock02.ico. Pour implmenter le
glisser-dposer automatique, dnissez la proprit DragMode du contrle comme 1 Automatic. Visual Basic soccupe des dtails.
Maintenant, ajoutez la procdure vnementielle MouseDown suivante :
Private Sub Form_DragDrop(cntSource As Control, sngX As Single, sngY As Single)
cntSource.Move sngX, sngY Dposer limage.
End Sub
Largument Source de lvnement DragDrop correspond en fait au contrle glisserdposer. Les valeurs de coordonnes sngX et sngY spcient le "point de chute" du
contrle. La mthode Move se charge de dplacer le contrle (en loccurrence, limage)
la position spcie.
Lancez lapplication et dplacez limage divers endroits de la feuille. Le mode automatique requiert de votre part un minimum de programmation, et sera donc privilgi
pour la plupart des oprations de glisser-dposer.
>
:
342
txtMouse.Text = "Clic sur limage la position " & sngX & "," & sngY
imgMouse.Drag
Amorce le glisser-dposer.
End Sub
La seule instruction nouvelle ici est imgMouse.Drag. Lvnement MouseDown doit amorcer
lopration de glisser-dposer. Lintrt du mode manuel est que vous pouvez programmer
divers traitements en rponse lvnement MouseDown, avant que ne commence le glisserdposer. En mode automatique, le glisser-dposer a lieu sans autre intervention de votre
part.
ce
Astu
La mthode Drag active le glisser-dposer. Sans la mthode Drag, la procdure vnementielle MouseDown() ne pourrait amorcer lopration. Le mode manuel permet
dappliquer des restrictions lopration de glisser-dposer avant ou pendant quelle a
lieu.
343
<
:
Chapitre
11
le contrle Toolbar ;
le contrle Coolbar ;
le contrle ImagCombo.
345
Partie II
Info
Vous dcouvrirez, dans la prochaine section, une faon particulire demployer lvnement Form_Unload().
On rencontre souvent, dans une procdure Form_Load(), un code semblable celui-ci :
frmAForm.Left = (Screen.Width - frmAForm.Width) / 2
frmAForm.Top = (Screen.Height - frmAForm.Height) / 2
Ces instructions permettent de centrer la feuille par rapport aux coordonnes de lcran.
Le Chapitre 16 vous prsentera les divers types dobjets supports par Visual Basic.
Lun de ces objets est Screen, qui reprsente lcran de lutilisateur. Lobjet Screen
sajuste la rsolution dcran et la carte vido de lutilisateur. Pour connatre la
>
:
346
rsolution employe, le programme peut, tout moment, interroger les proprits Width
et Height de lobjet Screen.
ce
Astu
Lobjet par dfaut est lobjet (feuille, contrle, etc.) que Visual Basic utilisera
automatiquement si vous nen spciez pas dautre.
Le code de centrage prsent ci-haut forme un objet dtude intressant, car il illustre
les relations quentretient la feuille avec lcran, les proprits de lobjet Screen et les
vnements Load et Unload. Mais la fentre Proprits fournit un moyen plus simple de
spcier la position de la feuille au dmarrage : la proprit StartUpPosition, qui peut
prendre lune des quatre valeurs prsentes dans le Tableau 11.1.
Tableau 11.1 : StartUpPosition permet de spcier la position initiale de la feuille
Proprit
Constante nomme
Valeur
Description
0-Manual
vbStartUpManual
Pas de spcication.
1-CenterOwner
vbStartUpOwner
2-CenterScreen
vbStartUpScreen
3-WindowsDefault
vbStartUpWindowsDefault
Les vnements de feuilles sont souvent dune haute importance pour le programme.
Vous connaissez dj Load et Unload, ainsi que les vnements feuille/souris du chapitre
prcdent. Nous allons maintenant tudier des vnements de feuilles tout aussi utiles.
Le Tableau 11.2 en prsente trois.
347
<
:
Partie II
Description
Activate
Deactivate
Resize
ce
Astu
La Figure 11.1 reproduit la bote de dialogue que lon obtient par le menu Projet,
Proprits. Cette bote de dialogue que nous avons dj voque, contient la liste
droulante Objet de dmarrage, qui propose les diffrentes feuilles de lapplication ainsi
quune procdure spciale nomme Main. Certaines applications nont pas de feuille de
dmarrage. Ce peut tre le cas dun utilitaire darrire-plan qui nafche pas de fentre.
Il peut aussi sagir dune application qui vrie pralablement une valeur quelconque,
an de dterminer quelle feuille doit apparatre, ou bien qui demande la saisie dun mot
de passe.
Figure 11.1
La bote de dialogue
Proprits du projet
permet de spcier
la feuille ou procdure
de dmarrage.
>
:
348
Pour quun code sexcute avant tout chargement de feuille, il faut crer une procdure
Main() (dans la section gnrale du module de code, et non dans le module de feuille),
et slectionner cette procdure Main() comme Objet de dmarrage dans les Proprits
du projet. Le code contenu dans Main() sexcutera avant tout autre chose. En fait,
aucune feuille ne safchera avant que Main() ne lui applique la mthode Show.
Info
Vous dcouvrirez dautres vnements lis aux feuilles dans les Chapitres 13
et 14.
La collection Forms est lensemble des feuilles dnies dans votre application.
349
<
:
Partie II
Notation indiciaire
frmAcPay
Forms(0)
frmAcRec
Forms(1)
frmAcReview
Forms(2)
ce
Astu
Il existe une autre faon de dsigner une feuille en employant son nom. Voici
un exemple :
Forms![frmAcPay]
Les indices
On peut galement se servir dun indice la place du nom pour dsigner un contrle
individuel de la feuille, tel quune zone de texte.
Imaginons quune feuille nomme frmStore contient cinq contrles : trois labels
(lblStoreNum, lblStoreName et lblStoreLoc) et deux zones de liste (lstStoreEmps et
lstStoreMgrs). Les procdures peuvent dsigner chaque contrle par son indice,
comme le montre le Tableau 11.4. Notez que le nom du contrle individuel doit tre
distingu de Forms par un point dexclamation.
Tableau 11.4 : Les contrles de la feuille peuvent aussi tre dsigns
par leur indice
>
:
Nom du contrle
Notation indiciaire
lblStoreNum
Forms!frmStore(0)
lblStoreName
Forms!frmStore(1)
350
Notation indiciaire
lblStoreLoc
Forms!frmStore(2)
lstStoreEmps
Forms!frmStore(3)
lstStoreMgrs
Forms!frmStore(4)
ntion
Atte
La proprit Count
Comme les contrles, les collections ont des proprits. Count est lune des proprits de la
collection Forms. La proprit Count vous simplie la tche en ce quelle vrie pour vous
le nombre de feuilles contenues dans une collection. Grce Count, vous pouvez crire des
procdures gnralistes qui sappliqueront toutes les feuilles actuellement ouvertes. La
proprit Count contient toujours un entier.
Info
Le code suivant dclare une variable Integer, intC, et y stocke le nombre de feuilles
ouvertes :
Dim intC As Integer
intC = Forms.Count
Count permet aussi de compter les contrles dune feuille prcise. Le code suivant
dclare une variable Integer, intCC, et y stocke le nombre de contrles sur une feuille
nomme frmMyForm :
Dim intCC As Integer
intCC = frmMyForm.Count
la feuille.
351
<
:
Partie II
ce
Astu
Place aprs le nom dune feuille, Count indique le nombre de contrles quelle
contient. Place aprs Forms, elle indique le nombre de feuilles contenues
dans la collection.
Une boucle For est loutil parfait pour parcourir toutes les feuilles du projet en cours.
Prenez garde de toujours amorcer la boucle sur une valeur 0, cest--dire sur lindice de
la premire feuille.
Le code suivant masque toutes les feuilles ouvertes :
For intI = 0 To Forms.Count - 1
Forms(intI).Visible = False
Masque chaque feuille.
Next intI
Il est parfois ncessaire de masquer toutes les feuilles, par exemple pour effectuer une
tche systme requrant labsence totale dE/S utilisateur. Une fois la tche effectue,
une boucle semblable permettra de dnir la proprit Visible de chaque feuille comme
True.
Visual Basic supporte un format spcial de For, For Each. Cette boucle parcourt une
collection sans quil soit besoin de contrler une variable de boucle. Voici une boucle
For Each qui masque toutes les feuilles ouvertes :
Dim varFrmObj As Variant
For Each varFrmObj In Forms
varFrmObj.Visible = False
Next
La seule variable de boucle quexige For Each est une variable Variant, qui contiendra
le nom de chaque feuille chaque itration de la boucle dans la collection. Dans le
mme esprit, linstruction For Each suivante amorce une boucle qui parcourt tous les
contrles de la feuille frmMyForm, quel que soit le nombre de ces contrles :
For Each varControl In frmMyForm
>
:
352
charge en mmoire et, pour Windows, le programme est toujours en cours dexcution. Ainsi, le programme continue daccaparer de la mmoire sans que lutilisateur
en ait connaissance.
Les programmeurs Visual Basic ajoutent souvent le code suivant aux diverses commandes de fermeture (telles que loption de menu Fichier, Quitter) :
For intCtr = (Forms.Count 1) to 0 Step - 1
Next intCtr
La mthode Print
La mthode Print permet dafcher du texte sur la feuille sans passer par un contrle du
type label ou zone de texte. Print afche le texte directement sur la feuille. Print a
linconvnient dexiger trop de programmation. Print ntant pas un contrle, on ne
peut se contenter de dnir des proprits lors de la cration. Cest travers le code seul
que lon peut rgler le comportement de la mthode Print. Par exemple, vous devez
spcier dans le code la position prcise laquelle Print afchera le texte, sinon elle
pourrait se superposer aux contrles de la feuille.
ce
Astu
Plus gnralement, Print permet denvoyer du texte un objet. Pour notre expos, cet
objet sera une feuille. Mais Print peut aussi bien sappliquer aux contrles Picture,
ainsi quaux objets Printer ou Debug (qui est une fentre dexcution spciale dans
laquelle vous pouvez envoyer des rsultats de tests lors de lexcution). Lobjet le plus
simple auquel puisse sappliquer la mthode Print est la feuille.
Vous pouvez, ds maintenant, vous exercer la pratique de Print, sans construire une
application complte. Ouvrez un nouveau projet, puis double-cliquez sur la fentre
Form1 pour afcher la fentre Code. Puisque le projet vient juste dtre cr, les seuls
objets disponibles sont la feuille Form1 et la procdure gnrale qui contient la section
de dclarations. Toutes les procdures prdnies que la feuille peut reconnatre sont
proposes dans la liste droulante Procdure. Slectionnez Click dans cette liste, puis
saisissez le code du Listing 11.1. (Comme toujours, Visual Basic insre automatiquement les lignes dencadrement ; vous ne devez donc taper que le corps de la procdure.)
353
<
:
Partie II
Excutez le programme. La feuille safche, mais rien ne se passe tant que vous ne
cliquez pas dessus. Ce qui est tout fait normal, puisque le code est inclus dans la sousroutine Form_Click (). Cliquez plusieurs fois. Le rsultat devrait ressembler la
Figure 11.2.
Figure 11.2
La mthode Print afche
la sortie directement
sur la feuille.
Print est lune des manires les plus simples dafcher des informations. Pour afcher
une chane quelconque sur une feuille de votre programme, il suft de faire prcder
Print du nom de la feuille, le tout spar par un point. Voici le format de la mthode
Print applique une feuille :
frmFormName.Print DataToPrint
>
:
354
la chane sur la sixime colonne. Si vous terminez linstruction Print par un pointvirgule, linstruction Print suivante afchera le texte la suite, sur la mme ligne.
Listing 11.2 : Le point-virgule empche les sauts de lignes
1:
2:
3:
4:
5:
6:
Remarquez le point-virgule.
Visual Basic
Visual Basic
Visual Basic
Visual Basic
Visual Basic
Visual Basic
Le code force Print sauter cinq espaces avant dafcher le premier Visual Basic.
Aprs deux autres espaces, la seconde instruction Print afche galement Visual
Basic. Chaque fois que vous cliquez, la procdure vnementielle se rpte.
Si lon emploie Tab() au lieu de Spc(), la sortie commencera la colonne spcie dans
largument entre parenthses. Spc() force linstruction Print suivante sauter un
certain nombre despaces, alors que Tab() ordonne au Print suivant de commencer
une colonne prcise. Le Listing 11.3 donne un exemple.
Listing 11.3 : Espacement de la sortie de Print laide des fonctions Tab() et Spc()
A la ligne 5, Tab() spcie les colonnes utiliser, tandis qu la ligne 6, Spc() spcie
un certain nombre despaces sauter.
Voici la sortie de cette procdure :
*
*
Visual Basic
Visual Basic
Visual Basic
Visual Basic
La mthode Print peut galement servir insrer des lignes vierges sur une feuille.
Examinez le code du Listing 11.4.
355
<
:
Partie II
Les lignes 11 13 insrent des lignes vierges parce que la mthode Print nenvoie pas de
donnes.
>
:
356
La plupart sont de nature graphique et particulirement utiles pour les sorties imprimantes (nous en reparlerons au Chapitre 13).
Tableau 11.5 : Les valeurs de ScaleMode dterminent les coordonnes
de la sortie Print
Constante nomme
Valeur
Echelle
vbUser
vbTwips
vbPoints
vbPixels
vbCharacters
vbInches
vbMillimeters
1 mm.
vbCentimeters
1 cm.
vbHimetric
vbContainerPosition
vbContainerSize
10
Pour le texte, la valeur de ScaleMode la plus courante est vbCharacters. Ainsi, si CurrentX
et CurrentY ont toutes les deux la valeur 5, la prochaine sortie Print commencera
colonne 5, ligne 5. Lorigine pour la proprit ScaleMode est le coin suprieur gauche de la
feuille (coordonnes 0, 0). La procdure vnementielle Click du Listing 11.5 exploite
les proprits ScaleMode, CurrentX et CurrentY.
357
<
:
Partie II
La ligne 3 affecte ScaleMode la constante VbCharacters qui spcie lchelle caractre. La sortie du Listing est reproduite en Figure 11.3. Vous pouvez remarquer que la
sortie du second Print safche plus haut sur la feuille que la sortie du premier.
Figure 11.3
CurrentX et CurrentY
positionnent le curseur
texte de la mthode Print.
>
:
358
Pour bien comprendre la cration de proprits personnalises, rien de mieux quun exemple. Crez un nouveau projet et congurez-le selon les spcications du Tableau 11.6.
Cette petite application montre comment les valeurs de ScaleMode dterminent les coordonnes de la sortie Print.
Tableau 11.6 : Les coordonnes de Print sont modies par les valeurs
de ScaleMode
Contrle
Proprit
Valeur
Feuille
Name
frmTitle
Feuille
Caption
Titre
Feuille
Height
3720
Feuille
StartUpPosition
2-CenterScreen
Feuille
Width
3975
Bouton de commande
Name
cmdTitle
Bouton de commande
Caption
&Voir le titre
Bouton de commande
Height
495
Bouton de commande
Left
1320
Bouton de commande
Top
1200
Bouton de commande
Width
1215
359
<
:
Partie II
1:
2:
3:
4:
5:
6:
7:
La proprit BottomTitle nest pas vraiment une proprit. Sa valeur reste contenue
dans la variable publiques trTitle. Mais, grce la procdure Property Get, le
programme ny voit que du feu et traite BottomTitle comme une proprit normale.
En vrit, la valeur de la proprit est une valeur de variable.
>
:
360
6:
Largument pass est la valeur que
7:
le programme stocke dans BottomTitle.
8:
strTitle = strTitleEntered
9:
10:
La sortie suivante saffichera au bas de la feuille.
11:
frmTitle.CurrentY = (frmTitle.Height - 600)
12:
13:
Si la feuille est si petite que mme une seule
14:
ligne ne rentre pas, ne rien faire.
15:
If frmTitle.CurrentY < 600 Then
16:
Exit Property
17:
Else
18:
Affiche sur la feuille la valeur de proprit.
19:
Print strTitle
20:
End If
21: End Property
La ligne 8 affecte la variable publique largument pass la procdure. Quel que soit
le point du programme o une valeur est affecte la proprit BottomTitle, cette
procdure sexcute pour passer la valeur comme argument.
Les lignes 11 et 15 rglent lafchage du titre. La ligne 11 fait en sorte que le libell
safche 600 twips du bas de la feuille, quelle que soit la taille dnie en cours
dexcution par lutilisateur. Si lutilisateur a rtrci la fentre au point que mme
une seule ligne ne puisse apparatre, la ligne 16 annule toute la procdure. Tant que
la ligne de texte rentre sur la feuille, la ligne 19 afche la valeur la position
CurrentY. (CurrentX vaut 0, soit le bord gauche de la fentre. Ici, le code na jamais
modi CurrentX.)
361
<
:
Partie II
ce
Astu
Ds lors que vous avez crit les procdures Property Get et Property Let,
la proprit BottomTitle fait partie intgrante de la liste des proprits de
la feuille. Bien que la fentre Proprits ninclura pas toujours la nouvelle
proprit, ce sera le cas de toutes les autres listes de proprits. Dans la
Figure 11.4, on sapprte affecter une valeur lune des proprits de la
feuille ; le menu contextuel qui safche propose bien la proprit BottomTitle. La nouvelle proprit peut tre utilise comme les autres, par la
grce des procdures Property Get et Property Let.
Figure 11.4
La proprit BottomTitle apparat dans
le menu contextuel
de la fentre Code.
Nouvelle
Proprit
5. Lorsque vous lancez lapplication et cliquez sur le bouton de commande, lvnement Click de ce contrle se produit, et la procdure vnementielle Click
sexcute. La procdure vnementielle Click affecte le littral chane "Nouvelle
proprit", la proprit BottomTitle, et les procdures Property soccupent du
reste.
>
:
362
Les applications dveloppes en mode MDI peuvent devenir assez complexes. La plupart
des applications commerciales sont de type multidocument. Les programmes dcrits dans
la suite de cet ouvrage, plus puissants et exploitant des chiers et des contrles supplmentaires, seront presque toujours des applications MDI.
Plutt que de cliquer du bouton droit sur la fentre Projet pour ajouter une feuille, vous
pouvez aussi choisir, dans le menu Projet, la commande Ajouter une feuille. Visual Basic
afche alors la bote de dialogue Ajouter une feuille (voir Figure 11.5). Vous pouvez choisir entre plusieurs types de feuilles, ou choisir dans la liste propose longlet Existant.
Si vous double-cliquez sur licne Form, Visual Basic ouvre une nouvelle feuille standard.
Chaque feuille ajoute est automatiquement nomme Form2, Form3, etc. Il convient de
donner aux feuilles des noms plus explicites ds la premire tape de la cration.
Info
363
<
:
Partie II
Figure 11.5
Slectionnez le type
de feuille ajouter.
364
Figure 11.6
Les applications
MDI contiennent de
multiples fentres
de donnes.
Info
Une application SDI peut contenir plusieurs feuilles. MDI signie simplement que lapplication peut inclure une ou plusieurs feuilles lles, chacune
contenant un jeu de donnes particulier. Dans une application MDI, les
diverses feuilles apparaissent dans une feuille de contrle (on parle aussi de
feuille parent ou de feuille principale), et ne peuvent safcher que dans les
limites de cette feuille de contrle. Une application SDI peut contenir de
multiples feuilles, mais aucune nest considre comme la lle dune autre. Si
votre application est destine traiter un seul jeu de donnes la fois (un
seul chier client ou le chier paye dun seul employ, par exemple), ou si
elle ne traite pas de donnes en dehors des informations de contrle du
programme, alors le mode SDI est le plus indiqu.
Terminologie MDI
Pour exploiter adquatement le mode MDI, vous devez en connatre la terminologie.
La feuille principale qui fait ofce de toile de fond pour les autres feuilles, est souvent
dsigne comme feuille parent ou fentre parent. La fentre parent est le rceptacle qui
contient une ou plusieurs fentres lles. Dans Microsoft Word, par exemple, larrireplan gris, avec ses barres de menus, dtat et doutils, est la fentre parent. Chaque
document Word ouvert safche dans une fentre lle lintrieur de la fentre parent ;
les fentres lles ne peuvent sortir des limites de la fentre parent.
365
<
:
Partie II
Cette fentre parent qui impose ses limites aux fentres lles ne peut contenir que deux
types de contrles :
Si lutilisateur rduit une fentre lle, licne ou le bouton correspondant safche au bas de la fentre parent, mais pas sur la Barre des tches. Les fentres
lles ne peuvent jamais dpasser les frontires de la fentre parent ; les limites
de la fentre parent sont les limites absolues de toutes les fentres lles.
>
:
366
Dans les projets MDI construits par lassistant Cration dapplications, les multiples
fentres lles sont cres partir de la commande Nouveau du menu Fichier. Lorsque
lutilisateur slectionne la commande Fichier, Nouveau (procdure vnementielle
mnuFileNew .Click()), le code du Listing 11.8 sexcute.
Listing 11.8 : Cration dune variable de rfrence pointant vers la fentre lle
1:
2:
3:
4:
5:
6:
7:
8:
9:
Ce code est un peu complexe, mais vous en savez dj assez pour le comprendre. A la
ligne 2, la variable statique lDocumentCount est locale pour la procdure, mais ne sera
jamais cours de porte. A la premire excution de cette procdure, la valeur de
lDocumentCount est 0 (les variables statiques commencent toujours par l). Si la procdure change la valeur de lDocumentCount (elle lui ajoute 1 chaque excution, ligne 5),
Visual Basic "retient" la nouvelle valeur. Aucune autre procdure ne peut accder
lDocumentCount, et sa valeur reste toujours identique dans cette procdure-ci. La valeur
reste la mme, ce qui ne serait pas le cas pour une variable locale automatique, soit le
contraire dune variable statique. (Toutes les variables que nous avons jusquici dclares
localement taient des variables automatiques.)
Info
La ligne 3 introduit une instruction daffectation dun nouveau genre. En effet, plutt
quune variable, cest une feuille que lon dclare. Lapplication contiendra au
dmarrage la feuille lle frmDocument spcie lors de la cration. Linstruction Dim de
la ligne 3 dclare une variable frmD qui correspond en fait au mme objet que frmDocument. Au lieu de contenir des donnes Integer ou String, frmD pointe vers un objet
document qui a les mmes proprits que frmDocument. frmD est un exemple de contrle
de variable.
Aprs que la variable statique charge de rfrencer les nouveaux documents a t mise
jour (ligne 5), linstruction Set cre un nouveau document et dnit frmD comme
rfrence de ce document. En pratique, frmD est le nouveau document. Linstruction
367
<
:
Partie II
>
:
368
Info
Dans une application MDI, les barres doutils peuvent apparatre sur la
feuille parent seule, ou sur les feuilles lles galement.
Pour ajouter le contrle Toolbar votre Bote outils, choisissez Projet, Composants.
Dans la bote de dialogue Composants qui safche, slectionnez lentre Microsoft
Windows Common Controls 6.0, puis cliquez sur OK. Plusieurs nouveaux outils
apparaissent alors dans la fentre Bote outils. Positionnez le pointeur de la souris sur
chacun deux pour en connatre le nom.
Pour crer des barres doutils, voici la procdure gnrale suivre :
1. Double-cliquez sur le contrle Toolbar de la Bote outils pour insrer une barre
doutils en faut de la feuille. (Pour que le contour de la barre doutils soit visible,
lafchage de la grille doit tre activ.) La barre doutils stend automatiquement
sur toute la largeur de la feuille, quelle que soit cette largeur. Ce qui vous pargne au
moins le rglage des dimensions.
2. Pour que les boutons de votre barre doutils puissent prsenter des images, et non
seulement du texte, il faut aussi ajouter la feuille le contrle ImageList. ImageList
fait partie des contrles conjoints qui viennent avec Toolbar lorsque vous ajoutez
loutil Microsoft Windows Custom Controls 6.0. Le contrle ImageList contiendra les
images que vous disposerez sur la barre doutils. La disposition du contrle ImageList
sur la barre doutils est indiffrente. Ce contrle napparat pas sur la feuille lors de
lexcution. Sa seule fonction est dafcher les icnes des diffrents boutons de la
barre doutils.
369
<
:
Partie II
Info
>
:
370
Figure 11.9
Le contrle Toolbar
a lui aussi ses Pages
de proprits.
ce
Astu
Figure 11.10
Vous pouvez
autoriser lutilisateur
personnaliser
la barre doutils.
371
<
:
Partie II
Les coolbars
Les coolbars sont une nouveaut de la version 6 de Visual Basic. La Figure 11.11
montre une coolbar Internet Explorer. Grce une "poigne" spciale, lutilisateur peut
faire coulisser la barre vers la droite comme vers la gauche. Les coolbars vous permettent dinclure sur une mme barre une profusion de boutons, que lutilisateur masque ou
afche loisir en faisant glisser la poigne.
Figure 11.11
La coolbar,
coulissante, permet
de masquer et
dafcher les icnes
volont.
Info
Pour ajouter une coolbar la feuille, la procdure est la mme que pour la barre doutils.
Il faut ajouter le contrle ImageList, puis associer chaque image la coolbar, laide de
la valeur Key. Linstallation des coolbars est plus simple, car elle exige moins de rglages de proprits.
Pour ajouter une coolbar, suivez ces tapes :
1. Pour ajouter le contrle ImageList votre Bote outils, choisissez Projet, Composants,
puis cochez loption Microsoft Windows Common Controls 6.0. Pendant que vous y
tes, cochez loption Microsoft Windows Common Controls-3 6.0, an dajouter
galement le contrle Coolbar. Cliquez sur OK. Les contrles ImageList et Coolbar
apparaissent sur votre Bote outils.
2. Double-cliquez sur le contrle ImageList pour ajouter une liste dimages. La position du contrle sur la barre na aucune importance, puisque ce contrle napparatra
pas sur la feuille lors de lexcution. (Sa seule fonction sera dafcher les icnes sur
la coolbar.)
3. Double-cliquez sur la proprit (Personnalis) du contrle ImageList pour afcher
la bote de dialogue Pages de proprits.
4. Cliquez sur longlet Images.
>
:
372
5. Cliquez sur le bouton insrer une image. La bote de dialogue Slectionner un dessin
permet de spcier le chemin daccs du chier graphique qui servira de premire
icne.
6. Slectionnez, par exemple, une image bitmap du dossier Graphics de Visual Basic.
Lorsque vous double-cliquez sur le chier, la bote de dialogue se referme, et
limage apparat au dbut de la liste (voir Figure 11.12).
Figure 11.12
La premire image
apparat dans la liste
ImageList.
Premire
image
373
<
:
Partie II
Figure 11.13
Les Pages de
proprits facilitent
le paramtrage
de la coolbar.
Description
Orientation
Picture
ForeColor
BackColor
BandBorders
Spcie si des lignes apparatront pour sparer les bandes, dans le cas dune
coolbar plusieurs bandes.
FixedOrder
VariantHeight
ntion
Atte
>
:
374
Vous ne verrez pas les images sur la coolbar aprs avoir ferm la bote de
dialogue Pages de proprits. Les images ne safchent qu lexcution.
Description
Child
Style
UseCoolbarPicture
Picture
Caption
Width, MinWidth,
MinHeight
Key
Tag
EmbossPicture
UseCoolbarColors
375
<
:
Partie II
En rsum
Ce chapitre vous a expliqu comment on programme les feuilles, laide de quels
vnements, proprits et mthodes. En tant quarrire-plan de lapplication, la feuille
est un lment central de la programmation. Les feuilles multiples peuvent tre rfrences
de plusieurs faons. Mais les collections Forms que nous avons dcouvertes aujourdhui,
reprsentent sans doute la technique la plus simple et la plus able.
Vous pouvez paramtrer les diverses proprits de la feuille, mais galement crer vos
propres proprits de feuille. Une fois la nouvelle proprit ajoute, le code peut dnir
et lire ses valeurs comme il le ferait pour une proprit normale.
La programmation multidocument (MDI) est un peu laborieuse, mais elle permet
dobtenir des applications complexes, dans lesquelles chaque fentre a son propre jeu de
donnes. Vous pouvez commencer la cration de vos programmes MDI par lassistant
Cration dapplications, puis complter les dtails.
Les contrles Toolbar et Coolbar enrichissent vos applications. La barre doutils permet
lutilisateur daccder aux commandes courantes en cliquant simplement sur des
boutons. Pour que ces boutons afchent des icnes, vous devez spcier les chiers
graphiques correspondants dans la liste du contrle ImageList. Les coolbars sont des
barres doutils coulissantes qui permettent lutilisateur de faire place dautres
boutons ou lments. Les barres doutils et coolbars peuvent tre proposes sous formes
doptions du menu Afchage, an que lutilisateur choisisse ce qui lui convient.
Le chapitre suivant explique comment utiliser le disque dur comme source de donnes
externe pour les applications Visual Basic.
Questions-rponses
Q Pourquoi dois-je membarrasser du contrle ImageList pour pouvoir afcher
des icnes sur une barre doutils ou une coolbar ?
R Les contrles Toolbar et Coolbar ont t conus pour fonctionner avec le contrle
ImageList. Cest aussi simple que a. Les dveloppeurs Microsoft auraient pu vous
permettre daffecter directement les icnes dans la liste des proprits de la barre
doutils ou de la coolbar. Il nen est pas ainsi. Les icnes afches correspondent
des lments indexs dans la liste dimages. Mais cela a un avantage : vous pouvez
dnir sur une feuille plusieurs contrles ImageList et les employer comme . Par
exemple, vous pouvez utiliser une liste dimages pour les boutons de la barre
doutils lorsque ces boutons sont actifs et disponibles, et une autre liste dimages
>
:
376
lorsque ces boutons sont inactifs (parce que lutilisateur effectue une tche telle
que les boutons de la barre doutils ne doivent pas tre disponibles). Il suft pour
cela de changer le nom de la liste dimages dans la proprit ImageList de la barre
doutils ou de la coolbar ; Visual Basic basculera automatiquement vers lautre jeu
dicne.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre. Mais galement des
exercices qui vous permettront de mettre en pratique ce que vous avez appris. Il convient
de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant.
Vous trouverez ces rponses lAnnexe A.
Quiz
1. Comment lvnement Resize permet-il dassurer le centrage des contrles sur la
feuille ?
2. A quoi sert la proprit ScaleMode ?
3. Quelle est la valeur du premier indice lorsquon travaille sur une collection dobjets
prdnie ?
4. Une application SDI ne peut contenir plusieurs feuilles. Vrai ou faux ?
5. Quelle est la diffrence entre une application SDI et une application MDI ?
6. O afche-t-on gnralement les barres doutils sur une feuille ?
7. Quel contrle contiennent les icnes de la barre doutils ?
8. Pourquoi lemplacement du contrle ImageList sur une coolbar na-t-il aucune
importance ?
9. Quelle est la diffrence entre Spc() et Tab() ?
10. Comment insrer une ligne vierge avec Print ?
377
<
:
Partie II
Exercices
1. Ajoutez votre Bote outils les contrles Toolbar, Coolbar et ImageList.
2. Dcrivez la sortie des instructions suivantes :
Form1.Print "Ligne 1";
Form1.Print "Ligne 2"
3. Lancez lassistant Cration dapplications pour crer une application de style Explorateur, puis excutez le programme gnr.
4. Ecrivez un code qui afche sur une feuille les nombres 1 100. Sparez chaque
nombre dun espace. Nutilisez aucun contrle pour la sortie. Incluez le code dans
une procdure vnementielle Click qui dclenchera la sortie.
5. Ecrivez une procdure qui calcule le nombre total de contrles contenus dans toutes
les feuilles dune application, puis afche le rsultat.
>
:
378
Chapitre
12
379
Partie II
Linstruction Open
Les chiers squentiels et les chiers alatoires ont certaines choses en commun.
Notamment, linstruction Open permet douvrir lun comme lautre type de chiers. Le
type daccs-chier opr par Open dpend de largument spci dans linstruction.
Open rserve un gestionnaire de chier, ou canal, pour lire ou crire dans un chier.
Linstruction Open associe au canal un numro. Ds que ce canal est ouvert, le ux de
donnes peut couler. Du mode selon lequel vous ouvrez le numro de chier lecture,
criture ou les deux dpendent les modalits du ux de donnes entre le chier et
lordinateur.
ition
Dfin
Info
>
:
380
Insistons sur ce point : une fois quun numro didentication est attribu au
chier de donnes, le programme nappelle plus jamais, pour ainsi dire, le
chier par son nom.
Deux arguments sont obligatoires dans linstruction Open : le nom du chier et son
numro. Les autres arguments sont optionnels. Voici une instruction Open "toute nue",
incluant les seuls arguments obligatoires :
Open "fichier.txt" As #1
Cette instruction ouvre fichier.txt comme chier numro 1. Cest ce numro qui
servira de rfrence pour toute entre ou sortie. Le chier est ici ouvert en accs alatoire Random est le mode par dfaut quand largument Mode nest pas spci. Toutes
les commandes que nous tudierons aujourdhui sappliquent aux chiers texte. Aussi
rencontrerez-vous surtout les extensions les plus courantes pour de tels chiers : .txt et
.dat.
Description
Append
Binary
Input
Output
Random
381
<
:
Partie II
Largument For Mode, nous lavons dit, nest pas obligatoire dans linstruction Open. Si
vous ne spciez pas de mode, Visual Basic opre automatiquement en mode Random,
et va mme jusqu insrer For Random pour vous. Les instructions suivantes illustrent les
diffrents modes daccs aux chiers :
ce
Astu
>
:
382
LockType peut prendre les valeurs Shared, Lock Read, Lock Write et Lock Read Write.
Shared permet tous les utilisateurs daccder simultanment au chier. Lock Read
verrouille le chier de sorte que seul lutilisateur qui est en train de le lire puisse y accder. Lock Write fait de mme pour lutilisateur qui est en train dcrire dans le chier.
Lock Read Write verrouille le chier pour tous les utilisateurs autres que celui qui lit ou
crit dans le chier.
La longueur denregistrement
La longueur spcie par largument Len = intRecordLength dnit, pour les chiers
daccs alatoire, la taille des enregistrements de donnes quils recevront du
programme. Cette taille doit tre spcie pour tout accs aux enregistrements dun
chier. Le premier enregistrement dun chier commence la position 1, et tous les
enregistrements subsquents seront crits des positions incrmentes de 1. La postion
dans le chier dun enregistrement donn est N intRecordLength, o N est le numro
de lenregistrement.
ition
Dfin
Un enregistrement est une ligne logique qui, dans un chier, contient un jeu
de donnes complet. Dans un chier dinventaire, par exemple, chaque
caractristique dun lment (descriptif, prix, quantit, etc.) constituerait un
enregistrement.
On accde aux enregistrements un peu comme on accde aux lments dun tableau de
variables. De mme que le premier lment dun tableau est dclar comme Array(0),
le premier lment dun chier est stock lenregistrement numro 1. Pour tirer le
meilleur parti de cette symtrie entre les indices de tableaux et les numros denregistrements, spciez Option Base 1 dans la section de dclarations, ou indexez vos lments
de tableaux partir de 1.
383
<
:
Partie II
Ainsi, FreeFile() permet de sassurer quun numro de chier nest pas dj attribu.
Cette attention peut sembler inutile pour une petite application qui ne traite que quelques chiers ; pourtant, mme dans des cas pareils, FreeFile() aide prvenir les
erreurs.
ntion
Atte
Il vaut mieux viter dinclure FreeFile dans une instruction Open, comme
ici :
Open strFileName For Output As FreeFile()
Linstruction Close
Tous les chiers ouverts avec Open doivent, tt ou tard, tre referms. Cest le rle de
linstruction Close. Cette instruction naccepte pour seuls paramtres que le numro des
chiers fermer. Voici le format complet de Close :
Close # intFileNumber[, intFileNumber2][,...intFileNumberX]
On peut spcier, dans une mme instruction Close, autant de numros que ncessaire.
Si aucun numro nest spci, tous les chiers ouverts sont ferms. Cest, par exemple,
un bon moyen de refermer proprement lapplication.
Le code du Listing 12.1 ouvre deux chiers squentiels lun en lecture, lautre en
criture en utilisant le prochain numro disponible, puis les referme.
Listing 12.1 : FreeFile() permet dobtenir un numro de chier libre
1: Dim intReadFile As Integer, intWriteFile As Integer
2: Gre le fichier dentre.
3: intReadFile = FreeFile Obtient le numro du premier fichier.
>
:
384
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
En ne refermant pas tous les chiers ouverts, vous vous exposez au risque
certes limit par les performances des matriels modernes dune perte de
donnes. Si la machine est brutalement mise hors tension, les chiers encore
ouverts peuvent tre endommags. Vous devez donc avoir soin de refermer
un chier dont vous navez plus besoin ; dans tous les cas, le systme sen
chargera la fermeture de lapplication.
Une mme instruction Close peut, comme on la vu, refermer autant de chiers que lon
veut. Cette simple ligne ferme tous les chiers ouverts :
Close
Les deux lignes suivantes, en revanche, ne referment que deux chiers prcis :
Close 3
Close 6
En spciant dans Close les numros de chiers, vous ne refermez que les chiers indsirables, mais pouvez continuer travailler sur les autres.
385
<
:
Partie II
En crant un chier de type squentiel, vous spciez que laccs ce chier devra se
faire squentiellement, cest--dire que lapplication devra y lire et y crire en allant du
dbut la n. Cette obligation de lire et dcrire squentiellement est la plus grande
faiblesse des chiers squentiels.
ition
Dfin
Un chier squentiel est un chier dans lequel on lit et crit selon lordre
allant du dbut la n.
Linstruction Print #
Pour quun programme puisse utiliser un chier, il doit dabord louvrir. Il faut ensuite lui
envoyer des donnes. Print # est linstruction la plus couramment employe cet effet.
Print # ne peut crire que dans les chiers daccs squentiel. En voici le format :
Print #intFileNumber, [OutputList]
Ici, intFileNumber est le numro du chier ouvert dans lequel on veut crire. OutputList peut avoir les valeurs suivantes :
[Spc(intN1) | Tab[(intN2)]] [Expression] [charPos]
ce
Astu
Spc() et Tab() fonctionnent avec Print # de la mme faon quelles fonctionnent avec linstruction Print tudie au chapitre prcdent.
Spc() ou Tab(), il faut choisir. Vous ne pouvez utiliser les deux en mme temps.
Le Tableau 12.2 dtaille les composants de OutputList.
Info
Tab() peut tre incluse dans charPos. Elle a alors le mme rle quen dbut
dinstruction Print #. Si vous omettez charPos, le prochain caractre apparatra sur la ligne suivante du chier.
La procdure du Listing 12.2 ouvre un chier nomm Print.txt, y crit les chiffres 1
5, puis referme proprement le chier.
>
:
386
Description
Spc(intN1)
Insre des espaces dans la sortie, intN1 tant le nombre despaces insrer.
Tab(intN2)
Expression
CharPos
Si vous excutez ce code, vous verrez safcher plusieurs botes de message indiquant la
progression de la procdure. La procdure indique quelle a ouvert le chier (ligne 10),
puis elle crit dans le chier (ligne 13), puis montre le rsultat (ligne 14). Enn, elle
ferme le chier (ligne 17) et vous en fait part, avec un contentement non dissimul
(ligne 19).
387
<
:
Partie II
Pour vrier la sortie, ouvrez le chier Print.txt dans le Bloc-notes. Voici ce que vous
devriez voir :
1
2
3
4
5
Le Listing 12.2 met en uvre une instruction Print # simple (line 13). Aucun argument
nayant spci la position du point dinsertion, la procdure crit chaque chiffre sur
une ligne diffrente.
Crer et crire dans un chier, a ne servirait pas grand-chose si lon ne pouvait obtenir
des informations en retour. Cest ce que nous ferons dans la section suivante.
Linstruction Input #
Vous criviez ? Eh bien lisez maintenant. Linstruction Input # permet de lire les
donnes squentielles. Les donnes squentielles doivent tre lues squentiellement,
cest--dire dans lordre et le format dans lesquels elles ont t crites. Voici le format
de Input # :
Input # intFileNumber, Variable1[, Variable2][, ...VariableN]
Input # requiert un numro de chier ouvert, ainsi quune variable qui stocke les
donnes lues. Linstruction Input # doit respecter le format de linstruction Print # qui a
servi crire dans le chier. Si les donnes crites par Print # taient dlimites par des
virgules, ces virgules doivent se retrouver dans Input #.
Info
Pour quune srie de variables crites sur une seule ligne puissent tre correctement lues par Input #, il faut soit lcrire avec Write plutt que Print #,
soit insrer manuellement des virgules dlimitatrices. Dans une variable
numrique, Input # suspend sa lecture chaque espace, virgule ou caractre
de n de ligne. Dans une chane, Input # suspend sa lecture chaque virgule
ou caractre de n de ligne, sauf si la chane contient des guillemets.
Linstruction suivante lit, dans un chier squentiel ouvert, cinq variables places sur
une mme ligne :
Input #intFileNumber V1, V2, V3, V4, V5
Pour pouvoir lire les donnes, Input # doit reprendre le format de linstruction Print #
qui a servi crire dans le chier.
>
:
388
Le fonctionnement de Input # est assez simple : lopration quelle effectue est lexact
reet de lopration Print # correspondante. La prochaine section prsente linstruction
Write #, qui permet dcrire des chiers de donnes dans un format plus gnral que
Print #, de sorte que lon na pas se soucier de la cohrence absolue de Input # avec
linstruction de sortie initiale.
Linstruction Write #
Write # est donc une autre commande dcriture squentielle. Elle ne diffre de Print #
que sur quelques points. Dabord, toutes les donnes crites par Write # sont dlimites
par des virgules. Ensuite, Write # place automatiquement les donnes String entre
guillemets (les guillemets apparaissent dans le chier), place automatiquement les
donnes Date entre caractres dise (#), crit les donnes Boolean sous la forme #TRUE#
et #FALSE#, et envoie les donnes Null et les codes derreurs sous la forme #NULL# et
#Error errorcode#, respectivement. (errorcode est un numro identiant lerreur de
sortie, par exemple un lecteur non trouv. Vous trouverez dans laide en ligne de Visual
Basic une liste des codes derreur et leur signication.)
La dlimitation par virgules est parfois ncessaire pour que les donnes puissent tre
lues par certains tableurs et logiciels de publipostage. Ce format a aussi lavantage de
limiter les risques derreurs la lecture, linstruction Input # ntant pas tenue de reter
exactement linstruction Write # correspondante.
Info
Pour une lecture plus simple et plus able des donnes, utilisez Write #
plutt que Print #.
Ici, OutputList est une liste des variables contenues dans le chier qui doivent tre lues
en particulier.
Nous avons expliqu, plus haut, comment linstruction Print # pouvait crire une valeur
par ligne. Print # accepte galement les mmes options de formatage que linstruction
Print simple.
Par exemple, pour crire des valeurs lune aprs lautre sur une mme ligne, il suft de
placer un point-virgule aprs la variable intCtr (voir Listing 12.3).
389
<
:
Partie II
Les chiffres sont sur la mme ligne, spars par des espaces. Print # insre ces espaces
la place du signe plus imaginaire qui prcde les nombres positifs.
Nhsitez pas exprimenter les diffrents paramtres de Print # an den bien saisir le
fonctionnement.
Une fois les donnes crites dans un chier, la lecture de ces donnes a souvent lieu
dans une autre procdure, voire une autre application. Les procdures du Listing 12.4
crivent les donnes dans un chier, puis lisent ces mmes donnes au travers de
variables.
Listing 12.4 : Ecriture et lecture dans un chier au sein dune mme procdure
>
:
1:
2:
3:
4:
5:
6:
7:
8:
390
9:
For intCtr = 1 To 5
10:
Print # intFNum, intCtr;
Ecrit le compteur de boucle.
11:
Next intCtr
12:
13:
Close # intFNum
14: End Sub
15:
16: Private Sub cmdFileIn_Click ()
17:
Lit le fichier squentiel.
18:
Dim intCtr As Integer
Compteur de boucle.
19:
Dim intVal As Integer
Valeur lue.
20:
Dim intFNum As Integer Numro de fichier.
21:
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
22:
intFNum = FreeFile
23:
Open "Print.txt" For Input As #intFNum
24:
25:
For intCtr = 1 To 5
26:
Input # intFNum, intVal
27:
Affiche les rsultats dans la fentre Excution.
28:
intMsg = MsgBox("Lecture du chiffre " & intVal & " dans Print.txt")
29:
Next intCtr
30:
31:
Close # intFNum
32:
intMsg = MsgBox("Le fichier Print.txt file est maintenant ferm")
33: End Sub
La premire procdure du Listing 12.4 crit les donnes dans le chier, donnes qui sont
ensuite lues par la procdure cmdFileIn_Click().
Examinez maintenant la procdure du Listing 12.5 qui cre un chier nomm
Write.txt.
Listing 12.5 : Ecriture dans un chier squentiel avec Write
1: Private cmdFile_Click ()
2:
Dim intCtr As Integer
Compteur de boucle.
3:
Dim intFNum As Integer Numro de fichier.
4:
intFNum = FreeFile
5:
6:
Open "c:\Write.txt" For Output As #intFNum
7:
8:
For intCtr = 1 To 5
9:
Write # intFNum, intCtr;
Ecrit le compteur de boucle.
10:
Next intCtr
11:
12:
Close # intFNum
13: End Sub
391
<
:
Partie II
Excutez cette procdure, puis ouvrez dans le Bloc-notes le chier cr. Vous constaterez
immdiatement la diffrence entre Print # et Write #. Voici le contenu de Write.txt :
1,2,3,4,5,
Si lon navait pas inclus le point-virgule de formatage, chaque chiffre serait apparu sur
sa propre ligne, et il ny aurait pas eu de virgules. (Dans un tel cas, Write # et Print # se
comportent de la mme manire.)
ce
Astu
Info
Plus vous travaillerez sur des chiers squentiels, plus vous dcouvrirez de
"trucs" propres amliorer le code. Il peut tre utile, par exemple, dindiquer en guise de premier fragment de donnes le nombre total de valeurs
que contient le chier. Les programmes qui liront ces donnes, pourront
ainsi exploiter cette information dans des boucles, etc.
Aprs tout ce que vous venez dingurgiter, cela va sans doute vous
surprendre : les programmeurs Visual Basic nexploitent que trs rarement
les chiers squentiels. Cela ne signie pas pour autant que vous avez perdu
votre temps, car les principes tudis dans le cadre des donnes squentielles
sappliquent en fait tous les autres types daccs. Ouf !
Comme laccs squentiel, laccs alatoire nest aujourdhui plus gure utilis dans sa
forme "pure". Les contrles daccs aux donnes et procdures de traitement de chiers
plus avancs lui font une rude concurrence. Toutefois, les techniques daccs aux
chiers de base de donnes reposent, en grande partie, sur les principes que vous allez
maintenant tudier.
>
:
392
Laccs alatoire
Le traitement des chiers alatoires ressemble, en beaucoup de points, au traitement de
chiers squentiels. Les instructions Open et Close, par exemple, fonctionnent de la
mme manire. Seul change le mode daccs.
Info
Si vous ne spciez pas le mode daccs au chier, Visual Basic utilise par
dfaut le mode alatoire, et insre lui-mme largument For Random. Si,
par exemple, vous tapez :
Open "Random.txt" As #1
393
<
:
Partie II
>
:
394
Info
Un type de donnes personnalis est compos de types existants ventuellement mme dautres types personnaliss.
Cest laide de linstruction Type que vous crez vos propres types de donnes. En
voici le format :
[Private | Public] Type TypeName
:
End Type
Le nom du type crer (TypeName) suit le mot cl Type. Ce nom peut tre tout sauf un
mot rserv, un mot cl ou un nom de variable dclare. Si, par exemple, on a dj
dclar une variable nomme Client, le nouveau type de donnes ne pourra sappeler
Client.
Tous les nouveaux types doivent tre dclars au niveau module. On ne peut les dclarer
lintrieur dune procdure. Le type peut aussi tre dclar dans le module de feuille,
mais alors comme Private, cest--dire quil ne sera reconnu que dans ce module de
feuille particulier.
Examinez le code du Listing 12.6.
Listing 12.6 : Linstruction Type permet de dclarer les nouveaux types de donnes
1:
2:
3:
4:
5:
6:
Ce code cre un nouveau type nomm UserType. Ce nouveau type contient deux chanes,
strFName et strLName. La ligne 6 dclare la variable Names comme type UserType.
Info
Ici, UserType nest pas une variable, mais bien le type que lon a dni. Le
nom de la variable est Names, et strFName et strLName sont des membres
(ou champs) de cette variable. Le nouveau type est intgr au langage Visual
Basic pour le temps de lexcution du programme. On peut maintenant
dclarer des variables Integer, Boolean ou... UserType.
395
<
:
Partie II
ce
Astu
Les instructions suivantes initialisent et traitent la variable que nous venons de dclarer :
Names.strFName =
Names.strLName =
lblFName.Caption
lblLName.Caption
"Serge"
"Pichot"
= "Prnom : " & Names.strFName
= "Nom : " & Names.strLName
Pour limiter la taille des variables chanes utilises dans une structure, on inclut dans la
dclaration loption * StringLength (o StringLength est la longueur), juste aprs As
String. La chane de longueur xe dnit StringLength comme longueur absolue de la
chane. Cela est ncessaire lorsque les structures doivent tre lues ou crites alatoirement dans un chier. La longueur xe garantit que tous les enregistrements crits auront
la mme taille, an que laccs alatoire se passe sans problme.
Le Listing 12.7 reprend le code du Listing 12.6, mais en imposant aux chanes une
longueur xe.
Listing 12.7 : Les chanes de longueur xe permettent de spcier la longueur
des enregistrements
1:
2:
3:
4:
5:
6:
Les chanes de longueur xe dnissent pour les chanes une taille maximale. Notez que
le contenu de la chane peut ne pas occuper entirement lespace rserv, auquel cas
Visual Basic comble le vide avec des espaces. Ainsi, toutes les variables dclares
comme UserType2 et crites en accs alatoire auront la mme longueur denregistrement, quelle que soit la taille relle des donnes contenues dans la variable.
Les procdures du Listing 12.8 mettent en uvre les principes de laccs alatoire.
Listing 12.8 : Ecriture dans un enregistrement particulier
>
:
1:
2:
3:
4:
5:
396
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:
intFile = FreeFile
Open "c:\Random.Txt" For Random As #intFile Len = 5
La boucle parcourt les numros et crit dans le fichier.
For intCtr = 1 To 5
Put # intFile, intCtr, intCtr Le numro denregistrement correspond
aux donnes.
Next intCtr
Close intFile
End Sub
Private Sub cmdChange_Click()
Cette procdure modifie lenregistrement n3.
Dim intFile As Integer
Numro de fichier disponible.
intFile = FreeFile
Open "c:\Random.Txt" For Random As #intFile Len = 5
Ecrit un nouvel enregistrement n3.
Put #intFile, 3, 9
Value = 9.
Close # intFile
End Sub
Private Sub cmdDisplay_Click()
Cette procdure affiche le fichier
Dim intFile As Integer
Numro de fichier disponible.
Dim intVal As Integer
Valeur lue.
Dim intCtr As Integer
Compteur de boucle.
Dim intMsg As Integer
Valeur de renvoi de MsgBox().
intFile = FreeFile
Open "c:\Random.Txt" For Random As #intFile Len = 5
intMsg = MsgBox("Fichier Random.Txt ouvert...")
La boucle parcourt les enregistrements et les affiche.
For intCtr = 1 To 5
Get # intFile, intCtr, intVal
intMsg = MsgBox("Lecture de " & intVal & " dans Random.Txt")
Next intCtr
Close # intFile
intMsg = MsgBox("Fichier Random.Txt ferm")
End Sub
Notez que linstruction alatoire Open de la ligne 7 utilise loption Len. A la ligne 11,
linstruction Put # crit un enregistrement alatoire avec une longueur de 5 ; cest
loption Len qui spcie cette longueur. Ce paramtre est capital : si la longueur denregistrement ntait pas spcie, Put # et Get # ne sauraient jamais jusquo chercher
397
<
:
Partie II
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Le code du Listing 12.10 initialise ces champs et montre comment on accde aux
champs dans les champs.
>
:
398
Listing 12.10 : Le type de donnes public peut servir dans tous les modules
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Names.strFName = "Serge"
Names.strLName = "Pichot"
Names.typAddr.strStreet = "Clergeot"
Names.typAddr.strCity = "Perrochonville"
Names.typAddr.strZip "99000"
Traite les donnes.
lblFName.Caption = "Prnom : " & Names.strFName
lblLName.Caption = "Nom : " & Names.strLName
lblAddr.Caption = "rue : " & Names.strAddr.strStreet
lblCty.Caption = "Ville : " & Names.strAddr.strCity
lblZip.Caption = "Code postal : " & Names.strAddr.strZip
La Figure 12.1 montre une feuille contenant ces trois zones de liste spciales.
ntion
Atte
399
<
:
Partie II
Figure 12.1
Les trois types de
zones de liste servant
la manipulation
des chiers.
Contrle zone
de liste Lecteur
Info
>
:
400
La zone de liste Fichier afche dabord la liste des chiers contenus dans le
dossier de lapplication. Vous pouvez modier ce comportement par dfaut
en spciant, dans le code, un autre dossier pour la liste Dossier, puis en
liant cette liste la liste Fichier.
RmDir
401
<
:
Partie II
Description
ChDrive strDrive
ChDir strDirectory
Kill strFileSpec
MkDir strDirectory
RmDir strDirectory
Outre les commandes du Tableau 12.3, Visual Basic supporte la fonction Dir() qui
vrie si des chiers existent bien, et la fonction CurDir() qui renvoie le nom du dossier
courant.
Supposons que vous vouliez affecter aux zones de liste Lecteur et Dossier le chemin
C:\MesFichiers. Il suft dinsrer dans la procdure Form_Load() le code suivant :
ChDrive "C:"
ChDir "\MesFichiers"
En safchant sur la feuille, les zones de liste Lecteur, Dossier et Fichier pointeront
toutes vers C:\MesFichiers, plutt que sur le dossier courant de lapplication.
La fonction Dir() requiert un peu plus dexplications. Imaginons que vous vouliez
vrier quun chier nomm VENTES98.DAT existe bien la racine du lecteur D. Vous
pouvez procder ainsi :
If (Dir("c:\VENTES98.DAT")) = "VENTES98.DAT" Then
La fonction Dir() renvoie le nom de chier pass comme argument. Le nom de chier
est renvoy seulement si le chier correspondant rside dans le dossier spci dans
largument. Si Dir() ne renvoie pas le nom de chier, cest que le chier nexiste pas
sur le lecteur dsign.
>
:
402
Dir() renvoie alors le nom du premier chier correspondant aux jokers passs si
pareil chier existe. Une fois passe la premire spcication joker, vous pouvez appeler de nouveau Dir() sans parenthses ni arguments. Visual Basic renverra les noms de
chiers rpondant aux jokers, jusqu ce que le dernier chier soit trouv. Si Dir renvoie
une chane Null (""), vous devez inclure une spcication de chier dans le prochain
appel de Dir() ; autrement, Dir gnrerait une erreur.
Pour affecter la zone de liste Lecteur un lecteur spcique, vous devez dnir la
proprit Drive du contrle comme ceci :
drvDisk.Drive = "d:\"
Pour que le lecteur safche dans la zone de liste Dossier, dnissez la proprit Drive
du contrle laide linstruction suivante :
dirDirect.Drive = drvDisk.Drive
Cette instruction daffectation dnit, dans la liste Dossier, le lecteur spci par lutilisateur. Elle peut tre ajoute la procdure vnementielle drvDisk_Change().
Lorsque lutilisateur change de dossier dans la zone de liste Dossier, lvnement Change
du contrle se produit. Dans la procdure vnementielle Change, vous pouvez dnir le
dossier spci par lutilisateur comme dossier courant laide de linstruction suivante :
ChDir dirDirect.Path
La zone de liste Dossier supporte une mthode daccs un peu particulire : il suft de
la proprit ListIndex. La valeur de ListIndex est -1 pour le dossier slectionn, -2
pour le dossier parent du dossier slectionn, -3 pour le parent du parent, et ainsi de
suite. La valeur de ListIndex est 0 pour le premier sous-dossier du dossier slectionn,
1 pour le sous-dossier suivant, et ainsi de suite.
Pour nafcher que certains chiers dans la zone de liste Fichier, affectez la proprit
Pattern du contrle une chane spciant un ltre :
filFiles.Pattern = "*.vbp; *.frm"
403
<
:
Partie II
Vous pouvez inclure autant de spcications que vous le souhaitez, sous la forme de jokers
inclus entre les guillemets de la chane. La zone de liste Fichier se met immdiatement
jour selon les ltres spcis. Lorsque lutilisateur slectionne un chier, lvnement
Change de la zone de liste Fichier se produit, et le chier slectionn est affect la
proprit FileName. Comme pour la zone de liste Lecteur, le chier slectionn apparat
galement avec une valeur ListIndex de -1.
Si lutilisateur a slectionn un chemin daccs, vous pouvez rpercuter ce choix dans la
zone de liste Fichier laide de linstruction daffectation suivante :
filFiles.Path = dirDirect.Path
En rsum
Ce chapitre vous a appris manipuler les chiers au niveau le plus fondamental. Maintenant que vous matrisez ce bases, vous tes prt affronter les contrles et commandes
de traitement de chiers plus avancs, tels que les fonctionnalits base de donnes de
Visual Basic.
Vous avez galement appris lire et crire dans des chiers squentiels et alatoires.
Ces chiers sont utiles pour stocker des valeurs textuelles. Une fois que lon connat les
commandes, la programmation de ces chiers est relativement simple. Ainsi, linstruction
Write # rete linstruction Read #, et linstruction Get # rete linstruction Put #, etc.
Les contrles de gestion de chiers de la Bote outils, une fois installs et correctement paramtrs dans votre application, permettent lutilisateur de parcourir ses
lecteurs, dossiers et chiers. Ces contrles forment un complment intressant aux
botes de dialogue communes Ouvrir et Enregistre, et permettent dobtenir des informations spciques sur le contenu du disque.
Le chapitre suivant vous enseigne envoyer des donnes vers un autre type de
priphrique : limprimante.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.
>
:
404
Quiz
1. Combien de chiers peut-on fermer avec une mme instruction Close ?
2. Quelle fonction renvoie le prochain numro de chier disponible ?
3. Que se passe-t-il si vous ouvrez un chier en accs squentiel Output et que ce
chier existe dj ?
4. Que se passe-t-il si vous ouvrez un chier en accs squentiel Append et que ce
chier existe dj ?
5. Quel type de chier linstruction suivante ouvre-t-elle ?
Open "Test.dat" For Append As #1
6. Pourquoi les instructions alatoires Open doivent-elles connatre la longueur denregistrement de leurs donnes ?
7. Pourquoi faut-il spcier la longueur absolue des chanes dans un type de donnes
personnalis quand ces chanes doivent tre lues et crites dans un chier alatoire ?
8. Quelle instruction permet de dnir un nouveau type de donnes ?
9. Le code suivant dclare une nouvelle variable nomme CustRec. Vrai ou faux ?
Type CustRec
strFName As String * 10
strLName As String * 15
curBalance As Currency
blnDiscount As Boolean
End Type
10. Quelle est la diffrence entre la fonction Dir() avec arguments et la fonction Dir()
sans arguments ?
Exercices
1. Chasse au bogue : Mauricette a des problmes avec ses chiers. Lorsquelle essaie
de lancer une application contenant linstruction ci-dessous, elle obtient une erreur.
Pouvez-vous lui expliquer pourquoi son instruction ne marche pas ? (On suppose
quun dossier Factures existe bien la racine du lecteur C.)
RmDir "C:\Factures"
405
<
:
Partie II
2. Ecrivez une procdure qui cre un chier squentiel contenant les informations
suivantes : nom, ge et couleur prfre. Ecrivez dans ce chier cinq enregistrements
(chaque enregistrement devant contenir un nom, un ge et une couleur). Utilisez une
seule boucle For pour crire ces informations dans le chier. Conseil : initialisez trois
tableaux, un pour chaque catgorie de donnes.
3. Crez de toutes pices une bote de dialogue semblable la bote de dialogue
commune Ouvrir. Utilisez pour ce faire les zones de liste Lecteur, Dossier et Fichier,
ainsi que des boutons de commande OK et Annuler. Faites en sorte que les listes
Dossier et Fichier se modient chaque fois que lutilisateur slectionne un lecteur ou
un dossier diffrent. (Naturellement, vous vous servirez toujours de la bote de
dialogue commune Ouvrir. Il sagit dun exercice illustrant les relations entre ces
divers contrles.)
>
:
406
PB6
Lire et crire des fichiers
Ce Projet bonus devrait vous permettre dapprofondir votre comprhension de laccs
squentiel. Lapplication que nous vous invitons crer intgre galement le contrle
Common Dialog, sous la forme dune bote de dialogue commune Ouvrir. Mais vous
allez surtout mettre en uvre les procdures de gestion de chiers tudies au
Chapitre 12. Dans cette application, il sagit de visualiser le contenu des chiers. Voici
les tches accomplir :
407
Partie II
Figure PB6.1
Lutilisateur peut
visualiser les chiers
.BAT et .TXT dans
la zone de liste.
Crer linterface
Ajoutez la feuille les contrles dtaills dans le Tableau PB6.1.
Info
Dans le Crateur de menus, vous devez indenter tous les lments sauf le
premier, Fichier, qui constitue le nom du menu. Les lments indents apparatront comme options de ce menu Fichier.
>
:
Contrle
Proprit
Valeur
Feuille
Name
frmFile
Feuille
Caption
Visualiseur de fichiers
Feuille
Height
4620
Feuille
Width
6570
Zone de liste
Name
lstFile
Zone de liste
Height
2205
Zone de liste
Left
720
Zone de liste
Top
1320
Zone de liste
Width
4815
408
Proprit
Valeur
Bouton de commande
Name
cmdColor
Bouton de commande
Caption
&Couleur de fond
Bouton de commande
Height
495
Bouton de commande
Left
2760
Bouton de commande
Top
480
Bouton de commande
Width
1215
Elment de menu 1
Caption
&Fichier
Elment de menu 1
Name
mnuFile
Elment de menu 2
Caption
&Ouvrir
Elment de menu 2
Name
mnuFileOpen
Elment de menu 3
Caption
Elment de menu 3
Name
mnuFileSep1
Elment de menu 4
Caption
&Quitter
Elment de menu 4
Name
mnuFileExit
Common Dialog
Name
comFile
Common Dialog
DialogTitle
Ouvrir un fichier
Common Dialog
InitDir
c:\
Common Dialog
Filter
Texte (*.txt)|*.txt|Batch
(*.bat)|*.bat
Common Dialog
CancelError
True
Common Dialog
MaxFileSize
4096
Pour paramtrer le contrle Common Dialog, double-cliquez sur lentre (Personnalis) de la fentre Proprits. Les Pages de proprits (voir Figure PB6.2) offrent une
mthode plus simple que la saisie des valeurs dans la fentre Proprits.
409
<
:
Partie II
Figure PB6.2
Utilisez la bote
de dialogue
personnalise pour
entrer les proprits
du contrle
CommonDialog.
ce
Astu
Vous naurez pas dnir de proprits lies la couleur. La bote de dialogue Couleur ne ncessite pas de tels rglages avant lexcution du
programme. Les slections de couleur de lutilisateur naffecteront pas les
proprits lis au chier dnies pour le contrle Common Dialog.
Ajouter le code
Le Listing PB6.1 fournit le code vnementiel du projet.
ce
Astu
Cliquez sur le menu Outils, puis choisissez loption Ajouter une procdure.
La bote de dialogue reproduite en Figure PB6.3 safche. Tapez le nom de
la procdure, slectionnez son type et sa porte, et Visual Basic insre automatiquement les lignes demballage. Deux lignes de moins taper, cest
toujours a !
Figure PB6.3
Laissez Visual Basic
insrer la premire
et la dernire lignes
de procdure.
>
:
410
14:
Cette procdure vnementielle sexcute
15:
au premier chargement de la feuille.
16:
17:
Sassure que la feuille est assez grande
18:
pour afficher la zone de liste.
19:
If (frmFile.Width < 400) Or (frmFile.Height < 3500) Then
20:
Masque la zone de liste et
21:
avertit lutilisateur.
22:
lstFile.Visible = False
23:
intMsg = MsgBox("La feuille est trop petite pour afficher le
fichier", _ vbCritical)
24:
Else
25:
Active laffichage de la zone de liste,
26:
au cas o.
27:
lstFile.Visible = True
28:
Ajuste la taille de la zone de liste.
29:
Ajuste la position du bouton de commande.
30:
lstFile.Width = frmFile.Width - 1440
31:
lstFile.Height = frmFile.Height - 2500
32:
cmdColor.Left = (frmFile.Width / 2) - 500
33:
End If
34: End Sub
35:
36: Private Sub mnuFileExit_Click()
37:
Option de fermeture du programme.
38:
End
39: End Sub
40:
41: Private Sub mnuFileOpen_Click()
42:
Dim strFileLine As String
43:
Gre le bouton Annuler.
44:
On Error GoTo comErrorHandler
45:
46:
Affiche la bote de dialogue Ouvrir.
47:
comFile.ShowOpen
48:
Continue si lutilisateur clique sur OK,
49:
passe au gestionnaire derreurs sil clique sur Annuler.
411
<
:
Partie II
50:
51:
Ouvre le fichier slectionn par lutilisateur.
52:
Open comFile.FileName For Input As #1
53:
Vide la zone de liste pour faire de la place.
54:
lstFile.Clear
55:
56:
Lit une ligne complte du fichier.
57:
Line Input #1, strFileLine
58:
lstFile.AddItem strFileLine
59:
60:
Poursuit la lecture et remplit la zone de liste
61:
jusqu ce que la fin du fichier soit atteinte.
62:
Do Until (EOF(1))
63:
Line Input #1, strFileLine
64:
lstFile.AddItem strFileLine
65:
Loop
66:
Ferme le fichier.
67:
Close
68: comErrorHandler:
69:
Ne fait rien si lutilisateur clique sur Annuler.
70: End Sub
Analyse
La premire procdure vnementielle, lignes 1 7, afche le contrle Common Dialog
laide de la mthode ShowColor. Lorsque lutilisateur fait une slection, la ligne 6
ajuste en consquence larrire-plan de la zone de liste et le chier est afch sur un
fond de la couleur choisie. (La couleur sapplique larrire-plan de la zone de liste
mme si aucun chier nest visualis.) Cette couleur restera en arrire-plan tant que
lutilisateur nen slectionnera pas une autre.
A la ligne 9 commence la deuxime procdure vnementielle. Si lutilisateur redimensionne la feuille, la procdure vnementielle Form_Resize() sexcute automatiquement.
(Elle sexcute galement au premier chargement de la feuille.)
Cette procdure dajustement fait en sorte que le bouton de commande et la zone de liste
restent centrs, quelle que soit la taille de la feuille. Si lutilisateur "ratatine" la feuille au
point que la zone de liste ne puisse plus safcher, les deux vnements suivants ont lieu
(ligne 19) :
>
:
La zone de liste est masque. (Sinon, Visual Basic gnrerait une erreur, car il ne
peut faire ce qui lui est demand sur une feuille si petite.)
Lutilisateur est averti par une bote de message que la feuille est trop petite.
412
ntion
Atte
Dans la bote de dialogue Types de chier, lutilisateur peut slectionner les types .TXT
et .BAT (tous les dossiers sont afchs, quelle que soit la slection). Il peut aller
chercher son chier dans nimporte quel dossier de son PC, voire dun autre PC du
rseau.
La ligne 44 dnit le gestionnaire derreur charg de rpondre au bouton Annuler.
Si lutilisateur clique sur Annuler, le code saute la n de la procdure vnementielle,
et laisse tel quel tout le contenu de la feuille.
Quand lexcution du programme a atteint la ligne 52, lutilisateur a slectionn un
chier. La ligne 52 ouvre ce chier en accs squentiel, en mode lecture seule.
Info
413
<
:
Partie II
Line Input # lit une ligne complte (ou enregistrement) depuis le chier, et la stocke
dans la variable chane strLineVar. Si cest Input # qui avait t employe, la ligne
naurait peut-tre pas t lue en entier. En effet, les lignes contiennnent sans doute des
virgules et des espaces, et vous savez que Input # arrte sa lecture chaque fois quun tel
caractre est rencontr mme si cest au milieu de la ligne.
Une fois la premire ligne lue et envoye la zone de liste, la ligne 62 amorce une
boucle qui lira le reste du chier. La fonction EOF() permet de localiser la n dun
chier. Le chier peut contenir plusieurs lignes, et le programme ne peut en connatre
lavance le nombre exact. EOF() renvoie la valeur True lorsque la n du chier est
atteinte. Si True est renvoye, la boucle cesse de lire le chier et le programme poursuit
son excution la ligne 66.
ce
Astu
>
:
414
Chapitre
13
Gestion de limprimante
Vous apprendrez, dans ce chapitre, comment on envoie une sortie vers limprimante. Vous
matrisez dj lenvironnement de dveloppement, connaissez lessentiel du langage et
tes en mesure de crer des applications fonctionnelles. Il sagit maintenant de permettre
ces applications denvoyer des donnes limprimante.
Sachez que linterface dimpression Visual Basic est un peu plus complexe que la
plupart des composants udis jusquici. Imprimer des donnes depuis un programme
Visual Basic est en gnral une opration dlicate. Les sections suivantes dcrivent les
divers outils disponibles cet effet.
Voici ce que nous dcouvrirons aujourdhui :
linstruction Is TypeOf ;
415
Partie II
ce
Astu
La collection Printers tant la liste des imprimantes du systme exploitant lapplication, son contenu change dun systme lautre. Si, entre deux excutions, lutilisateur
dsinstalle une imprimante, la collection Printers en sera modie. Comment accder
aux imprimantes de la collection courante ? Cest ce que nous vous invitons dcouvrir.
Info
>
:
416
Linstruction Set Printer permet de dnir lune des imprimantes comme imprimante
par dfaut. Linstruction suivante dnit comme imprimante par dfaut de Visual Basic
la deuxime imprimante du systme :
Set Printer = Printers(1)
Faites dans laide en ligne une recherche sur une proprit pour obtenir la
liste des constantes nommes quelle supporte.
Description
ColorMode
Copies
CurrentX,
CurrentY
DeviceName
DriverName
417
<
:
Partie II
Description
Duplex
Height
Orientation
Page
PaperBin
PaperSize
Port
PrintQuality
TrackDefault
Width
Zoom
Info
>
:
418
1:
2:
3:
4:
Info
Rappelez-vous que Printer et Form sont des objets Visual Basic. Vous en
apprendrez plus propos des objets au Chapitre 16.
1:
2:
3:
4:
5:
6:
7:
8:
419
<
:
Partie II
Contrle de la sortie
Lobjet Printer permet denvoyer des donnes vers limprimante par dfaut sans se
soucier du type du priphrique ni du port. Pour envoyer une sortie (documents,
images, etc.) vers limprimante, on applique lobjet Printer des mthodes. Lobjet
Printer est dune programmation un peu fastidieuse, mais il permet de dvelopper des
procdures gnralistes qui simplieront la gestion des sorties dans les programmes
subsquents.
ce
Astu
Pour envoyer les donnes une imprimante autre que limprimante par
dfaut, il faut dabord la dnir laide de linstruction Set Printer.
Une fois slectionne limprimante par dfaut, on peut envoyer la sortie vers limprimante de lutilisateur. Cette section explique comment contrler lobjet Printer et diriger
du texte vers limprimante. Vous dcouvrirez, dans le chapitre suivant, des mthodes et
commandes graphiques qui peuvent galement sappliquer lobjet Printer.
Avec lobjet Printer, on construit la sortie. En dautres termes, envoyer une sortie
lobjet Printer ne signie pas imprimer rellement. Ce sont les mthodes NewPage
ou EndDoc qui amorcent rellement limpression. (Si aucune mthode EndDoc na t
applique, limpression se lance automatiquement la fermeture de lapplication.)
En fait, Windows se charge des dtails de limpression. Ainsi, si limprimante na plus de papier ou est hors tension lorsque limpression dmarre,
Windows envoie lutilisateur un message davertissement (voir
Figure 13.1). Celui-ci peut cliquer sur Ressayer sil a rgl le problme, ou
sur Annuler pour dcommander la tche dimpression.
On peut aussi bien envoyer vers limprimante des littraux, des variables, des valeurs de
contrles, etc. En fait, tout ce que lon peut envoyer la feuille avec Print, on peut
lenvoyer lenvoyer lobjet Printer. Voici un exemple :
>
:
420
Figure 13.1
Windows avertit
lutilisateur des
erreurs dimpression.
sngTaxRate = 12.5
strTitle = "Encyclopdie du gibolin"
Printer.Print "Ouvrage achet : " & strTitle
Printer.Print "Montant de la taxe : " & sngTaxRate
ce
Astu
Nous avons vu, au Chapitre 11, que la mthode Print permettait denvoyer une sortie vers la
feuille. Comme vous le voyez ici, Print est une mthode gnraliste capable denvoyer une
sortie vers tout objet valide qui accepte les donnes textuelles.
La mthode NewPage permet dafcher la sortie en haut de la page suivante :
Printer.NewPage
Lchelle de la sortie
Lchelle permet, par exemple, de crer des marges qui seront respectes par toutes les
mthodes dimpression. Une fois dnie la proprit ScaleMode, qui spcie le type de
mesures employes par le programme, vous pouvez dterminer la disposition de la sortie
sur la page laide des autres proprits dchelle. Le Tableau 13.2 prsente ces proprits.
Les mthodes suivantes dnissent une marge suprieure de 3 cm et une marge gauche
de 5 cm :
Printer.ScaleMode = vbCentimeters Echelle centimtres.
Printer.ScaleTop = 3
Printer.ScaleLeft = 5
421
<
:
Partie II
Description
ScaleLeft
ScaleMode
Spcie lunit de mesure utilise pour lchelle. Les valeurs les plus
couramment employes pour limpression de texte sont vbPoints (valeur 2),
vbCharacters (largeur de caractres par dfaut de limprimante), vbInches
et vbCentimeters.
ScaleHeight
ScaleTop
ScaleWidth
>
:
Printer.ScaleMode = VbCharacters
Printer.CurrentY = 14
La valeur de dpart est 0 !
Printer.CurrentX = 24
Printer.Print "Ce nest plus Catilina qui est nos portes, cest la mort."
422
KillDoc ne
PrintForm.
Microsoft recommande de crer dans un module standard une sous-routine dimpression, qui pourra tre appele depuis toutes les applications disposant de ce module.
Cette sous-routine poura aussi servir aux impressions de feuilles. Le code du
Listing 13.3 contient deux arguments de type Object. Ce type de donnes permet de
passer la sous-routine aussi bien un objet Form quun objet Printer.
Listing 13.3 : Cette procdure permet dimprimer les contrles de la feuille
1:
2:
3:
4:
5:
6:
On peut ainsi imprimer une feuille contenant une image. Ou bien une feuille dans
laquelle lutilisateur entre des donnes qui seront par la suite envoyes limprimante.
A la ligne 1, la sous-routine exige des arguments de source et de destination. La source
esr toujours la feuille imprimer. La destiantion peut tre Printer. Lorsque vous tes
prt imprimer, vous appelez la procdure de cette faon :
Call PrintAnywhere (frmUserForm, Printer)
Print form.
423
<
:
Partie II
de destination. Le code du Listing 13.3 dessine une feuille mesurant la moiti de la taille
de la zone de destination.
Linstruction If sassure que le destination est bien lobjet Printer, et non une autre
feuille, et envoie la sortie laide de la mthode EndDoc. (On aurait pu passer une
deuxime feuille comme destination.)
Linstruction If TypeOf implique un nouveau genre de If. If TypeOf... Is permet
dinterroger le type dun objet.
Info
>
:
Proprit
Description
Font
FontBold
FontCount
FontItalic
FontName
Fonts
FontSize
FontStrikeThru
FontTransparent
FontUnderline
424
Printer.FontItalic = True
Printer.FontBold = True
Printer.FontSize = 72
Corps 72.
Printer.Print "Visual Basic"
Les mthodes de Printer, nous lavons dit, ne permettent pas seulement denvoyer la
sortie vers une imprimante, mais aussi vers une feuille. Examinez le Listing 13.4 et
tentez de deviner ce qui apparatra sur la feuille. (Une sortie identique aurait pu tre
envoye vers Printer, mais cet exemple permet de constater le rsultat lcran.)
Listing 13.4 : Print permet galement denvoyer une sortie vers la feuille
8:
Dfinit les attributs de police.
9:
frmPrint.FontItalic = True
10:
frmPrint.FontBold = True
11:
frmPrint.FontSize = 36
12:
13:
Spcifie des mesures en twips.
14:
frmPrint.ScaleMode = vbTwips
15:
16:
Enregistre les positions X et Y (en twips)
17:
chaque itration de la boucle.
18:
For intCtr = 1 To 10
19:
intCurX = frmPrint.CurrentX
20:
intCurY = frmPrint.CurrentY
21:
Texte noir et blanc en alternance.
22:
If (intCtr Mod 2) = 1 Then Compteur de boucle.
23:
frmPrint.ForeColor = vbWhite
24:
Else
25:
frmPrint.ForeColor = vbBlack
26:
End If
27:
Affiche le texte.
28:
frmPrint.Print "Visual Basic"
29:
30:
Change les positions X et Y.
31:
frmPrint.CurrentX = intCurX + 350
32:
frmPrint.CurrentY = intCurY + 300
33:
Next intCtr
425
<
:
Partie II
Listing 13.4 : Print permet galement denvoyer une sortie vers la feuille (suite)
34:
35:
36:
37:
38:
End Sub
Private Sub cmdExit_Click()
End
End Sub
Les lignes 9 11 spcient le format du texte : corps 36, italique, gras. La ligne 14
spcie que les positions CurrentX et CurrentY doivent tre rgles en twips, et non en
caractres. La ligne 18 commence la boucle qui afchera sur la feuille dix fois "Visual
Basic".
ntion
Atte
Si vous modiez ce code pour envoyer la sortie vers une imprimante, choisissez, la ligne 23, une autre couleur que vbWhite. Si vous ne disposez pas
dune imprimante couleur, des valeurs comme vbBlue ou vbRed simprimeront
de toute faon en niveaux de gris.
Au dbut de la boucle (lignes 19 et 20), le code stocke les valeurs courantes de CurrentX
et CurrentY. Si ces valeurs ntaient pas enregistres, chaque mthode Print apparatrait
sur une ligne pleine aprs la premire mthode Print. En effet, chaque Print envoie
automatiquement le curseur texte au dbut de la ligne suivante, moins que lon ne
place un point-virgule la n de la mthode Print, ou que lon ne rgle les proprits
CurrentX et CurrentY, ce qui a t fait ici.
A la ligne 22, linstruction If gre la couleur de la sortie. A chaque itration de la
boucle, la couleur change du noir au blanc et vice versa. Loprateur Mod renvoie 0 ou 1,
selon la valeur du compteur de boucle. Si intCtr est pair, Mod prend la valeur 0, si
intCtr est impair, Mod prend la valeur 1.
Cest la ligne 28 qua lieu lafchage comme tel. La mthode Print devrait normalement envoyer le curseur texte la ligne suivante, de sorte que les sorties Print
subsquentes ne se surperposent pas. Mais les lignes 31 et 32 positionnent le curseur
texte de sorte que chaque sortie morde un peu sur la prcdente. Les lignes 31 et 32
ajoutent quelques twips aux valeurs CurrentX et CurrentY de la Print prcdente
(valeurs enregistres aux lignes 19 et 20). A chaque itration de la boucle, les mots
"Visual Basic" safchent dans une couleur diffrente et en surimpression partielle de
la ligne prcdente, et cela jusqu la dixime itration. La Figure 13.2 montre le
rsultat qui apparat sur la feuille. Celui-ci aurait t le mme si la sortie avait t envoye
vers lobjet Printer.
>
:
426
Figure 13.2
Les mthodes Print
permettent denvoyer
du texte mis en forme.
frmFormName est optionnel. Si aucun nom de feuille nest spci, Visual Basic applique
automatiquement PrintForm la feuille courante.
427
<
:
Partie II
Pour imprimer, par exemple, une feuille nomme frmAccPayable, on insrerait dans la
procdure vnementielle ou le module appropri linstruction suivante :
frmAccPayable.PrintForm
Me se rfre toujours la feuille courante. Ainsi linstruction suivante est-elle quivalente aux deux prcdentes :
Me.PrintForm
ce
Astu
Inconvnients de PrintForm
Cest la simplict de PrintForm qui fait sa force. PrintForm est certainement la technique
dimpression la plus utile et la plus simple que Visual Basic puisse offrir. Malheureusement, cette simplicit cote quelques dsavantages, dont vous devez tre avis.
Quelle que soit la rsolution relle de limprimante, PrintForm imprime toujours la
feuille selon la rsolution dcran courante. Ce qui signie, en gnral, un maximum
de 96 dpi (dots per inch, points par pouce). La rsolution des imprimantes atteignant
en moyenne les 600 dpi, le rendu de la feuille imprime sera nettement infrieur au
rendu lcran. En effet, 96 dpi est une rsolution tout fait honnte pour un cran,
mais tout fait insufsante pour une sortie papier de qualit.
Avant dimprimer une feuille contenant des contrles de type graphique ou tout autre
lment visuel, vous devez vous assurer que la proprit AutoRedraw de la feuille est
dnie comme True. La valeur par dfaut de AutoRedraw est False, ce qui implique que
Print imprimera les contrles graphiques directement au premier-plan. Lorsque AutoRedraw est True, limage reste en arrire-plan pendant que Print fait son travail, de sorte
quaucun lment ne se superpose dautres. Dnie comme False, AutoRedraw peut
permettre dimprimer les images darrire-plan en premier. Vous pouvez ensuite imprimer
>
:
428
le texte par-dessus, mais il faudra rednir AutoRedraw comme True juste avant de
lancer limpression, an que lensemble de la feuille sorte correctement.
Attention : pour que PrintForm puisse imprimer les objets placs sur la feuille au
moment de la cration (ainsi que les valeurs de contrles initialises lors de lexcution,
telles que le contenu des labels et autres zones de texte), AutoRedraw doit imprativement tre False. Ainsi, si vous ajoutez des lments graphiques en cours dexcution,
pour ensuite imprimer la feuille avec PrintForm, vous devrez dnir comme True la
proprit AutoRedraw de la feuille avant de procder aux ajouts. Autrement, les lments
intgrs lors de lexcution napparatraient pas sur la feuille imprime.
ntion
Atte
Dans le Listing 13.5, on envoie un message textuel vers une feuille, puis cette feuille
vers limprimante.
Listing 13.5 : Afchage dun message sur la feuille, puis impression de la feuille
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
429
<
:
Partie II
Listing 13.5 : Afchage dun message sur la feuille, puis impression de la feuille
(suite)
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
blnAutoRedraw = frmBlank.AutoRedraw
Imprime la feuille.
frmBlank.AutoRedraw = True
frmBlank.PrintForm
Restaure AutoRedraw.
frmBlank.AutoRedraw = blnAutoRedraw
Crez une procdure de module standard qui reoit une feuille comme argument (les feuilles peuvent tre passes au mme titre que les variables),
stocke la valeur de AutoRedraw, puis imprime la feuille laide de PrintForm. Cette procdure gnraliste vous pargnera de rgler AutoRedraw
pour chaque sortie PrintForm.
>
:
1:
2:
3:
4:
5:
6:
7:
8:
430
Info
Vous pouvez imprimer une feuille sans la barre de titre, les icnes de contrles
et autres boutons Windows. Il suft pour cela de dnir comme False les
proprits correspondantes.
Avertir lutilisateur
Il convient, avant de lancer une impression, den avertir lutilisateur. Il a ainsi le temps
dallumer limprimante ou de charger le papier. Une simple bote de dialogue lui
permettra dindiquer que limprimante est prte. Dinopportuns messages derreurs
pourraient autrement apparatre, qui donneraient de votre application une image ngative.
Le Listing 13.7 contient une procdure vnementielle qui peut tre adapte aux
besoins de lapplication particulire. Cette procdure afche la bote de message reproduite en Figure 13.3. Cette bote de message ne dit rien de trs intressant, mais laisse
lutilisateur le temps de prparer limprimante avant le lancement de limpression.
Listing 13.7 : Afche une bote de message avant de lancer limpression
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Notez que la fonction dclare doit renvoyer une valeur de type Boolean. Lappel de
cette fonction peut donc tre plac partout o un boolen valide est susceptible dtre
reu. Si lutilisateur clique sur le bouton OK, la ligne 12 renvoie la valeur True la
fonction. Si, au contraire, lutilisateur clique sur le bouton Annuler, la ligne 10 renvoie
la valeur False. Le code interprte ces valeurs pour dterminer si limpression doit avoir
lieu ou non.
Le Listing 13.8 contient une procdure vnementielle de bouton de commande qui
peut servir appeler la fonction PrReady().
431
<
:
Partie II
Figure 13.3
La bote de message
permet lutilisateur
dindiquer quil est prt.
1:
2:
3:
4:
5:
6:
7:
En rsum
Vous tes maintenant capable denvoyer une sortie vers limprimante. La gestion de
limpression est lun des aspect les plus fastidieux de Visual Basic, car aucun contrle
spcique nest disponible pour assurer cette tche. Pour obtenir des rsultats satisfaisants, vous devez matriser les diverses mthodes de lobjet Printer. Cette technique
a cependant lavantage de vous laisser paramtrer exactement la sortie.
Les mthodes de Printer sappliquent galement aux objets Form. Vous pouvez ainsi
envoyer du texte, enrichi de divers attributs de police, vers la feuille comme vers
limprimante. Pour limpression de feuilles, la mthode PrintForm est toutefois la plus
indique.
Dans le chapitre suivant, vous dcouvrirez les fonctionnalits graphiques et multimdias
de Visual Basic.
>
:
432
Questions-rponses
Q Que se passe-t-il quand deux applications envoient une sortie vers limprimante
en mme temps ?
R Heureusement, Windows se charge de grer la priorit des sorties. Le PC ne peut
faire rellement deux choses la fois. Mme si deux applications semblent envoyer
simultanment deux sorties vers limprimante, lune passe toujours avant lautre.
Windows place toutes les tches dimpression dans la le dattente et procde selon
lordre denvoi de ces tches.
Q Ne vaut-il pas mieux envoyer dabord toutes les sorties vers la feuille, puis cette
feuille vers limprimante ?
R Les feuilles simpriment la rsolution de lcran, et non celle de limprimante. La
sortie sera de bien meilleure qualit si elle est envoye directement limprimante.
En outre, les lments devant apparatre sur la sortie imprime ne doivent pas forcment apparatre sur la feuille. Ainsi, une application qui imprime des chques sur du
papier spcial naura aucun besoin de passer par une feuille pour chaque chque. Un
chque, soit dit en passant, nest pour le programme quune page comme une autre,
et ncessite seulement que vous positionniez la sortie conformment aux diffrents
"champs" du chque papier.
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez ces rponses lAnnexe A.
Quiz
1. Comment le programme peut-il dterminer le nombre dimprimantes installes sur
le systme ?
2. Linstruction suivante dclare deux variables. Vrai ou faux ?
Dim intI As Integer, prnP As Printer
433
<
:
Partie II
Exercices
1. Ecrivez une ligne de code qui imprime votre nom la colonne 32.
2. Chasse au bogue. Yolande narrive pas imprimer convenablement ses rapports.
Elle a appris, il y a des annes, le langage BASIC et vient de se mettre la programmation Windows en Visual Basic. A lpoque, Yolande partait du principe quune
page normale de texte en environnement texte seul contient exactement 66
lignes. Consquemment, elle incrmente une variable compteur chaque fois quelle
imprime une ligne. Lorsque le compteur atteint la valeur 66, on est cens tre la
premire ligne de la page suivante. Maintenant que Yolande est passe Windows,
sa logique ne fonctionne plus. Pourquoi ses rapports ne contiennent-ils plus exactement 66 lignes par page ?
3. Modiez le Listing 13.2, qui recherche une imprimante couleur, en ajoutant une
variable Boolean qui prendra la valeur True si une imprimante couleur est
dcouverte. Si aucune imprimante couleur nest trouve, limprimante par dfaut
reste la mme. La nouvelle variable boolenne indiquera au code subsquent si la
boucle a ou non dcouvert une imprimante couleur. Faites du code une fonction qui
renvoie une valeur Boolean.
>
:
434
Chapitre
14
Image et multimdia
Cercles, ovales, carrs... Ce nest pas un retour lcole maternelle que vous propose ce
chapitre, mais une initiation aux fonctionnalits graphiques de Visual Basic. Vous
dcouvrirez galement ce qui distingue le contrle Image du contrle PictureBox. Enn,
vous apprendrez crer des applications vivantes en intgrant son et vido.
Les ordinateurs daujourdhui sont foncirement multimdias. Le multimdia est impliqu dans tous les types de programmes, des progiciels aux applications familiales, en
passant par les logiciels ducatifs. Plusieurs socits proposent des outils multimdias
supplmentaires pour Visual Basic. Ces produits sont utiles au programmeur qui dveloppe des applications hautement multimdias. Pour les autres, Visual Basic dispose
dun assortiment de contrles multimdias internes tout fait satisfaisant. Ce chapitre
vous propose den dcouvrir lessentiel.
Voici ce que nous tudierons aujourdhui :
435
Partie II
Le contrle Image est plus efcace pour les applications excutes sur des machines
lentes.
Info
Vu la rapidit des ordinateurs modernes, vous nobserverez quexceptionnellement la supriorit de PictureBox sur Image. En fait, moins que vous
nayez programmer pour des machines un peu fatigues (comme en
rencontre encore dans beaucoup dentreprises, sans parler des administrations), le contrle PictureBox est toujours le plus indiqu.
Les contrles Image et PictureBox supportent tous deux les formats graphiques suivants :
Des chiers relevant de plusieurs de ces formats apparaissent dans le dossier Graphics
de Visual Basic que vous avez peut-tre install.
La proprit la plus importante, que se partagent les contrles Image et PictureBox, est
Picture qui contient limage. Lors de la cration, vous pouvez cliquer sur la proprit
Picture de la fentre Proprits pour choisir dans la bote de dialogue Charger une
image un chier portant lune des extensions supportes. Pour afcher une image lors
de lexcution, vous devez, laide de la fonction LoadPicture(), associer le chier
graphique la proprit Picture du contrle concern.
Linstruction suivante affecte une image la proprit Picture dun contrle PictureBox :
picPortrait.Picture = LoadPicture("c:\Photos\Josette.wmf")
>
:
436
Le premier argument, soit le nom du chier, est optionnel. Si vous appelez la fonction
LoadPicture() sans spcier de nom de chier, Visual Basic efface limage du contrle.
Le Tableau 14.1 prsente les constantes nommes qui peuvent tre employes pour
largument varSize, si du moins vous le spciez. Cet argument dnit la taille des icnes
et curseurs. varSize est important, car les utilisateurs se servent souvent des paramtres
dafchage du Panneau de conguration pour xer la taille des icnes et curseurs. Largument varSize permet votre programme dexploiter ces valeurs systme.
Tableau 14.1 : Constantes nommes pour largument varSize de la fonction
LoadPicture()
Constante nomme
Valeur
Description
vbLPSmall
vbLPLarge
vbLPSmallShell
vbLPLargeShell
vbLPCustom
Le Tableau 14.2 prsente les valeurs que peut prendre largument optionnel varColorDepth (profondeur de couleur pour les icnes et les curseurs).
Les arguments varX et varY sont requis si vous utilisez les valeurs de taille vbLPSmallShell ou vbLPLargeShell.
Sur la feuille, les contrles Image et PictureBox agissent diffremment, mme si vous
leur attribuez la mme taille et leur affectez le mme chier graphique. Pour le contrle
Image, vous devez dnir la proprit Stretch comme True avant de pouvoir rgler les
437
<
:
Partie II
Value
Description
vbLPDefault
Meilleure adquation
vbLPMonochrome
2 couleurs
vbLPVGAColor
16 couleurs
vbLPColor
256 couleurs
ce
Astu
>
:
Le contrle Line. Trace une droite entre les deux points que vous spciez.
438
Figure 14.1
Une image peut tre
affecte larrireplan de la feuille.
Le contrle Line
Le contrle Line est utile plusieurs gards, mme dans une application qui nexploite
pas dimages. Les lignes permettent notamment de mettre en valeur les points importants dune feuille. La Figure 14.2 illustre lemploi de lignes pour une feuille qui safche chaque dmarrage dune application.
Figure 14.2
Les lignes aident
mettre en relief
les informations
de la feuille.
Lorsque vous double-cliquez sur le contrle Line, Visual Basic afche sur la feuille une
ligne prsentant chaque extrmit des poignes de dimensionnement. Vous pouvez
faire glisser ces poignes pour modier la longueur de la ligne, et les dplacer la
verticale pour modier langle. A mesure que vous modiez la taille et les coordonnes
de la ligne, Visual Basic actualise les valeurs de proprits correspondantes.
439
<
:
Partie II
Figure 14.3
La proprit
BorderStyle
dtermine laspect
de la ligne.
Le contrle Shape
Alors que le contrle Line ne trace que des lignes simples, le contrle Shape permet de
dessiner des formes diverses. Cest la proprit Shape qui dnit cette forme. En voici
les valeurs possibles :
>
:
440
Description
0-Transparent
1-Solid
Ligne pleine.
2-Dash
3-Dot
Ligne pointille.
4-Dash-Dot
5-Dash-Dot-Dot
Le Tableau 14.4 prsente les autres proprits susceptibles daffecter les diffrentes
formes traces avec le contrle Shape.
Tableau 14.4 : Proprits affectant les formes dessines avec le contrle Shape
Proprit
Description
BackStyle
BorderColor
BorderStyle
BorderWidth
FillColor
FillStyle
Height
Width
441
<
:
Partie II
Figure 14.4
Les huit motifs
disponibles pour
FillStyle.
Figure 14.5
Slectionnez une
forme et un motif,
et voyez le rsultat.
>
:
442
Proprit
Valeur
Feuille
Name
frmShape
Feuille
Height
7005
Feuille
Left
105
Feuille
Top
105
Feuille
Width
7965
Option de menu 1
Name
mnuFile
Option de menu 1
Caption
&Fichier
Option de menu 2
Name
mnuFileExit (un
Option de menu 2
Caption
&Quitter
Shape
Name
shpSample
Shape
Height
2025
Shape
Left
1710
Shape
Top
720
Shape
Width
4560
Label 1
Name
lblShape
Label 1
Caption
Forme
Label 1
Height
420
Label 1
Left
2160
niveau seulement)
443
<
:
Partie II
Proprit
Valeur
Label 1
Top
3390
Label 1
Width
1215
Label 2
Name
lblPattern
Label 2
Caption
Motif
Label 2
Height
420
Label 2
Left
5040
Label 2
Top
3360
Label 2
Width
1215
List box 1
Name
lstShape
Zone de liste 1
Height
1425
Zone de liste 1
Left
1560
Zone de liste 1
Top
3960
Zone de liste 1
Width
2010
Zone de liste 2
Name
lstPattern
Zone de liste 2
Height
1425
Zone de liste 2
Left
4680
Zone de liste 2
Top
3960
Zone de liste 2
Width
2010
Listing 14.1 : Initialise les zones de liste et rpond aux slections de lutilisateur
>
:
1:
2:
3:
4:
5:
6:
7:
444
droulante Forme.
Rectangle"
Square"
Oval"
Circle"
Rounded Rectangle"
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:
droulante Motif.
- Solid"
- Transparent"
- Horizontal Line"
- Vertical Line"
- Upward Diagonal"
- Downward Diagonal"
- Cross"
- Diagonal Cross"
ntion
Atte
445
<
:
Partie II
Info
A moins que lon ne spcie une autre chelle pour les proprits ScaleX et ScaleY,
lintersection ligne/colonne 0, 0 (soit intX et intY) correspond au premier pixel du coin
suprieur gauche de la feuille. Linstruction suivante provoque lafchage du pixel situ
100 pixels droite et 200 pixels en bas de lorigine (coin suprieur gauche) :
frmDraw.PSet (100, 200)
Affiche un pixel.
Masque un pixel.
Affiche un pixel
Loption Step de la mthode PSet change la position des pixels subsquents. Aprs le
premier appel de la mthode PSet, loption Step rend relatives les valeurs intX et intY
de la prochaine mthode PSet. Ainsi, si lon avait ajout la mthode PSet prcdente
loption Step, le pixel serait apparu 300 pixels droite et 350 pixels en bas du premier
pixel dessin. Cest justement ce que fait linstruction suivante :
frmDraw.PSet Step (300, 350)
Position relative.
On peut galement tracer des lignes en incluant PSet dans une boucle :
For intX = 1 to 100
>
:
446
ntion
Atte
Plutt que de tracer une ligne pixel par pixel, ou laide dune boucle, utilisez la
mthode Line. Elle est faite pour a. En voici le format :
frmName.Line [Step] (intX1, intY1) - [Step] (intX2, intY2), [Color] [B][F]
Comme dans la mthode PSet, la valeur optionnelle Color permet de spcier une
couleur, laide dune valeur hexadcimale ou dune constante nomme. Si vous ne
spciez pas de couleur, Visual Basic emploie pour la ligne la couleur darrire-plan de
la feuille.
Loption B permet de dessiner un cadre avec la mthode Line :
frmDraw.Line (100, 100) - (150, 150), , B
Les deux virgules doivent imprativement tre incluses, mme si Color nest pas spci.
Cela an que Visual Basic reconnaisse B comme loption "cadre". Les deux paires de
coordonnes spcient la position des coins suprieur gauche et infrieur droit du cadre.
Info
Si loption F est spcie, le cadre sera rempli de la mme couleur que celle qui a t
dnie pour le contour :
frmForm.Line (35, 40) - (150, 175), vbGreen, BF
Si vous dessinez un cadre plus grand que la feuille, Visual Basic le tronque et afche ce
qui est afchable. Mme si vous agrandissez la feuille, le cadre ne sera pas afch en
entier. Il faut le redessiner.
447
<
:
Partie II
Figure 14.6
La mthode Line
permet aussi
de dessiner
des cadres.
>
:
448
Il existe galement des mthodes pour dessiner des formes courbes. Voici le format de la
mthode Circle, qui permet de dessiner des cercles et des ellipses :
frmDraw.Circle [Step] (intX, intY), sngRadius, [Color], , , ,
sngAspect
ition
Dfin
Une ellipse est un cercle allong (ce que lon appelle couramment, et tort,
un ovale).
Info
Un cercle nayant pas dextrmits, les coordonnes intX et intY dsignent le centre.
sngRadius spcie le rayon (en pixels, sauf valeur contraire de ScaleMode). Le mot cl
optionnel Step dtermine si les coordonnes du centre sont relatives un autre objet
dessin.
Linstruction suivante dessine un cercle dont le centre se situe 300 pixels du bord gauche
de la feuille et 200 pixels du bord suprieur, et dont le rayon mesure 100 pixels :
frmDraw.Circle (300, 200), 100
Tant quune autre valeur Color nest pas spcie, la mthode Circle emploie la
couleur darrire-plan de la feuille.
Pour dessiner une ellipse, il faut spcier la valeur de largument sngAspect, qui
dtermine le ratio daspect. En fonction de la valeur, le cercle sera tir selon laxe horizontal X (valeur sngAspect infrieure 1), ou dans laxe vertical Y (valeur sngAspect
suprieure 1). Une valeur sngAspect de 1 donne un cercle parfait.
ition
Dfin
449
<
:
Partie II
Figure 14.7
Le ratio daspect
dtermine la forme
de lellipse.
Ratio d'aspect de 4
Le contrle multimdia
Malgr sa puissance, le contrle multimdia est trs simple dutilisation. Il ncessite un
minimum de code. Le contrle multimdia permet dincorporer des objets correspondant aux priphrique multimdias simples suivants :
overlay (Overlay) ;
scanner (Scanner) ;
magntoscope (Vcr) ;
Entre parenthses gurent les valeurs que peut prendre la proprit Devidu contrle multimdia (voir plus loin).
ceType
Visual Basic supporte aussi les objets reprsentant les priphriques multimdias
composites suivants :
lecteur/enregistreur audio (chiers .WAV) ;
>
:
450
Les priphriques multimdias simples nexigent pas quun chier soit associ
au contrle. Les CD audio, par exemple, ne requirent pas de chier spcique. Les priphriques multimdias composites ncessitent un chier
externe. Par exemple, un lecteur audio doit lire un chier .WAV prcis.
Evidemment, le PC sur lequel sexcute votre application multimdia doit reconnatre les priphriques multimdias standards pour le son, les images, la vido, etc., ainsi
que disposer dun lecteur de CD-ROM (ou priphrique compatible, tel quun DVD).
Avance
Suivant
(Step)
(Next)
Enregistrer
Pause
(Record)
(Pause)
Prcdent
(Prev)
Ejecter
(Eject)
Arrt
Lecture
(Stop)
(Play)
Retour
(Back)
451
<
:
Partie II
Info
>
:
452
Lorsque vous placez le contrle multimdia sur la feuille, les boutons sont
tous afchs, mais tous dsactivs. Ils le restent tant que vous ne slectionnez
pas une valeur DeviceType.
Lecteur de CD audio
Pour exploiter un CD audio depuis une application Visual Basic, il suft de placer sur
une feuille le contrle multimdia, et den rgler la proprit DeviceType comme
CDAudio. Le jeu de boutons adquat apparat automatiquement : vous avez votre lecteur
CD. Libre vous dajouter quelques dtails, par exemple un label qui afche les pistes.
Le contrle multimdia se met jour chaque fois quun vnement StatusUpdate a lieu.
Par exemple, pour un DeviceType CDAudio, StatusUpdate suit chaque changement de
piste, ainsi que le dbut et larrt de la lecture. Le label des pistes pourra ainsi tre
adquatement initialis par une procdure vnementielle de StatusUpdate.
Description
Back
Close
Ferme le priphrique.
Eject
Next
Open
Ouvre le priphrique.
Pause
Suspend la lecture.
Play
Lance la lecture.
Prev
Revient au dbut de la piste lue. Si deux commandes Prev ont lieu en moins
de trois secondes, revient au dbut de la piste prcdente (au dbut de la
premire piste si cest la piste en cours de lecture).
Record
Initialise lenregistrement.
Save
453
<
:
Partie II
Description
Seek
Recherche une piste vers lavant ou vers larrire. (On prfre en gnral
Next et Prev, en raison de lambigut directionnelle de Seek.)
Stop
Arrte la lecture.
Step
>
:
Contrle
Proprit
Valeur
Feuille
Name
frmCD
Feuille
Caption
Lecteur CD
Feuille
Height
3600
Feuille
Width
4800
Label 1
Name
lblCD
Label 1
Alignment
2-Center
Label 1
BorderStyle
1-Fixed Single
Label 1
Caption
Lecteur CD
454
Proprit
Valeur
Label 1
Font style
BoldUnderline
Label 1
Font size
18
Label 1
Height
495
Label 1
Left
1320
Label 1
Top
480
Label 1
Width
1935
Label 2
Name
lblTrack
Label 2
Alignment
1-Right Justify
Label 2
Caption
Piste :
Label 2
Font style
Bold
Label 2
Font size
12
Label 2
Height
255
Label 2
Left
1200
Label 2
Top
2280
Label 2
Width
1215
Label 3
Name
lblTrackNum
Label 3
Caption
(vide)
Label 3
Font style
Bold
Label 3
Font size
12
Label 3
Height
375
Label 3
Left
2520
Label 3
Top
2280
455
<
:
Partie II
Proprit
Valeur
Label 3
Width
615
Contrle multimdia
Name
mmcCD
Contrle multimdia
DeviceType
CDAudio
Une fois les contrles placs et congurs, saisissez le code du Listing 14.3.
Listing 14.3 : Gestion du lecteur CD
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
>
:
456
Figure 14.10
Ce lecteur CD tout
fait fonctionnel ne
vous a pas cot
beaucoup de peine !
ce
Astu
Vous ne matrisez pas seulement la fonction lecteur CD du contrle multimdia, mais aussi tous les autres priphriques supports ! Comme vous le
verrez dans les sections suivantes, les autres types de priphriques fonctionnent de la mme manire.
Mieux vaut ne pas placer dinstruction On Error Goto au dbut de la procdure, car
vous ne pourriez alors savoir quelle commande prcise a gnr lerreur. En faisant
suivre chaque commande dune routine de vrication derreur, vous assurez un
meilleur suivi des problmes et de leur signication.
Le Tableau 14.8 prsente plusieurs valeurs de la proprit Mode. La proprit Mode
permet dinterroger divers tats, ou modes, du contrle multimdia lors de lexcution
de lapplication.
457
<
:
Partie II
Description
mciModeNotOpen
mciModeStop
Priphrique arrt
mciModePlay
mciModeRecord
mcuModeSeek
mciModePause
mciModeReady
Priphrique prt
>
:
458
mmcWAV.Command = "Open"
End Sub
mmcWAV.Command = "Close"
Excutez lapplication. Lorsque vous cliquez sur le bouton Lecture, un son se fait entendre.
Cliquez sur Retour pour lentendre de nouveau.
Le lecteur WAV nest pas encore tout fait termin. Les labels situs sous les boutons
nafchent pas encore ltat ni le nom du chier. Initialisez ces labels dans la procdure
vnementielle StatusUpdate() (voir Listing 14.4). Vous devrez utiliser les valeurs de Mode.
459
<
:
Partie II
ntion
Atte
Le lecteur nafche pas de bouton Arrt, sauf pendant la brve lecture du chier. Le
chier sarrte de lui-mme. Sil tait plus long, vous auriez la possibilit de larrter.
Le chier est lu une fois, puis le lecteur se positionne la n du chier. Vous pouvez
cliquer sur le bouton Retour pour lentendre de nouveau.
Le bouton Enregistrer est actif. Vous pouvez enregistrer au dbut ou la n du
chier, puis rembobiner pour entendre le rsultat.
>
:
460
461
<
:
Partie II
1:
2:
3:
4:
5:
6:
En travaillant avec le contrle multimdia, vous dcouvrirez des raccourcis. Par exemple, il est inutile de spcier le type de priphrique pour les priphriques multimdias
composites, car Visual Basic peut le dduire lui-mme de lextension du chier utilis.
Par ailleurs, vous navez point remarqu que les labels dtat ne sactualisent pas
toujours temps. En loccurrence, le label na afch "Lecture" quune fois la lecture
termine ! Lvnement StatusUpdate a lieu toutes les quelques millisecondes. Pour
que la mise jour se fasse plus souvent, donc avec plus dexactitude, affectez la
proprit UpdateInterval une valeur plus petite (selon la valeur par dfaut, 1000, ltat
se met jour toutes les secondes).
>
:
462
ntion
Atte
Ne dnissez pas pour UpdateInterval une valeur trop petite, car lapplication contenant le contrle multimdia consommerait trop de temps
mettre jour le label, ce qui ralentirait le systme. De tels ralentissements
provoquent souvent quelques tressautements lors de la lecture des chiers
multimdias.
En rsum
Ce chapitre vous a montr combien il tait facile de relever vos applications dune
pointe de graphisme et dun trait de multimdia. Les contrles Line et Shape permettent
de mettre en valeur les lments de la feuille ou de sparer les contrles.
Visual Basic propose galement des mthodes de dessin qui vous permettent de tracer
des lignes, des cadres ou des ellipses, ainsi que de dessiner pixel par pixel. Ces mthodes sont assez simples, mais elles vous laissent le plein contrle sur vos dessins.
Les dernires sections de ce chapitre ont dtaill le fonctionnement du contrle multimdia. Le contrle multimdia est lun des contrles les plus complets de Visual Basic,
car il supporte de multiples types de priphriques. Il permet vos programmes de lire
des CD audio, des chiers son et mme des vidos. Le contrle multimdia peut tre
pilot par lutilisateur laide de boutons, ou depuis le code laide de la proprit
Command.
Le chapitre suivant explique comment ajouter des modles de feuilles vos projets an
de standardiser vos applications.
Questions-rponses
Q Puis-je utiliser le contrle multimdia pour afcher de simples images ?
R Le contrle multimdia, comme son nom lindique, est destin aux priphriques
multimdias. Ce qui ninclut pas les simples images et photos. Pour les chiers de ce
type, optez plutt pour les contrles Image ou PictureBox.
Q Vaut-il mieux utiliser les contrles de dessin ou les mthodes ?
R Les deux ne sexcluent pas. Les contrles Line et Shape prennent diverses formes
que vous pouvez placer sur la feuille lors de la cration ou dnir lexcution par
des valeurs de proprits. Les mthodes de dessin offrent plus de exibilit, en
permettant de dessiner point point. Elles permettent galement de tracer des lignes
et des cadres.
463
<
:
Partie II
Atelier
Latelier propose une srie de questions sous forme de quiz, grce auxquelles vous
affermirez votre comprhension des sujets traits dans le chapitre, et des exercices qui
vous permettront de mettre en pratique ce que vous avez appris. Il convient de comprendre
les rponses au quiz et aux exercices avant de passer au chapitre suivant. Vous trouverez
ces rponses lAnnexe A.
Quiz
1. Quel contrle dessine des cercles sur la feuille ?
2. Quelle mthode dessine des carrs sur la feuille ?
3. Laquelle des mthodes suivantes permet de dessiner des cadres ?
a. PSet
b. Line
c. Box
d. Draw
4. Les contrles Line et Shape gnrent des dessins qui supportent E/S proprits, mais
pas des vnements. Vrai ou faux ?
5. Quelle option de la mthode Line applique une couleur de fond aux cadres ?
6. Pourquoi Visual Basic nactive-t-il pas tous les boutons lorsque vous placez le
contrle multimdia sur une feuille ?
7. A quoi sert la proprit Mode ?
8. Comment faire en sorte que ltat du priphrique du contrle multimdia se mette
jour plus souvent ?
9. Pourquoi doit-on utiliser un contrle PictureBox pour les vidos ?
10. Comment le contrle multimdia sait-il quel contrle PictureBox il doit envoyer la
sortie vido ?
>
:
464
Exercices
1. Ajoutez lapplication reproduite en Figure 14.5 des zones de liste Couleur de
remplissage et Couleur de bordure, de faon pouvoir aussi modier ces paramtres.
La Figure 14.14 montre ce quoi votre feuille devrait ressembler.
Figure 14.14
Vous avez maintenant
plus de contrle sur
le dessin.
Truc. Utilisez une constante nomme, telle que vbBlue, pour rpondre aux slections de lutilisateur. Vous ntes pas oblig de proposer toutes les couleurs dans
toutes les zones de liste.
2. Exercez-vous au dessin de lignes et de cercles laide des mthodes appropries,
mais sur un contrle PictureBox cette fois. Le contrle PictureBox accepte les
mmes mthodes de dessin que la feuille.
3. Reprenez le lecteur WAV que nous avons cr. Offrez lutilisateur la possibilit de
choisir son chier dans une bote de dialogue Ouvrir.
465
<
:
PB7
Les barres de dfilement
En plus de vous proposer un peu dentranement, ce Projet bonus introduit deux
nouveaux contrles : les barres de dlement verticale et horizontale. Ils sont toutefois
trs simples manipuler, leur comportement tant en grande partie contrl par les
proprits dnies lors de lexcution. Il suft ensuite dcrire les procdures vnementielles qui rpondront aux actions de lutilisateur.
467
Partie II
Figure PB7.1
Les barres
de dlement
horizontale et
verticale peuvent
apparatre
automatiquement.
Barre de
dfilement
verticale
flches de
dfilement
Hampe
Barre de
dfilement
horizontale
Curseur de
dfilement
Position
fin
Position
dbut
>
:
468
Description
LargeChange
Max
Min
SmallChange
Value
La plage par dfaut des valeurs de dlement va de 1 32 767. Mais vous pouvez ajuster
cete plage aux besoins de votre application. Supposons, par exemple, que vous criviez un
programme qui traite des montants allant de 3000 F 60 000 F. Vous pourriez obtenir les
montants de lutilisateur par lintermdiare de zones de texte. Mais il serait plus simple de
fournir une espce de gradateur, sans la forme dune barre de dlement. Les valeurs
de dlement seraient alors incluses dans les valeurs de proprits suivantes :
Min: 3000
Max: 60000
469
<
:
Partie II
Info
Crer lapplication
La Figure PB7.2 montre lcran de lapplication que vous allez maintenant crer.
Lutilisateur se sert des barres de dlement pour modier la taille de limage. Le code
requis est minime, parce que lessentiel du travail est effectu par les proprits des
barres de dlement.
Figure PB7.2
Les barres de
dlement contrlent
la taille de limage.
Augmenter
la largeur
Rduire
la largeur
Augmenter
la longueur
>
:
Rduire la
longueur
ntion
Atte
ntion
Atte
Cette application exploite les chiers graphiques livrs avec Visual Basic. Si
vous ne les avez pas installs, faites-le, copiez le chier requis sur votre
disque, ou travaillez directement sur le CD-ROM Visual Basic.
470
Proprit
Valeur
Feuille
Name
frmScoll
Feuille
Caption
Feuille
Height
4650
Feuille
Width
5295
PictureBox
Name
picScroll
PictureBox
Height
1600
PictureBox
Left
1560
PictureBox
Picture
Common\Graphics\Metafile\Business
\Moneybag
PictureBox
Top
1200
PictureBox
Width
1575
Name
vscScroll
Height
3975
LargeChange
100
Left
4920
Max
3750
Min
1600
SmallChange
50
Top
Width
255
Name
hscScroll
Height
255
LargeChange
100
471
<
:
Partie II
Proprit
Valeur
Left
Max
3750
Min
1600
SmallChange
50
Top
3960
Width
4935
Chaque fois que lutilisateur clique sur une che de dlement, la taille de limage
change de 50 pixels, tel que spci dans la proprit SmallChange des deux barres de
dlement. Chaque fois que lutilisateur clique sur la hampe, la taille de limage change
de 100 pixels, tel que spci dans la proprit LargeChange.
Ajouter le code
Le Listing PB7.1 fournit le code de ce projet.
ce
Astu
>
:
1:
2:
3:
4:
472
14:
Rpond au curseur de dfilement.
15:
Call vscScroll_Change
16: End Sub
17:
18: Private Sub hscScroll_Scroll()
19:
Rpond au curseur de dfilement.
20: Call hscScroll_Change
21: End Sub
Analyse
Le code est rptitif, parce que les deux barres de dlement font foncirement la mme
chose : contrler les proprits Width et Height de limage. A la ligne 3, la premire
procdure modie la largeur de limage en fonction de la valeur de la barre de
dlement horizontale. (Pour les deux barres de dlement, les proprits Min et Max ont
t dnies, lors de la cration, de faon que la taille de limage garde toujours une taille
raisonnable.) La ligne 4 spcie la nouvelle position de limage redimensionne. Cette
position est xe en fonction de la hauteur de limage par rapport la hauteur de la feuille.
frmScroll .Width / 2 dnit le milieu de la feuille, picScroll.Width / 2 celui de limage.
Les 300 pixels soustraits correspondent la largeur de la barre de dlement verticale.
Les lignes 7 11 font exactement la mme chose, mais en fonction de la barre de
dlement horizontale et pour la largeur de limage.
Les deux dernires procdures ont cela de particulier quelles ne font quappeler les
autres procdures. La premire de ces deux procdures sexcute quand lutilisateur
clique sur lune des ches ou sur la hampe. Mais quen est-il du curseur de
dlement ? Sans les procdures des vnements Change, limage ne bougerait pas tant
que lutilisateur na pas relch le bouton de la souris cest--dire tant que lvnement Scroll nest pas achev. En appelant la procdure vnementielle Scroll depuis
la procdure vnementielle Change, on synchronise les mouvements du curseur de
feuille aux modications de la taille. En fait, la procdure vnementielle Scroll est
appele pendant tout le dplacement du curseur, pour chacune des valeurs par lesquelles
il passe.
Info
On aurait pu placer le code de la procdure vnementielle Click directement dans la procdure vnementielle Change, pour ne garder que cette
dernire. La procdure vnementielle Change sexcuterait chaque fois que
lutilisateur agit sur une barres de dlement, le curseur, les ches et la
hampe pouvant tous gnrer des vnements Change. On aurait pu, certes,
mais vous navez pas encore appris appeler une procdure depuis une
autre, et cet exemple sy prtait parfaitement.
473
<
:
Rsum de la Partie II
Vous tes maintenant pass du stade de dbutant celui de programmeur avanc.
Lenvironnement de programmation Visual Basic vous est tout fait familier, et vous
matrisez lessentiel du langage.
Dans les chapitres qui viennent, il sagira donc surtout daffter et de perfectionner les
notions et les techniques dj acquises. Vous avez maintenant un bagage sufsant pour
rechercher par vous-mme, en dehors de cet ouvrage, des informations complmentaires. Manuels plus avancs, revues et sites Web spcialiss vous permettront de
perfectionner votre pratique de Visual Basic et de devenir rapidement un authentique
dveloppeur professionnel.
Voici ce que nous avons tudi dans ces sept chapitres :
La structure des applications. Un programme Visual Basic est plus quun simple
assemblage de contrles et de procdures vnementielles. Lapplication peut tre
constitue de plusieurs feuilles et modules de code travaillant en commun
(Chapitre 8).
La porte des variables. Alors que vos codes deviennent plus modulaires (et donc
plus faciles maintenir), vous devez toujours garder lesprit la porte des variables,
qui dtermine quelles procdures auront accs quelles variables de lapplication
(Chapitre 8).
Passer des contrles. Les procdures peuvent, entre elles, se passer tous types
dobjets : variables, mais aussi contrles (Chapitre 8).
Les fonctions internes. Grce une exploitation adquate des fonctions internes, vous
allgerez votre travail de programmation pour ce qui est des tches communes, telles que
calculer une racine carre ou convertir une chane (Chapitre 8).
475
Partie II
>
:
Les contrles de listes. Visual Basic met votre disposition divers types de zones
de liste (Chapitre 10).
Les tableaux. Les simples variables ne peuvent stocker des listes de donnes. Pour
traiter de grandes quantits de donnes, il faut les stocker dans des tableaux de variables (Chapitre 10).
Les feuilles. Comme les autres objets Visual Basic, les feuilles supportent une vaste
gamme de proprits, vnements et mthodes, permettant notamment de les masquer
et de les afcher volont lors de lexcution (Chapitre 11).
Envoyer du texte aux feuilles. La mthode Print permet denvoyer du texte directement sur la feuille, sans passer par des contrles (Chapitre 11).
Les barres doutils. Les barres doutils sont un aspect capital de linterface utilisateur (Chapitre 11).
Les coolbars. Les coolbars sont relativement nouvelles dans les logiciels Windows,
mais elles offent un moyen supplmentaire de dynamiser et personnaliser vos
applications (Chapitre 11).
Les chiers alatoires. Laccs alatoire permet de lire et dcrire nimporte quel
endroit du chier (Chapitre 12).
Les contrles de chiers. Les contrles ne manipulent pas eux-mmes les chiers,
mais permettent lutilisateur de faire son choix parmi les lecteurs, dossiers et types
de chiers de son systme (Chapitre 12).
476
Rsum de la Partie II
Limpression de feuilles. Vous pouvez, aussi bien, imprimer les feuilles de votre
projet (Chapitre 13).
Les contrles de dessin. Grce aux contrles Line et Shape, vous pouvez enjoliver
ou mettre en relief les lments de la feuille (Chapitre 14).
Les mthodes de dessin. Les mthodes de dessin permettent de tracer des images
sur les feuilles comme sur le contrle PictureBox (Chapitre 14).
477
<
:
Partie
III
481
505
531
567
577
601
619
641
663
689
693
731
479
Partie III
Vous avez suivi un long trajet depuis que ce livre a commenc vous enseigner
comment crire des programmes Visual Basic. Vous devez dsormais vous considrer
comme tant meilleur quun programmeur dbutant. Vous pouvez dj presque
raliser ce que vous voulez avec Visual Basic. Il vous reste maintenant amliorer vos
comptences.
La troisime et dernire partie de ce didacticiel commence par examiner certains aspects
avancs de la programmation Visual Basic, ce qui ne signie cependant pas "difcile".
Presque tous les lments que vous apprendrez dans cette partie sont considrs comme
avancs. Quoi quil en soit, vous avez des bases si solides dsormais que vous devriez
acqurir assez facilement ces comptences supplmentaires.
Lorsque vous commencerez explorer les objets et les contrles ActiveX, vous verrez
que ces lments vous aident produire un meilleur code et crire des programmes
plus rapidement. Vous apprendrez rutiliser les composants que vous crez de la
mme manire que vous avez rutilis les procdures dans la Partie II. Vous dvelopperez vos propres outils dans la fentre Bote outils de Visual Basic en crant vos
propres contrles ActiveX.
Comme vous le verrez, Visual Basic peut vous proposer une grande diversit de contrles. Dans cette dernire partie, vous apprendrez comment accder aux chiers, grer les
donnes dans les formats courants de bases de donnes, et comment accder lInternet
en utilisant les outils fournis avec Visual Basic. Vous ncrirez que trs rarement une
application qui exige plus de contrles que ceux dont vous disposez dj. Toutefois, vous
serez soulag dapprendre que vous pourrez en obtenir dautres, et mme crire les
vtres, si lenvie vous en prend. Vous pourrez utiliser ces contrles non seulement dans
lenvironnement de programmation Visual Basic, mais galement dautres manires, par
exemple les incorporer dans les pages Web pour les navigateurs compatibles avec
ActiveX.
Une fois lapplication crite, il faut la tester laide des outils de test et de dbogage de
Visual Basic. Si certains bogues sont difciles pister, Visual Basic va cependant assez
loin pour vous aider les localiser. Une fois votre application dveloppe, vous devez la
compiler pour la distribuer aux autres. A la n de cette partie, vous apprendrez empaqueter vos applications avec des routines dinstallation pour permettre aux utilisateurs
de les installer et de les excuter.
>
:
480
Chapitre
15
comment ajouter vos propres modles de feuilles lensemble fourni avec Visual
Basic.
481
Partie III
Info
>
:
482
Un modle de feuille nest rien dautre quune feuille avec des lments dj
placs. Ce nest pas un type de feuille particulier, mais plutt un ensemble de
feuilles prdnies. Lorsque vous crez des feuilles que vous souhaitez rutiliser, vous pouvez tout simplement les ajouter la collection des modles de
votre systme. Nous lexpliquerons ci-dessous.
A propos de. Gnralement afch par loption de menu Aide, A propos de.
Bote de dialogue Option. Pour grer les botes de dialogues multipages et les
paramtrages de personnalisation.
Info
483
<
:
Partie III
La liste qui safche comporte non seulement les feuilles fournies avec
Visual Basic, mais aussi celles que vous avez ajoutes la bibliothque des
modles.
>
:
484
Figure 15.2
Lassistant Cration
dapplications
ajoutera des feuilles
votre application.
Figure 15.3
Lajout dun modle
de feuille est simple.
Cliquez du bouton droit dans la fentre Projet, slectionnez Ajouter, Feuille et slectionnez le modle dans la liste.
Pour ajouter une feuille vierge, slectionnez la premire icne de la liste (intitule
Form). Pour ajouter un modle, slectionnez licne correspondante.
485
<
:
Partie III
Option des
modles
de feuilles
Emplacement
des modles
de feuilles
Comme le montre cette bote de dialogue, Visual Basic fournit des modles pour bien
dautres objets que les feuilles. Il existe des modles de modules, de contrles, de pages
de proprits, etc. Si certains, ne correspondant pas des feuilles, ne sont utiliss que
dans des applications assez avances, vous pouvez constater quil existe un modle pour
presque tout type dobjet que vous pourrez crer.
Info
Si vous ne cochez pas loption Feuille pour masquer lafchage des modles,
lorsque vous crez un nouveau projet, Visual Basic cre automatiquement
une feuille vierge dans votre projet sans vous laisser la possibilit de slectionner un autre type de feuille.
La bote de dialogue Options montre le dossier o Visual Basic recherche les modles
de feuilles. Il sattend ce que tous les modles se trouvent dans ce dossier. Si vous
congurez diverses bibliothques de modles pour des usages divers (ce quun
programmeur indpendant pourrait faire sil travaille avec plusieurs entreprises), vous
>
:
486
pouvez enregistrer chacun des ensembles de modles dans des dossiers diffrents.
Quand vous souhaitez travailler avec un de ces ensembles, entrez le chemin dans la
bote de dialogue Options.
Info
Faire
Pour modier de manire permanente un modle et ladapter vos besoins si
vous utilisez souvent le mme, enregistrez-en une copie sous un autre nom et
modiez cette dernire. Utilisez ensuite la copie.
Ne pas faire
Ne faites pas de modications directement sur le modle dorigine.
Pour vous donner une ide de la diffrence entre le modle et la feuille laquelle vous
allez aboutir, voyez la Figure 15.6. Elle montre la bote de dialogue A propos de Visual
Basic. Comme vous le constatez, le modle fournit les emplacements qui contiendront
les informations que vous y placerez dans lapplication nale.
487
<
:
Partie III
Figure 15.6
La bote de dialogue
A propos de Visual
Basic correspond
au format du modle
de feuille.
Pour mettre en pratique lajout dun modle de feuille A propos de, dmarrez une
nouvelle application et suivez ces tapes :
1. Ouvrez le Crateur de menus, ajoutez Aide la barre de menus, indiquez A
propos de comme unique option du menu Aide et nommez-la mnuHelpAbout.
2. Nommez la feuille du projet frmTestAbout et changez son titre en Dmonstration de la
bote de dialogue A propos de.
3. A partir du menu Fichier, choisissez Enregistrer la feuille sous et tapez Feuille A
propos de comme nom de chier.
4. Choisissez Enregistrer le projet sous dans le menu Fichier et tapez Projet A
propos de comme nom de projet (la bote de dialogue que vous ajouterez utilisera le
nom de projet).
5. Dans le menu Projet, slectionnez Ajouter une feuille pour afcher la bote de dialogue correspondante. Double-cliquez sur A propos de pour ajouter la bote de dialogue,
qui nest rien dautre quune feuille avec des contrles. Elle est ajoute votre
application sous le nom frmAbout.
6. Utilisez loption du menu Fentre pour revenir votre feuille de dpart (frmTestAbout). Ajoutez la procdure vnementielle suivante :
Private Sub mnuHelpAbout_Click()
frmAbout.Show
End Sub
>
:
488
La ligne 3 congure les numros de version majeur, mineur et de rvision de lapplication dans la procdure vnementielle Form_Load() de la feuille principale. Vous
pouvez supprimer les rfrences ces valeurs du module de la feuille A propos de (et les
tiquettes les afchant) si vous ne souhaitez pas les utiliser.
Le module de la bote de dialogue A propos de contient du code initialisant automatiquement les valeurs titre et numro de version, mais pas certaines tiquettes telles que la
description de lapplication et la zone davertissement. Vous devez initialiser la proprit
Caption de la description (tiquette lblDescription). Si vous ne souhaitez pas de zone
davertissement ou de copyright, supprimez ltiquette correspondante (lblDisclaimer).
Vous pouvez insrer la place une icne ou une image pour attirer lattention de
lutilisateur.
La bote de dialogue A propos de implique plus de code que le simple afchage du nom
et du numro de version de lapplication, par exemple le code permettant de fermer la
fentre lorsque lutilisateur clique sur OK. Mais la vritable puissance de la bote de
dialogue A propos de rside dans la procdure vnementielle du bouton de commande
Infos systme :
1: Private Sub cmdSysInfo_Click()
2:
Call StartSysInfo
3: End Sub
489
<
:
Partie III
StartSysInfo est une procdure gnrale liste un peu plus loin dans le module de code
de la bote de dialogue A propos de. Elle lance un programme systme nomm
MSINFO32.EXE qui se trouve dans un dossier de Windows. Vous pourriez remplacer ce
programme par votre propre code, mais pourquoi ne pas se tenir au programme standard
dinformations sur le systme que les utilisateurs sont habitus voir dans les autres
applications Windows ?
Si vous excutez une nouvelle fois votre application, afchez la bote de dialogue A
propos de et cliquez sur le bouton Infos systme, lapplication correspondante dmarre.
(On dit que cest un processus enfant de votre application.) La Figure 15.7 montre la
fentre Infos systme.
Figure 15.7
Le code
accompagnant
la bote de dialogue A
propos de afche la
fentre Infos systme.
Info
>
:
490
lcran daccueil ;
Les applications ne doivent pas toujours inclure tous les modles. La bote de dialogue
A propos de faisant partie de la plupart des applications Windows, il est bon de prendre
lhabitude de linclure systmatiquement. Lutilisation des autres modles dpend
surtout du but et des exigences de lapplication. Cette section les tudie en dtail, pour
vous permettre de connatre ceux que vous voudrez ajouter vos projets.
ce
Astu
Ecran daccueil
Un cran daccueil afche un message dintroduction et ventuellement des informations de copyright et de contact sur le projet. (Bien quon parle dcran, cest en fait une
feuille de la collection Forms de votre projet). Son objet premier est de saluer lutilisateur. Contrairement la bote de dialogue A propos de, lcran daccueil ne safche
quau dmarrage de lapplication.
Un cran daccueil afche souvent une image accompagne dun cran de prsentation.
La Figure 15.8 montre lcran daccueil afch au dmarrage de Microsoft Word. Il
comporte une image pour attirer lattention et des informations sur le produit.
Figure 15.8
Un cran daccueil
identique celui-ci
apparat lorsque
lapplication Word
se charge.
491
<
:
Partie III
Un cran daccueil disparat gnralement au bout dun court moment. Vous pouvez
ajouter un bouton de commande ou du code qui vrie une action clavier pour permettre
lutilisateur de sen dbarrasser sa convenance. Mais on utilise gnralement un
contrle Timer pour afcher lcran daccueil pendant une dure dtermine. Lcran
daccueil sert aussi masquer lattente au dmarrage due linitialisation des chiers et
des donnes.
Lcran daccueil impose une contrainte absente de la bote de dialogue A propos de.
Vous devez indiquer votre application de lafcher avant la fentre normale. Il doit tre
congur en tant que fentre de dmarrage dans la bote de dialogue Proprits,
laquelle on accde par loption Proprits du menu Projet. Ds que le modle Ecran
daccueil est ajout au projet, la bote de dialogue contient la feuille dans la liste des
objets de dmarrage. Vous devez aussi ajouter un bouton de commande ou un Timer
lcran daccueil pour afcher la fentre suivante quand il est temps de le faire.
Suivez ces tapes pour mettre en pratique la cration dun projet contenant un cran
daccueil :
1. Crez un nouveau projet. Vous laisserez telle quelle la feuille Form1.
2. Dans le menu Projet, choisissez Ajouter une feuille, puis slectionnez lcran
daccueil. Visual Basic afche lcran chantillon.
3. Modiez les tiquettes pour quelles correspondent celles de la Figure 15.9.
Figure 15.9
Lcran daccueil
est modi.
>
:
492
Quand un utilisateur entre son nom et son mot de passe, le premier safche, mais le
second est masqu sous des astrisques (grce la proprit PasswordChar de la bote de
dialogue), pour protger la saisie dun il fouineur. Votre programme a cependant accs
au mot de passe tel quil a t saisi. Le mot de passe dorigine est password ; vous pouvez
lutiliser pour les tests. Le Listing 15.1 montre le code du module sous-jacent.
Listing 15.1 : La bote de dialogue Connexion permet lutilisateur
de se connecter votre application
1: Option Explicit
2: Public LoginSucceeded As Boolean
3:
493
<
:
Partie III
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
>
:
494
ntion
Atte
Ce nest pas parce que Microsoft a insr une variable globale dans le code
de la bote de dialogue que cela en justie lemploi. Comme lexplique la
remarque de la procdure cmdOK_Click(), la variable globale est la mthode
la plus facile pour informer lapplication du succs de la connexion, mais une
programmation de qualit demande que vous remplaciez la variable globale
par des variables locales. La meilleure manire de modier ce code an den
amliorer la maintenance consiste sans doute changer la sous-routine
en une fonction boolenne. Lapplication appelante peut alors tester si la
valeur de retour de la fonction est True ou False.
Info
Linstruction suivante renvoie lactivit clavier la zone de texte du mot de passe (cela
ne survient que si lutilisateur a saisi un mot de passe incorrect) par la mthode SetFocus. Cette mthode oblige lapplication rendre lactivit du clavier au contrle auquel
elle sapplique, mme si elle doit normalement passer un autre contrle.
La dernire instruction utilise linstruction SendKeys pour slectionner le texte du mot
de passe saisi par lutilisateur, quelle quen soit la longueur. SendKeys dplace le curseur
au dbut de la zone de texte, puis la n ce qui a pour effet de slectionner toute la
zone. La premire frappe de lutilisateur remplacera le contenu prcdent.
Info
495
<
:
Partie III
>
:
Ajoutez autant de pages doptions que vous en avez besoin. La manire la plus
simple de modier les onglets et les pages consiste cliquer sur un des onglets puis
sur les points de suspension de la proprit (Personnalis). La bote de dialogue
Pages de proprits qui safche vous aide congurer les pages, les onglets et les
496
info-bulles que vous voulez utiliser dans la bote de dialogue Options (voyez la
Figure 15.12).
Figure 15.12
Utilisez la bote de
dialogue Pages
de proprits pour
congurer les pages
de la bote de
dialogue.
Ajoutez une procdure gnrale qui lit tous les contrles de la bote de dialogue
Options et congure les options correspondantes.
497
<
:
Partie III
Vous pouvez aussi mettre en pratique lajout de modles de feuilles en utilisant lassistant
Cration dapplications. Pour cela, crez un nouveau projet et dmarrez lassistant.
Acceptez les valeurs par dfaut jusqu ce que vous arriviez la bote de dialogue Feuilles
standard. Cochez les quatre cases de modles standards, puis double-cliquez sur Suivant,
et enn sur Terminer. Visual Basic cre le noyau de lapplication. Une fois lassistant
achev, cliquez sur OK pour lire les instructions de conguration avant de fermer la bote
de dialogue.
Lassistant Cration dapplications ne cre quun noyau dapplication. Vous devez
complter les dtails. Cependant, ce noyau comporte les quatre modles de feuilles
standards proposs par dfaut.
Testez lapplication en lexcutant pour voir ce qui fonctionne dj. Nentrez pas de mot
de passe (il est vierge par dfaut tant que vous ne lajoutez pas au module de code), mais
vous pouvez observer que lcran daccueil a rcupr le nom de lutilisateur dans lobjet
App et la automatiquement afch dans la zone de texte Nom dutilisateur.
Lcran daccueil ne safche que brivement avant de laisser la place la feuille principale. La bote de dialogue A propos de safche si vous choisissez A propos de dans le
menu Aide, et la bote de dialogue Options apparat quand vous choisissez Options
dans le menu Afchage. Ce projet, mme si ce nest quun noyau dapplication, vous
offre une quantit de code de qualit tudier pour la mise en place de vos propres
applications qui demandent un ou plusieurs modles de feuilles standards.
Info
>
:
498
Figure 15.13
Une bote de dialogue
Astuce du jour peut
fournir une assistance
aux nouveaux
utilisateurs
du programme.
Le code du module congure la feuille pour afcher une nouvelle astuce du jour chaque
fois que lutilisateur dmarre lapplication. Les rgles suivantes aident comprendre les
exigences lies la bote de dialogue Astuce du jour :
Naturellement, la collection Tips doit lire les astuces dans un chier que vous devez
crer et fournir avec le projet. Il doit contenir une astuce par ligne.
La partie la plus technique du code est la plus courte. Elle se trouve dans la procdure chkLoadTipsAtStartup(). Microsoft en fournit heureusement le code. Il utilise
la commande SaveSetting pour modier la base de registres du systme. Elle
enregistre dans ce cas la valeur qui dtermine sil faut ou non afcher cette feuille au
dmarrage. Si la case Afcher les astuces au dmarrage est dcoche, la base de
registres est modie en consquence et le code nafchera plus les astuces dans les
sessions suivantes.
Le modle de feuille Astuce du jour est sans doute le plus courant des modles qui
restent dcrire dans cette leon. Suivez ces tapes pour mettre en pratique la conguration dune bote de dialogue Astuce du jour sur votre systme :
499
<
:
Partie III
Brosser vos dents tous les jours et vos chaussures toutes les semaines.
Epargner pour votre retraite (personne ne sen soucie plus que vous).
Dormir beaucoup est un excellent traitement de linsomnie.
Lire un bon livre avant de voir le film.
Ne pas conduire en casse-cou ou casse-briques ; conduisez sans casse.
Faire de lexercice plus souvent que vous prenez un dessert.
2. Crez une nouvelle application et afchez la fentre de feuille standard. Avant tout,
enregistrez la feuille et le projet dans le mme rpertoire que le chier des astuces.
Cest ncessaire pour permettre au code de les trouver.
3. Dans le menu Projet, choisissez Ajouter une feuille, puis Astuce du jour.
4. Modiez la proprit Caption Savez-vous de ltiquette en Noubliez pas de.
5. Excutez lapplication pour voir les rsultats.
Pas de bote de dialogue Astuce du jour ? Vous avez bien cr le chier des astuces et
ajout la bote de dialogue votre application, mais Visual Basic afche dabord la
feuille principale du projet (Form1, si vous navez pas modi son nom). Il reste dnir
la feuille Astuce du jour comme feuille de dmarrage et congurer le code qui afche la
feuille normale quand lutilisateur ferme la bote de dialogue Astuce du jour.
Dans le menu Projet, slectionnez Proprits, et congurez frmTip comme Objet de
dmarrage. Cliquez sur OK pour fermer la bote de dialogue. Lapplication est dsormais congure pour afcher la bote de dialogue Astuce du jour au dmarrage.
Vous devez connecter la feuille principale (Form1) la bote de dialogue Astuce du jour
pour quelle safche une fois cette dernire ferme. Modiez la procdure
cmdOK_Click() comme suit :
Il reste une chose faire. Si lutilisateur dcide de ne plus afcher les astuces au
dmarrage, il ny a alors plus moyen dafcher la feuille principale. Vous devez donc
ajouter la procdure Form_Load() une instruction Form1.show, comme ceci :
>
:
500
4:
5:
6:
7:
8:
9:
10:
Vous pouvez maintenant excuter lapplication et lire les astuces de manire alatoire en
cliquant sur le bouton de commande Astuce suivante. Quand vous cliquez sur OK, la
feuille principale safche. Si un utilisateur dcide de ne plus consulter les astuces dans
les sessions suivantes, la feuille principale safche directement au dmarrage.
Info
501
<
:
Partie III
La bote de dialogue Connexion ODBC peut tre ajoute une application pour permettre aux utilisateurs de slectionner une source de donnes ODBC et dy accder. La
source indique lemplacement et le type des donnes auxquelles lapplication veut
accder. Le Tableau 15.1 dcrit chaque champ ODBC.
Tableau 15.1 : Les zones de texte de la bote de dialogue Connexion ODBC
spcient les options ODBC
Nom
Description
DSN
Nom de la source de donnes. Cette option liste (dans une bote de liste
droulante) les sources ODBC actuellement enregistres dans la base
de registres de lutilisateur.
ID
Mot de passe
Base de donnes
Pilote
Liste droulante qui prsente tous les pilotes prsents sur le systme
et qui permet lutilisateur denregistrer un nouveau pilote ODBC.
Serveur
Le code ncessaire pour connecter les valeurs contenues dans la bote de dialogue
ODBC la bonne base de donnes compatible ODBC est assez complet. Vous devez
comprendre le sens des commandes ODBC ncessaires la connexion de la base de
donnes externe. Elles dpassent cependant le cadre de cet ouvrage, car les programmeurs Visual Basic ont rarement recourir de telles routines, sauf dans les applications
systme.
>
:
502
ce
Astu
Info
Najoutez au dossier des modles que des feuilles assez gnrales, sans trop
de dtails, moins que vous ne souhaitiez expressment voir tous ces dtails
dans les feuilles que vous crerez partir du modle.
Pour supprimer une feuille ajoute dans le dossier des modles, dmarrez
lExplorateur Windows et allez dans le dossier \Template\Forms. Slectionnez la feuille et supprimez-la. La prochaine fois que vous afcherez la
liste des modles, elle aura disparu.
En rsum
La leon daujourdhui vous a expliqu comment utiliser les modles de feuilles pour
normaliser les applications et acclrer le dveloppement et la prcision des programmes.
Les modles de feuilles comportent plusieurs feuilles standards que les programmeurs
ajoutent souvent aux applications Windows. Vos utilisateurs apprcieront de voir des
feuilles normalises dans vos applications.
Les modles sont des feuilles dusage gnral qui peuvent sajouter tout projet. Ils
contiennent des rceptacles pour le texte et les images qui peuvent tres modis une
fois que le modle est charg dans le projet. Votre application commande lafchage de
la feuille et interagit avec le code du modle de feuille.
La leon de demain dbute une tude sur deux jours des objets et de leur relation la
programmation Visual Basic.
Questions-rponses
Q Pourquoi dois-je rendre les modles de feuilles gnraux ?
R En rendant vos modles de feuilles aussi gnraux que possibles (en ne conservant
que les dtails qui ne changent pas dune application lautre), vous simpliez la
gnration des nouvelles feuilles partir des modles. Dans la leon daujourdhui,
vous avez vu plusieurs modles fournis avec Visual Basic. La plupart des textes
quils contiennent sont des rceptacles qui indiquent o il faut que vous interveniez
pour personnaliser la feuille.
503
<
:
Partie III
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que vous
avez appris. Essayez de comprendre les questions et les exercices avant de passer la
leon suivante. Les rponses se trouvent lAnnexe A.
Quiz
1. Quel est le but des modles de feuilles ?
2. Dcrivez deux manires dajouter des modles de feuilles vos applications.
3. Dcrivez le code ncessaire pour connecter la bote de dialogue A propos de un
projet.
4. Vrai ou faux. Vous devez crire le code qui afche les informations systme quand
lutilisateur clique sur le bouton Infos systme de la bote de dialogue A propos de.
5. Quelle est la diffrence entre un cran daccueil et une feuille normale ?
6. Considreriez-vous que la bote de dialogue Astuce du jour est un cran daccueil ?
7. Quel est le but de la commande SaveSetting ?
8. Quelle est la signication dODBC et quel est son but ?
9. Que devez-vous faire dans la bote de dialogue Proprits pour que votre application
puisse afcher correctement un cran daccueil ou une bote de dialogue Astuce du
jour ?
10. Dcrivez le format du chier des astuces ncessaire la bote de dialogue Astuce du
jour.
Exercices
1. Suivez le conseil donn dans la partie concernant la bote de dialogue Connexion pour en
transformer le code en un meilleur ensemble de routines. Remplacez la variable globale
par des variables locales.
2. Crez une application qui afche sur le PC une astuce diffrente chaque fois que
lapplication dmarre. (Vous pouvez modier le chier des astuces dcrit dans la leon
daujourdhui.) Ajoutez une option de menu la feuille principale pour que les astuces
puissent se rafcher au dmarrage. Indice : regardez la procdure chkLoadTipsAtStartup() et utilisez la commande SaveSetting pour rinitialiser les astuces. Mme si
vous ne matrisez pas cette commande, vous disposez de tous les outils ncessaires
lachvement rapide de ce projet.
>
:
504
Chapitre
16
le contrle OLE ;
les diffrences entre la liaison et lincorporation dobjet ;
comment placer les objets dautres applications dans vos applications ;
lactivation in situ ;
comment utiliser les groupes de contrles ;
comment grer des collections, ;
comment grer lExplorateur dobjets.
505
Partie III
Info
La raison dtre de lutilisation dOLE rside dans la possibilit demployer des objets
extrieurs dans les applications que vous concevez. Le contrle OLE de la fentre Bote
outils gre la connexion lobjet OLE de votre projet. Les utilisateurs peuvent tirer
avantage de lactivation in situ lorsquils accdent des objets OLE incorpors.
ition
Dfin
Liaison et incorporation
Le contrle OLE peut, suivant sa conguration, maintenir un lien vers un objet ou
lincorporer. Lorsque vous tablissez un lien vers une autre application, le contrle OLE
(le conteneur) contient une liaison avec un de ses documents. Si ce dernier est modi
dans lapplication dorigine, votre application le retera. Lobjet est dit permanent, car
son contenu peut tre maintenu jour par la liaison.
>
:
506
ition
Dfin
Lorsque vous incorporez dans votre application un objet OLE, le contrle conteneur
OLE contient une copie de lobjet document cr dans lautre application compatible
OLE. Mais aucune liaison nest maintenue entre votre application et lobjet dorigine.
Donc, si ce dernier est modi dans son application originelle, cela ne se retera pas
dans votre application, car vous disposez dune copie de cet objet.
Voici comment les deux types dactivit OLE affectent vos projets :
Si vous liez un objet au contrle OLE de votre application, Visual Basic dmarre en
fait lapplication parente lorsque lutilisateur tente dutiliser ou de modier lobjet
en double-cliquant dessus. Lutilisateur doit choisir loption de menu Fichier,
Fermer et revenir lapplication lorsquil a ni de travailler sur lobjet.
Le contrle OLE
Ouvrez une nouvelle application et double-cliquez sur le contrle OLE pour lajouter
la feuille. Une grande zone blanche safche un instant sur la feuille, puis la bote de
dialogue Insrer un objet, illustre la Figure 16.1, safche. Certains contrles
afchent une bote de dialogue lorsque vous cliquez sur la rubrique de proprit
(Personnalis), mais le contrle OLE est le seul qui afche automatiquement une bote
de dialogue ds quil est plac sur la feuille.
Figure 16.1
La bote de dialogue
Insrer un objet
contient toutes
les applications OLE
inscrites sur votre
systme.
507
<
:
Partie III
Info
La zone de liste Type dobjet contient les applications compatibles OLE parmi
lesquelles vous devez faire votre slection. La liste varie suivant les logiciels
installs sur votre machine. Une application met jour la base de registres
avec ses objets lors de son installation. Une application Windows peut produire
deux ou plusieurs contrles personnaliss. Par exemple, si PowerPoint 97 est
install, vous trouverez deux contrles PowerPoint dans la liste.
Loption Crer nouveau vous permet de spcier une application pouvant crer le type
dobjet que vous voulez incorporer. Si lobjet de donnes de lautre application existe
dj, vous pouvez cliquer sur loption Crer partir dun chier. Une page de slection
de chier safche alors (voyez la Figure 16.2). A partir de cette fentre, vous pouvez
incorporer lobjet ou cocher la case Lien pour ajouter un pointeur sur lobjet.
Figure 16.2
Vous pouvez
incorporer ou lier
un objet existant dans
votre contrle OLE.
Supposons que vous voulez crer des notes dans une application, qui peuvent par exemple se rapporter un enregistrement client. Vous pouvez :
amliorer le concept de zone de texte simple en crivant une routine de capture des
frappes clavier qui analyse la saisie et remplace la zone de texte simple en un traitement
de texte complet qui formate le texte et supporte les rgles et les marges (ce qui peut
tre assez long crire) ;
A lvidence, la troisime option parat la bonne, car elle vous permet doffrir lutilisateur
la puissance dun traitement de texte sans que vous ayez en crire une ligne : WordPad
existe dj. Tout le monde ne dispose pas de Microsoft Word sur sa machine, mais
WordPad est fourni avec Windows (depuis Windows 95). Vos utilisateurs y ont donc accs,
ce qui leur permet deffectuer lactivation in situ de lobjet.
>
:
508
Height : 3375
Left : 840
Top : 1080
Width : 5055
509
<
:
Partie III
Figure 16.4
Voici un traitement de
texte au milieu de
votre application
Visual Basic !
9. Tapez du texte et utilisez les menus pour le formater votre convenance. Toutes les
options de WordPad sont disponibles dans votre application Visual Basic.
10. Fermez lapplication.
ntion
Atte
Aucun enregistrement de ce que vous avez tap dans WordPad nest effectu.
Lorsque vous fermez lapplication Visual Basic, le document WordPad
svanouit et nest jamais enregistr. Ni Visual Basic, ni WordPad ne vous en
avertissent. Cet enregistrement vous incombe en tant que programmeur.
Notez que les menus in situ ne comportent pas les options habituelles du
menu Fichier.
>
:
510
Lors des excutions suivantes, votre application doit lire les dernires valeurs de lobjet
dans le contrle conteneur OLE en utilisant la mthode ReadFromFile, illustre dans le
Listing 16.2.
Listing 16.2 : Lire le contenu de lobjet contrle conteneur OLE enregistr
la prcdente excution
Vous pouvez placer le code de lecture et dcriture dans des procdures vnementielles
lies des boutons de commande ou des lments de menu. Rptons que cest votre
application, et non pas lapplication OLE, qui a la charge denregistrer et de charger les
donnes. Lapplication OLE soccupe quant elle de toutes les autres tches en relation
avec lobjet.
511
<
:
Partie III
Les sections qui suivent dcrivent des objets non OLE. Vous apprendrez comment
affter vos comptences en programmation en tirant avantage des groupes de contrles
et des collections dobjets.
ition
Dfin
>
:
512
Les objets sont encapsuls. Comme une capsule contient des mdicaments
ou des astronautes en route vers la lune, des mthodes, des vnements et
des proprits sont encapsules dans un objet. Lencapsulation vous permet
de travailler sur les objets dun point de vue plus lev en vous vitant
lcriture de tout le code ncessaire leur support. Une classe dnit le
comportement et lapparence des objets quelle contient.
Classes dobjets
Les objets napportent pas seulement lencapsulation, ils font aussi partie dune hirarchie nomme classe dobjets. Lavantage dune classe est que tous ses objets partagent
les mmes caractristiques. (Un objet unique est dit tre une instance de la classe.)
Info
Vous pouvez crer vos propres objets. Si vous les intgrez dans une classe
existante, ils bncient automatiquement, ou hritent, des nombreux
proprits, mthodes et vnements de la classe.
Lorsque vous testez un objet laide de If TypeOf, Visual Basic renvoie sa classe. La
ligne de code suivante renvoie donc True ou False, suivant que lobjet myObj fait partie
ou pas de la classe CommandButton :
If TypeOf myObj Is CommandButton
ce
Astu
Vrifie la classe
Les classes rendent plus souple la programmation avec les objets. Par exemple, les
instructions With End With vous permettent dassigner simplement plusieurs proprits
un objet. Notez la redondance du code ci-dessous :
En entourant un objet dun bloc With End With, vous pouvez liminer la rptition du
nom de lobjet. Le code suivant est identique au prcdent :
With chkMaster
.Alignment = vbLeftJustify
.Enabled = True
.Font.Bold = False
513
<
:
Partie III
.Left = 1000
.RightToLeft = False
.Top = 400
End With
Info
ce
Astu
Lutilisation de With End With sur deux ou trois proprits demande plus
de saisie que des assignations directes. Cependant, lorsque vous avez plus de
trois proprits assigner, la clause With devient une instruction attirante,
car elle demande moins de saisie et la maintenance est plus facile si vous
devez ajouter des proprits.
Si vous pensez avoir assigner des proprits supplmentaires dans de futures
versions du programme, vous pouvez anticiper et utiliser la clause With, mme
avec une ou deux proprits.
Objets systme
Contrairement aux objets que vous dclarez, les objets systme sont les objets comme App
ou Printer, que vous avez dj utiliss dans ce livre. Si vous ne pouvez pas transmettre les
objets systme (ils sont par nature globaux), vous pouvez les traiter comme les objets que
vous crez. Les objets systme reprsentent des lments particuliers de votre application.
Le Tableau 16.1 dcrit les objets systme et liste quelques mthodes importantes qui
peuvent leur tre appliques.
Tableau 16.1 : Les objets systme supportent plusieurs mthodes
Objet systme
Mthodes
App
Application en cours.
EXEName
Path
Title
PrevInstance
Clipboard
>
:
514
Description
Presse-papiers de Windows.
Clear
Efface le Presse-papiers.
GetData
Mthodes
Description
GetFormat
GetText
SetData
SetText
SelStart
SelLength
SelText
Debug
Fentre Excution.
Print
Err
Printer
Screen
Ecran de lutilisateur.
FontCount
Fonts
Height
515
<
:
Partie III
Mthodes
Description
MousePointer
TwipsPerPixel
X
TwipsPerPixel
Y
Width
Vous avez travaill avec la majorit des objets systme en particulier Printer et
Screen avant la leon daujourdhui. Lobjet App est utile pour dterminer au moment
de lexcution des informations comme le chemin et le nom de chier du programme ;
lobjet Clipboard fournit quelques fonctionnalits intressantes utiliser. Lobjet Debug
vous permet dinteragir avec votre programme lors des tests pour vous aider en
extraire les bogues.
Suivant les besoins de votre application, lobjet Clipboard est relativement simple
programmer. Cest le Presse-papiers de Windows ; vos applications peuvent donc y
couper ou copier des informations, que lutilisateur peut ensuite coller dans une autre
application Windows. Votre application peut aussi coller des informations dj contenues dans le Presse-papiers.
Vous pouvez utiliser lobjet Clipboard et ses proprits pour slectionner du texte
partir de votre programme et pour dterminer le texte slectionn par les utilisateurs. Par
exemple, la proprit SelStart marque la position du dbut de la slection dans la zone
de texte (ou dun autre type de contrle qui reoit la slection). La mise 0 de SelStart
place le curseur devant le premier caractre. SelLength dtermine le nombre de caractres choisis. Si vous slectionnez du texte en congurant SelStart et SelLength, ce texte
est transmis au Presse-papiers lorsque lutilisateur frappe Ctrl-C (pour copier) ou Ctrl-X
(pour couper). SelText est une chane qui contient le texte slectionn.
Si vous avez slectionn du texte dans une zone de texte, il se retrouve dans SelText.
Vous pouvez effacer la valeur courante de lobjet Clipboard (le Presse-papiers ne peut
contenir quune valeur la fois), puis envoyer le texte slectionn au Presse-papiers
laide du code suivant :
Clipboard.Clear
Efface le contenu du Presse-papiers
Clipboard.SetText txtName.SelText Copie le texte
>
:
516
Pour copier le texte du Presse-papiers dans une variable, vous pouvez utiliser
GetText(), ainsi :
strInfo = Clipboard.GetText()
Pour remplacer le texte slectionn dans un contrle par le texte contenu dans lobjet
Clipboard, vous pouvez le faire de cette manire :
txtName.SelText = Clipboard.GetText()
La mthode GetText() utilise parfois des arguments et elle exige des parenthses, mme
si vous nen spciez pas. Pour travailler sur du texte dans le Presse-papiers, il nest pas
ncessaire de fournir des arguments.
Controls(intCtr).Visible = False
Next intCtr
Si votre application contient plusieurs feuilles, vous pouvez masquer tous les contrles
de lensemble des feuilles en utilisant des boucles imbriques (lutilisation de For Each
limine la ncessit de recourir Count - 1) :
1: Dim frmAForm As Form
2: Dim ctlAControl As Control
3: For Each frmAForm In Forms
feuilles
4:
5:
6:
7:
517
<
:
Partie III
ntion
Atte
La collection Controls contient tous les contrles de la feuille en cours ; vous pouvez
cependant dnir un groupe de contrles dun type particulier. Un groupe de contrles
se dclare comme suit :
Dim ctlManyLabels(1 To 4) As Label
Les collections, approfondies la section suivante, fonctionnent comme des groupes qui
permettent daccder aux lments comme on le fait avec un tableau. Au lieu de crer
les objets lors de la conception, vous pouvez crer un groupe dobjets comme suit
(remarquez lutilisation du mot cl New) :
Dim fmrArray(1 To 10) As New frmFirstForm
Pour par exemple diminuer la taille de police des contrles dune feuille quand un
utilisateur la redimensionne, vous pouvez utiliser la collection Controls pour le faire
dans chaque contrle :
1:
2:
3:
4:
5:
6:
7:
La taille de police des contrles sera rduite de 25 % par rapport ce quelle tait avant
que lutilisateur redimensionne la feuille.
Vous ne trouverez pas beaucoup de programmeurs Visual Basic qui utilisent des groupes
de contrles quand une collection existe pour le mme objet (Visual Basic fournit une
>
:
518
collection Forms). Pour utiliser les groupes de contrles, vous devez dclarer de la
mmoire pour les contenir et pour initialiser les tableaux.
Visual Basic supporte une technique que vous utiliserez sans doute souvent pour crer les
groupes de contrles. Lorsque vous copiez un contrle et que vous le collez nouveau sur
la feuille, Visual Basic afche la bote de message de la Figure 16.5.
Figure 16.5
Visual Basic va
crer un groupe de
contrles pour vous.
Vous pouvez vous demander pourquoi copier et coller un contrle, mais si vous avez
placer plusieurs boutons de commande ou tiquettes qui ont tous le mme format, cest
une technique utile : vous crez le premier contrle, congurez toutes ses proprits, le
copiez ensuite dans le Presse-papiers et enn, vous le collez sur la feuille pour ajouter
autant de contrles que vous le voulez.
Ds que vous collez le contrle, Visual Basic afche la bote de message de la Figure 16.5.
Si vous rpondez Oui, Visual Basic cre automatiquement un groupe de contrles en
utilisant le nom du premier. Par exemple, si le premier contrle est Command1, les lments
commenceront Command1(0) et lindice augmentera tant que vous continuerez coller le
contrle.
Votre code peut alors parcourir tous les lments du groupe, de Command1(0)
Command1(n 1), n tant le nombre de contrles du groupe, et dnir des proprits pour
chacun.
Collections
Les collections jouent un rle vital dans la programmation Visual Basic, comme vous
avez dj pu le voir. Elles sont toujours prsentes et Visual Basic les met jour automatiquement ; si vous ajoutez par exemple une feuille lors de lexcution avec la
dclaration New Form, Visual Basic actualise en consquence la proprit Count de la
collection Forms.
Les collections prdnies sont sans aucun doute utiles. Alors, pourquoi ne pas en crer
une ? Visual Basic vous y autorise. Vous devrez cependant la grer vous-mme ce qui
demande plus deffort que pour les collections prdnies.
519
<
:
Partie III
Comme vous le savez maintenant, tous les objets appartiennent une classe. Tout ce qui
sapplique une classe sapplique ses objets. Par exemple, si un contrle est un
membre de la classe CommandButton, vous savez quil supporte lvnement Click, car
tous les membres de la classe CommandButton supportent cet vnement.
Vos collections propres doivent tre des objets de la classe Collection. Elles se dnissent au niveau du module en utilisant les mots cls Public ou Private, suivant la plage
des procdures qui doivent y accder. Linstruction suivante dclare une collection
nomme colMyCol :
Private colMyCol As New Collection
Une collection fonctionne comme une tagre vide. Vous pouvez placer des objets (comme
des livres), les ter, les compter, etc. Naturellement, sur une tagre on peut mettre autre
chose que des livres. Dans une collection, on ne peut mettre quun type dlment, mais on
peut dclarer plusieurs collections contenant chacune des types dobjets diffrents. Voici les
mthodes auxquelles vos collections ont accs :
Comme le montre le Listing 16.3, Visual Basic soccupe de la mise jour de Count dans
lajout dlments la collection. Le code du Listing 16.3 cre une collection nomme
Cities et y ajoute quatre lments (des noms de ville).
Listing 16.3 : Utilisation de Add pour ajouter des lments la nouvelle collection
>
:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
520
Il y a 4 villes :
Tulsa
Miami
New York
Seattle
Cette leon ne fait quefeurer les capacits des collections. Vous devez cependant
savoir que vous pouvez facilement y insrer et en ter des lments, dans lordre que
vous prfrez. Chaque lment de la collection est rfrenc par un indice, qui part de 1.
Dans lexemple prcdent, Cities(1) est la premire ville liste dans la collection. Les
indices de collection commencent toujours 1, et non 0 (comme le font les groupes de
contrles).
Vous pouvez utiliser largument nomm (un argument comprenant le nom de largument
suivi de loprateur dassignation, :=) Before pour ajouter des lments la collection
lendroit o vous les voulez. La ligne suivante ajoute une ville au dbut de la collection
Cities, quel quen soit le nombre dlments :
Cities.Add "St. Louis", Before:=1
Une position Before de 1 ajoute llment au dbut de la collection. Visual Basic ajoute
llment avant lindice spci. Si vous incluez cette instruction la n du code du
Listing 16.3, vous obtiendrez la sortie suivante :
Il y a 5 villes :
St. Louis
Tulsa
Miami
New York
Seattle
Si vous naviez pas indiqu largument Before:=1 dans linstruction, St. Louis se retrouverait la n de la collection.
Vous pouvez supprimer des lments spciques en utilisant la mthode Remove. Lorsque vous supprimez des lments, les indices sajustent pour toujours commencer 1.
Linstruction suivante supprime le second lment (Tulsa) de la collection.
Cities.Remove 2
521
<
:
Partie III
LExplorateur dobjets
En progressant dans votre connaissance de Visual Basic, votre besoin doutils performants augmente. Visual Basic en comporte un, lExplorateur dobjets, qui vous permet
dinspecter les variables, les contrles et dautres objets de votre application. Les
programmeurs Visual Basic qui dcouvrent lExplorateur dobjets lutilisent beaucoup
plus souvent quils ne pensent le faire, car ses caractristiques simplient beaucoup la
programmation.
ition
Dfin
LExplorateur dobjets est un rfrentiel en ligne complet, mais pas dans le mme sens
que laide en ligne. LExplorateur dobjets vous offre un endroit unique o chercher les
objets et leurs informations. Il vous permet aussi de sauter directement au code dont
vous avez ensuite besoin.
Info
>
:
522
Figure 16.6
LExplorateur
dobjets dcrit
les objets de votre
application.
Zone de liste
Projet/Bibliothque
Texte
rechercher
Bouton
Rechercher
Classes
Membres
Description
Texte rechercher
Contrles de manuvre
Classes
Membres
523
<
:
Partie III
Lorsque vous slectionnez lentre Left, Visual Basic dcrit la fonction dans le bas de la
fentre de lExplorateur dobjets. Le texte dcrit non seulement le but de la fonction, mais
il montre aussi son format. Vous pouvez connatre la nature de chaque objet de la liste des
Membres par son icne. Par exemple, la petite icne verte indique une fonction. Faites
dler la liste pour voir toutes les constantes nommes qui safchent aprs les fonctions
et les collections dans la fentre Membres.
Si vous cliquez du bouton droit et slectionnez Membres du groupe dans le menu
contextuel, Visual Basic groupe les lments Membres et Classes par usage, et non plus
par ordre alphabtique.
ce
Astu
Vous pouvez tre encore plus spcique avec lExplorateur dobjets. La liste des Classes
contient entre autres plusieurs entres qui rfrencent des constantes nommes. Quand
vous cliquez sur lentre ColorConstants, par exemple, seules les constantes nommes
de couleurs de Visual Basic safchent dans la liste des membres (voyez la Figure 16.7).
ce
Astu
Vous pouvez utiliser ces constantes nommes partout dans votre code o
vous avez besoin dune couleur. Par exemple, vous pouvez congurer la
couleur darrire-plan dune feuille ainsi :
frmMyForm.BackColor = vbRed
Tous les contrles de la bote outils apparaissent galement dans la liste des Classes.
Si vous cliquez sur ComboBox, par exemple, lExplorateur dobjets afche toutes les
informations pertinentes le concernant, ses proprits, ses mthodes et ses vnements.
>
:
524
Figure 16.7
La recherche
des objets
a t rduite
des constantes
particulires.
Si vous cliquez sur une des entres dans la liste des Membres, vous en obtiendrez une
description.
Les programmeurs utilisent lExplorateur dobjets pour de nombreux usages. Il afche
les objets dune manire organise. Outre les objets, il coordonne toutes les particularits
de votre programme. Par exemple, si vous crivez du code et voulez utiliser des fonctions
internes de date et dheure, cliquez sur lentre DateTime dans la liste de Classes.
Comme le montre la Figure 16.8, la liste des Membres se met jour et ne montre que les
fonctions intgres qui concernent les dates et heures.
Mme si ces fonctions sont galement listes dans laide en ligne ou ailleurs, pouvoir
rviser toutes les fonctions concernant la date et lheure simplie la programmation, car
elles se retrouvent classes thmatiquement.
ce
Astu
LExplorateur dobjets est aussi trs utile pour dcrire votre projet. Lorsque vous ajoutez
des objets, des variables et des procdures vnementielles, lExplorateur dobjets
soccupe dans lombre tout recenser. La Figure 16.9 montre le Projet1 slectionn
525
<
:
Partie III
Figure 16.8
Trouver
la fonction
intgre sur
un certain sujet
est facile.
dans la zone de liste Projet/Bibliothque. Quand vous cliquez sur Form1 (pour linstant le
seul objet de ce projet), lExplorateur dobjets afche la liste complte des procdures
vnementielles, des mthodes et des proprits correspondantes. Une seule entre,
Command1_Click est en gras, ce qui signie que du code a t ajout dans cette procdure.
Un des aspects les plus puissants de lExplorateur dobjets est loption Afcher la
dnition. Si vous slectionnez un membre qui fait partie de vos propres objets (par exemple une procdure vnementielle que vous avez crite ou un objet que vous avez dclar),
puis que vous cliquez du bouton droit et slectionnez Afcher la dnition, Visual Basic
saute directement au code o cet objet est dni. Vous pouvez ainsi utiliser lExplorateur
dobjets pour localiser du code spcique dans une application volumineuse. Vous navez
pas besoin de savoir dans quel projet lobjet a t dni tant que vous pouvez le localiser
dans lExplorateur dobjets.
Quand vous cherchez un lment dans lExplorateur dobjets, vous obtenez une liste de
toutes les rfrences faites cet lment dans votre application. Par exemple, si vous
cherchez Click, Visual Basic afche une fentre supplmentaire (voyez la Figure 16.10)
qui contient toutes les rfrences en rapport dans le projet (et dans tout le rpertoire
Visual Basic, car loption <Toutes bibliothques> est slectionne).
>
:
526
Figure 16.9
LExplorateur
dobjets
ne montre que les
caractristiques
spciques de
lapplication.
Lvnement Click se produit sur divers objets, donc lExplorateur dobjets afche une
fentre qui contient tous les objets rfrencs qui supportent Click. Vous pouvez ensuite
afner la recherche en cliquant sur lobjet ou le projet qui contient lvnement Click
que vous recherchez.
En rsum
Ce chapitre na trait que des objets. Vous avez appris la manire dont les objets OLE
fonctionnaient dans Visual Basic. Le contrle OLE ne fait rien en lui-mme si ce nest
contenir des objets (ou des liens vers des objets) dautres applications. Une fois ces
objets en place, lutilisateur peut les modier et les manipuler lintrieur de votre
application. Vous navez pas crire de commandes pour accder lautre application,
car les objets OLE sont intelligents et ils en amnent tous les outils ddition, y compris
les menus.
Outre les collections, Visual Basic vous permet de dclarer des groupes de contrles, qui
fonctionnent souvent comme des tableaux dobjets. Vous pouvez dupliquer les contrles
527
<
:
Partie III
Figure 16.10
La fonction
de recherche
a trouv toutes
les occurrences
de Click.
Fentre de
rsultats
Sujet de
recherche
dune feuille pour quils partagent des caractristiques communes, en nayant plus qu
modier les proprits qui diffrent (par exemple le titre ou la couleur). Les objets
systme proposent des objets prdnis avec lesquels votre application peut interagir
avec les ressources extrieures lenvironnement classique du programme. En accdant
lobjet App, votre application peut dterminer en cours dexcution le chemin partir
duquel elle a t lance. Lobjet Clipboard permet votre application dinteragir avec le
Presse-papiers de Windows pour copier et coller du texte.
Visual Basic fournit un outil dorganisation, lExplorateur dobjets, qui est essentiellement un rfrentiel de donnes. Vous pouvez rechercher des vnements, des mthodes ou des proprits spciques ou consulter toute une classe dobjets. LExplorateur
dobjets suit mme dans votre code les objets que vous avez initialiss et les procdures
vnementielles que vous avez crites.
La leon de demain passe la gnration suivante des objets en dcrivant comment
utiliser et crer les contrles ActiveX.
>
:
528
Questions-rponses
Q Lutilisateur doit-il disposer de lapplication dorigine de lobjet OLE pour que
ce dernier fonctionne dans lapplication Visual Basic qui lutilise ?
R Oui, car lautomatisation in situ exige les menus et toutes les caractristiques de
lapplication dorigine. Si cette dernire nest pas installe, lutilisateur sera incapable de modier lobjet OLE. Microsoft Excel, par exemple, tableur trs puissant
qui occupe beaucoup despace disque et de mmoire, est compatible OLE. Vous
pouvez donc amener une feuille Excel dans une application que vous concevez, et
lutilisateur disposera alors de toute sa puissance dans votre programme. Etant
donn la taille dExcel, de ses menus et de ses caractristiques, il ne pourrait
jamais tre intgr dans votre application avec son objet. Il faut donc quExcel soit
install pour pouvoir utiliser un objet Excel dans votre application. Vous devez
clairement dclarer les exigences de votre application, dont la prsence de
programmes auxiliaires tels que Microsoft Excel, pour que lon puisse lutiliser
pleinement.
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que
vous avez appris. Essayez de comprendre les questions et les exercices avant de passer
la leon suivante. Les rponses se trouvent lAnnexe A.
Quiz
1. Quelle est la diffrence entre liaison et incorporation ?
2. Quel type de technique OLE, liaison ou incorporation, consomme votre avis le plus
despace disque ?
3. Vrai ou faux. Visual Basic enregistre automatiquement les modications que fait
lutilisateur aux objets OLE incorpors.
4. Quelle est la mthode permettant denregistrer un objet OLE dans un chier
disque ?
5. Quelle est la mthode permettant de lire un objet OLE partir dun chier disque ?
6. Indiquez deux manires de tester la classe dun objet.
529
<
:
Partie III
7. Vrai ou faux. Vous devez transmettre les objets systme si vous devez y accder
partir de plusieurs procdures.
8. Indiquez trois types dlments qui apparaissent souvent dans la liste des Membres
de lExplorateur dobjets.
9. Que se passe-t-il si vous groupez la liste des Membres dans lExplorateur dobjets ?
10. Vrai ou faux. LExplorateur dobjets ne recherche pas les objets que vous avez crs.
Exercices
1. Pourquoi lutilisation de With End With est-elle sans doute une mauvaise ide dans
ce cas ?
With chkMaster
.Alignment = vbLeftJustify
End With
2. Ecrivez une application simple qui contient un contrle OLE. Incorporez-y lobjet
Image Paintbrush de Windows. Ajoutez une option de menu permettant denregistrer
les images et une autre pour les charger. Excutez lapplication, double-cliquez sur le
contrle et dessinez une image. Enregistrez-la, quittez lapplication, puis redmarrezla. Chargez limage enregistre pour vous assurer que les procdures de chargement et
denregistrement sont correctes.
>
:
530
Chapitre
17
Contrles ActiveX
La leon daujourdhui vous montre comment apprhender et utiliser les contrles
ActiveX. En ajoutant des contrles ActiveX votre fentre de bote outils, vous ajoutez
des fonctionnalits lenvironnement Visual Basic et rduisez le temps ncessaire au
dveloppement des applications.
La technologie objet supporte par Visual Basic vous permet demprunter des fonctionnalits dautres applications qui supportent ActiveX et lautomatisation ActiveX. Par
exemple, votre application Visual Basic peut crer un document Word ou une feuille de
calcul Excel en empruntant la technologie de ces applications externes.
Une fois que vous aurez compris limportance de la technologie des contrles ActiveX et
les nombreuses manires dont vous pouvez en tirer parti, vous apprendrez comment crer
vos propres contrles ActiveX.
Aujourdhui vous apprendrez :
comment crer une feuille de calcul Excel partir dune application Visual Basic ;
531
Partie III
La technologie ActiveX
La technologie ActiveX est la version actuelle de lensemble de contrles dextension
VBX apparus il y a quelques annes. Lextension de chier .VBX signie "Visual Basic
eXtended". En dautres termes, les contrles ActiveX sont les descendants des contrles
que vous pouviez ajouter aux versions antrieures de Visual Basic pour tendre la bote
outils livre avec le produit.
Dans le pass, les contrles Visual Basic ntaient pas compatibles avec la technologie
des navigateurs Web, lInternet et les autres outils de programmation de Windows, tels
que Visual C++. Cependant, ils taient importants pour permettre aux programmeurs
dtendre leur capacit crire du code. Plus le programmeur dispose de contrles,
moins il a de travail faire. En consquence, une communaut et toute une activit se
sont dveloppes pour crer des contrles Visual Basic manipulant des graphiques, des
donnes, des grilles, du multimdia, etc. Leur succs a oblig Microsoft les reconcevoir (car ils ntaient compatibles avec aucun autre produit Microsoft).
Info
OLE est une technique cousine des contrles VBX, mais qui est plus
universelle dans les applications Microsoft elle na pas t conue
exclusivement pour les programmeurs Visual Basic. Cependant, comme
vous avez pu le voir hier, un objet OLE est un objet de donne (et pas un
contrle) utilisable comme un contrle Visual Basic.
Entre les contrles Visual Basic et ActiveX, Microsoft a conu des contrles OCX
32 bits particuliers. Ces nouveaux contrles Visual Basic tendaient les capacits de
Visual Basic, mais aussi dautres langages de programmation comme Visual C++. Les
contrles OCX avaient une extension de chier .OCX. Les anciens contrles VBX ne
reconnaissent que les applications 16 bits.
ntion
Atte
>
:
532
Les contrles OCX, bien que compatibles avec Visual C++, ne fonctionnaient pas
simplement sur lInternet ; Microsoft les a donc fait voluer en contrles ActiveX, pour
permettre aux navigateurs Internet et aux multiples applications et langages de programmation de fonctionner correctement avec eux.
Y aura-t-il un remplacement ActiveX ? Sans doute un jour, suivant les nouvelles techniques qui demanderont des fonctionnalits que ne propose pas la technologie ActiveX.
Info
ntion
Atte
Quune application utilise tous les contrles ActiveX chargs au moment de la compilation ou pas, il est obligatoire de distribuer les chiers excutables ActiveX avec le
projet.
533
<
:
Partie III
ition
Dfin
Il existe des contrles ActiveX pour pratiquement toutes les tches de programmation
que vous pouvez avoir faire. Pour un meilleur contrle du son que celui offert par le
contrle multimdia, vous pourrez trouver de nombreux types de contrles ActiveX
relatifs au son en ligne. De mme, les contrles graphiques 3D, les contrles Internet, les
contrles mathmatiques, dimprimantes, de scanners et un vaste assortiment dautres
contrles sont disponibles. Vous devrez dcider du type de programmation que vous
effectuez le plus souvent et rechercher les contrles particuliers qui peuvent vous assister.
Par exemple, si vous crivez un logiciel de publication, vous chercherez tous les contrles
de manipulation et ddition de texte possibles.
Lorsque vous ajoutez un nouveau contrle ActiveX la fentre Bote outils,
comment lutiliser ? Pour commencer, vous pouvez considrer que les contrles ActiveX
supportent les lments suivants :
Proprits ;
Evnements ;
Mthodes.
Autrement dit, vous utilisez un contrle ActiveX exactement comme nimporte quel
autre contrle. Il vous faudra obtenir une liste des proprits, vnements et mthodes
supports par le contrle pour pouvoir le programmer correctement. Si de nombreuses
proprits des contrles apparaissent parfois dans la fentre Proprits, ce nest pas
toujours le cas (en particulier pour les contrles disponibles lexcution). Lorsque vous
achetez des contrles ActiveX ou que vous les tlchargez depuis les sites Internet qui les
proposent, vous devez aussi obtenir des instructions qui listent les proprits, vnements
et mthodes. Les contrles ActiveX fournis avec Visual Basic sont rfrencs dans laide
en ligne.
La Figure 17.1 montre la bote de dialogue Composants, qui safche quand vous
slectionnez Projet, Composants. Vous avez dj rencontr cette bote de dialogue
plusieurs fois dans ce didacticiel, car vous avez dj ajout des contrles ActiveX
auparavant, par exemple le contrle multimdia.
Lorsque vous installez Visual Basic, plusieurs contrles ActiveX sont ajouts votre
systme ; vous pouvez votre tour les ajouter un projet par la bote de dialogue
Composants. De plus, la routine dinstallation de Visual Basic recherche aussi sur votre
systme des contrles supplmentaires ajouter, dont nombre apparatront dans la bote
de dialogue Composants. Une installation de Visual Basic sur deux ordinateurs
>
:
534
Figure 17.1
Utilisez la bote de
dialogue Composants
pour ajouter de
nouveaux contrles
ActiveX votre projet.
diffrents peut donc prsenter des ensembles de contrles ActiveX diffrents. Cliquez
sur le bouton Parcourir de la bote de dialogue pour rechercher les chiers de contrles
ActiveX de votre disque dur.
ce
Astu
Lorsque vous ajoutez des contrles dans la fentre Bote outils, elle peut vite se
remplir. Observez longlet Gnral au sommet de la bote outils. En cliquant du
bouton droit sur une zone vierge dans la fentre Bote outils, vous pouvez y crer de
nouveaux onglets pour regrouper des contrles ActiveX. Pour ajouter des contrles dans
un nouveau groupe, cliquez sur longlet correspondant, puis ajoutez-les. (La bote de
dialogue Composants est disponible partir du menu contextuel de la fentre Bote
outils qui safche par un clic droit.) La Figure 17.2 montre un ensemble de contrles
ayant rapport Internet ajouts dans un groupe conu dans ce but.
535
<
:
Partie III
Figure 17.2
Les onglets de groupes permettent
dorganiser la fentre Bote outils.
Automatisation ActiveX
Jusquici, vous avez ajout quelques contrles et vous savez tout du paramtrage des
proprits, de la raction aux vnements et du dclenchement des mthodes.
Certains contrles ActiveX vous permettent cependant daller un cran au-del. Vous
pouvez en fait utiliser dans votre application un contrle incorpor et en emprunter
les fonctionnalits.
Visual Basic supporte une telle automatisation des contrles entre applications. Par
exemple, vous pouvez ouvrir Excel, charger une feuille de calcul, en manipuler les
donnes partir de commandes Excel, fermer Excel, puis incorporer la feuille de calcul
rsultante dans la fentre de votre application sans que les utilisateurs se doutent un
instant que vous avez emprunt les caractristiques dExcel.
ition
Dfin
>
:
536
Vous devez ensuite connecter la variable lapplication. Si cette dernire nest pas en
cours dexcution, vous devez la lancer larrire-plan par la fonction CreateObject().
Cette fonction ne se limite pas dmarrer lapplication, mais elle y connecte aussi votre
variable objet, ainsi :
Set obExcelApp = CreateObject("Excel.Application")
Utilisez Set au lieu dune simple assignation pour attacher lapplication automatise votre application Visual Basic. Une variable ne peut pas contenir
une application externe ; elle ne peut contenir que des valeurs telles que des
nombres et des chanes de caractres.
Utilisez Set pour crer une rfrence lobjet externe. Set nassigne pas,
mais fait pointer la variable sur lobjet quelle reprsente.
Remarquez la virgule au dbut de la liste des arguments. Vous pouvez, dans la plupart
des cas, omettre le premier argument, car le second dcrit lobjet que vous obtenez. Si le
second argument est absent, vous devez fournir, comme premier argument, le chemin
daccs un chier qui dcrit lobjet que vous voulez crer.
Si Excel est dj en cours dexcution, il est prfrable de ne pas en lancer une seconde
instance. En utilisant le droutement des erreurs, vous pouvez vrier si cest le cas. La
fonction GetObject() dclenchera une erreur si Excel nest pas en cours dexcution.
537
<
:
Partie III
Dans ce cas, vous pouvez alors utiliser CreateObject() pour dmarrer une instance
dExcel.
Voici un exemple de code que vous pouvez utiliser pour vrier quune instance dExcel
est dmarre :
1: Droutement des erreurs
2: On Error Resume Next
3:
4: Rfrence lapplication Excel
5: Set obExcelApp = GetObject(, "Excel.Application")
6: If Err.Number <> 0 Then
7:
Set obExcelApp = CreateObject("Excel.Application")
8:
blnRunning = False
Excel ntait pas en excution
9: Else
10:
blnRunning = True
11: End If
Vous avez dj tudi linstruction On Error Goto lors de leons prcdentes, mais cest
la premire fois que vous rencontrez loption Next. Jusquici, linstruction On Error se
droutait en cas derreur sur une tiquette dinstruction. Loption Next indique simplement Visual Basic, quand il rencontre une erreur, de passer linstruction suivante et
de continuer le programme. Cette situation fournit loccasion de dire quun code
derreur est renvoy chaque fois que linstruction On Error dtecte une erreur. Ce code
est une proprit dun objet prdni du systme nomm Err.
Tant quil ny a pas derreurs dans un programme en excution, Err.Number est 0. Par
consquent, si Err.Number contient une valeur diffrente, cela signie quune erreur
sest produite. Dans lexemple, la ligne 6 signalera un code derreur dans Err.Number si
la fonction GetObject() choue. Donc, la ligne 7, dduisant quExcel nest pas dj
dmarr, lance une instance dExcel par la fonction CreateObject(). (Pour dtecter
dautres erreurs plus loin dans le programme, comme vous devriez le faire si vous afchez des botes de dialogue et que vous aviez besoin de savoir si lutilisateur a cliqu sur
Annuler, vous pouvez rinitialiser ltat de lerreur en mettant Err.Number 0.) La variable
boolenne blnRunning est mise False pour que le programme sache quil a lanc Excel.
ntion
Atte
Quand vous ouvrez une autre application en utilisant lautomatisation, votre application
doit comprendre dans le dtail son interface. Dune certaine manire, votre programme
est un utilisateur de lautre application. Donc, si vous ouvrez Excel, vous interagissez
avec lui en utilisant la notation classique de ligne et de colonnes, mais vous devez aussi
utiliser une notation de proprits des objets spcique Excel.
>
:
538
ce
Astu
Vous devez maintenant dclarer un objet feuille de calcul pour que lapplication puisse
gnrer des donnes :
Dim obWorkSheet As Object
dans des
1).Value
2).Value
1).Value
2).Value
cellules
= "Ventes"
= "Mois"
= 21913.44
= "avril"
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
539
<
:
Partie III
Listing 17.1 : Votre application peut utiliser Excel pour crer une feuille de calcul
(suite)
24:
Entrer des valeurs dans les cellules de la feuille active
25:
obWorkSheet.Cells(1, 1).Value = "Ventes"
26:
obWorkSheet.Cells(1, 2).Value = "Mois"
27:
obWorkSheet.Cells(2, 1).Value = 21913.44
28:
obWorkSheet.Cells(2, 2).Value = "avril"
29:
30:
Slectionner la deuxime ligne pour formater
31:
obWorkSheet.Rows("2:2").Select
32:
obExcelApp.Selection.NumberFormat = "$##,###.##"
33:
34:
Enregistrer le classeur (changez ce nom sil existe dj)
35:
obExcelApp.Save ("c:\VBCreated.XLS")
36:
37:
Ne pas quitter si Excel tait dj lanc !
38:
obExcelApp.ActiveWorkBook.Close False
39:
40:
If Not (blnRunning) Then Sil ntait pas lanc...
41:
obExcelApp.Quit
alors quitter Excel
42:
End If
43:
44: End Sub
Si vous avez vri quExcel ntait pas dj en cours dexcution, vous pouvez le
fermer (comme le fait la ligne 41). Dans le cas contraire (la fonction GetObject() nayant
pas renvoy derreur), il nest pas souhaitable de quitter Excel, car il peut tre en train de
sexcuter en tche de fond. Le code de cet exemple cre la petite feuille de calcul illustre la Figure 17.3.
Figure 17.3
Votre application
Visual Basic peut
crer des feuilles
de calcul Excel !
>
:
540
Cette feuille de calcul est simple pour permettre lexemple davoir une taille raisonnable. Dordinaire, votre application Visual Basic peut modier des valeurs et mme
dclencher un graphique Excel et imprimer un tat. La chose importante retenir est
que Visual Basic a utilis lintelligence dExcel pour crer une feuille de calcul mise en
forme sans que lutilisateur, son clavier, ne sache quExcel est impliqu.
Une fois que vous avez utilis Excel ou Word ou une autre application compatible ActiveX, vous devez inclure cet objet dans votre application Visual Basic.
Info
Info
541
<
:
Partie III
Il reconnatra toutes les valeurs classiques des proprits reconnues par le contrle
TextBox standard.
Il contiendra aussi une nouvelle proprit, AutoTSize qui reconnat quatre valeurs :
1-NA, 2-Small, 3-Medium et 4-Large. Ces valeurs apparatront comme une numration dans une liste droulante de la fentre Proprits. Vous pouvez assigner, dans
votre code, 1, 2, 3 ou 4 la zone de texte pour paramtrer la valeur. La valeur 1-NA,
qui est la valeur par dfaut, ne modie pas la taille courante de police de la zone de
texte, dnie dans la proprit Font.Size. Lorsquon attribue la valeur 2-Small, le
texte de la zone de texte sera dimensionn 25 % de la valeur Height. La valeur 3Medium met la taille du texte la moiti de la valeur Height. Enn, la valeur 4-Large
mettra le texte 75 %. (La valeur de la proprit Font.Size se modiera pour reter la nouvelle taille.) Cela donne une manire simple de paramtrer le texte de la
zone de texte une de ces trois valeurs.
ition
Dfin
Une numration est une liste de valeurs xes pouvant tre prises par un
contrle, par exemple, True et False. Les valeurs numres apparaissent
dans une liste droulante en face de la proprit dans la fentre Proprits.
Le nouveau contrle ActiveX que vous crerez ressemblera et fonctionnera comme les
autres. Vous pourrez linsrer dans la fentre Bote outils, double-cliquer dessus pour
lajouter la fentre feuille, et slectionner ses proprits partir de la fentre Proprits.
Ce nouveau contrle est visible lors de lexcution, mais vous pouvez aussi crer un
contrle larrire-plan qui ne safche pas dans la fentre feuille lors de lexcution
>
:
542
(comme cest le cas du contrle Timer). Il faut pour cela positionner la proprit InvisibleAtRunTime True. Un tel contrle fonctionne larrire-plan et napparat pas sur la
feuille utilisateur. (La proprit Visible dtermine simplement si le contrle peut tre vu,
alors que la proprit InvisibleAtRunTime, lorsquelle prend la valeur True, garantit que le
contrle ne peut jamais tre afch.)
Info
Une classe est un regroupement (ou en fait une description) des proprits,
des mthodes et des vnements supports par un objet. Un contrle nest
rien dautre quune instance dun objet dune classe donne. Une feuille
ajoute un projet, par exemple, est simplement une instance que vous avez
ajoute la classe Form. Le fait dtre un membre de la classe Form donne
la feuille ses proprits, ses mthodes et ses vnements, qui sont distincts
des autres classes dobjets, par exemple la classe CommandButton.
Sous-classer signie crer un nouvel objet partir dune classe dobjets existants. Le
nouvel objet prend les proprits, les mthodes et les vnements de sa classe parente.
Vous pouvez galement y ajouter vos propres proprits, mthodes et vnements.
Info
Les types de donnes intgrs, comme String, ne sont pas membres dune
classe Visual Basic, car ils ne supportent pas dvnements.
Supposons que vous vouliez crer un contrle qui en imite en partie un autre. En sousclassant ce nouveau contrle, vous lui adjoignez automatiquement toutes les proprits,
mthodes et vnements supports par le contrle parent. Le sous-classement nest
cependant pas une obligation, car vous pouvez toujours crer un contrle sans cette
aide.
543
<
:
Partie III
Les contrles dessins par lutilisateur. Si votre contrle na rien en commun avec
des contrles existants, vous pouvez le crer partir de zro en dnissant toutes ses
proprits, tous ses vnements et mthodes, puis le dessiner pour quil ressemble
exactement ce que vous souhaitez. Un contrle cr par lutilisateur demande un
rel effort de cration, car on nemprunte aucune des fonctionnalits des contrles
existants.
>
:
544
Figure 17.4
Vous travaillez
dans un
environnement
familier
lorsque vous
crez un contrle
ActiveX.
Crez le
contrle ici
Pas de
bordure
Le projet contient un
nouveau contrle
Le terme excution a un sens diffrent suivant que vous crez des contrles ou des applications classiques. Alors que la conception dun contrle se produit quand vous crez ou
modiez le contrle, il peut tre excut dans les deux situations suivantes :
Pour distinguer ces deux types dexcution, les programmeurs parlent respectivement
dexcution la conception et dexcution lexcution. En gnral, le contexte du
mode dexcution est vident quand vous crez ou utilisez le contrle ActiveX.
ition
Dfin
545
<
:
Partie III
Commencer la personnalisation
Vous pouvez ajouter votre nouveau contrle ActiveX la fentre Bote outils. Une des
premires choses faire est donc, une fois les objectifs du contrle dnis, de lui affecter une icne. La proprit ToolboxBitmap congure licne que vous voulez utiliser. Le
rectangle gris qui ressemble un peu une fentre feuille dans le coin suprieur gauche
de la zone ddition est en fait votre contrle, mais il est encore vierge. Lorsquelle est
slectionne, la fentre Proprits afche donc des valeurs pour le contrle.
Faites dler la fentre des proprits pour trouver ToolboxBitmap. Lorsque vous
double-cliquez sur la proprit, la bote de dialogue Charger un bitmap souvre pour
vous permettre de trouver une icne sur le disque et lutiliser comme icne du contrle
ActiveX. Dans notre cas, slectionnez dans le rpertoire \Graphics\Bitmaps\Assorted
\Plan, qui se trouve dans le dossier Common de Visual Basic (si vous avez install les
chiers graphiques supplmentaires lors de linstallation de Visual Basic).
ce
Astu
Vous pouvez crer votre propre image bitmap avec Windows Paint (ou un
programme de dessin du mme genre). Limage doit avoir une taille de
15 pixels par 16 pour quelle safche de la mme manire que les autres
icnes de la bote outils.
Limage Plan est une icne qui sadaptera bien cette nouvelle entre de bote outils
quest la nouvelle zone de texte. Le bitmap safchera dans le coin suprieur gauche de
la feuille du contrle lorsque vous renseignez la proprit ToolboxBitmap.
Les informations concernant votre contrle safcheront dans les applications qui en
feront usage, il est donc utile de le documenter. Slectionnez Projet, Proprits et modiez le nom du projet de Project1 en TextSizeUL. Ajoutez une description dans la zone
de texte intitule Description du projet pour que les applications qui utiliseront le
contrle puissent lafcher. Tapez ce qui suit dans la description :
Un contrle de zone de texte qui commande sa propre taille et
gre la conversion majuscule-minuscule.
Sous-classer le contrle
Vous pouvez dsormais sous-classer le nouveau contrle partir du contrle TextBox
classique, pour quil en prenne les proprits, les vnements et les mthodes. Lors du
sous-classement du contrle, lassistant Interface de contrles ActiveX vous permettra
dtendre ses fonctionnalits.
>
:
546
ition
Dfin
Si vous crez souvent des contrles ActiveX, vous pouvez cocher la case
Charger au dmarrage pour que lassistant se charge toujours avec lenvironnement Visual Basic.
547
<
:
Partie III
Dmarrer lassistant
Vous tes maintenant prt lancer lassistant Interface de contrles ActiveX partir du
menu Complments. La premire fentre qui safche est un cran dintroduction que
vous avez le choix de cacher lors dexcutions ultrieures en cochant la case en bas de la
fentre. Aprs avoir lu le contenu de cette fentre, cliquez sur Suivant pour afcher la
fentre Slection des membres dinterface, illustre la Figure 17.6.
Figure 17.6
Vous pouvez
slectionner
les lments du
contrle parent
que vous voulez
inclure dans
le nouveau contrle
ActiveX.
>
:
548
Lassistant afche deux listes dinformations. Celle de gauche contient tout ou partie
des proprits, vnements et mthodes que vous pouvez inclure dans le nouveau
contrle ActiveX. Lassistant gnre la liste en analysant le contrle en cours ; ici, le
contrle TextBox plac dans la zone ddition.
La liste de droite contient plusieurs proprits, mthodes et vnements slectionns par
lassistant dans la liste complte de gauche. Vous pouvez slectionner des lments
supplmentaires en cliquant sur un lment de la fentre de gauche, puis sur le bouton >
pour lenvoyer dans la liste de droite des lments slectionns. Vous pouvez aussi
slectionner des lments dans la liste de droite et cliquer sur < pour les supprimer.
ce
Astu
Le bouton >> envoie tous les lments de la liste de gauche dans la liste de
droite. Le bouton << efface tous les lments slectionns pour vous
permettre de repartir de zro.
Dune manire surprenante, lassistant nenvoie pas plusieurs proprits ncessaires aux
botes de texte sous-classes dans la liste de droite ; vous devez donc slectionner et faire
passer droite les lments suivants :
Alignment
Change
FontBold
FontItalic
FontName
FontSize
FontStrikethru
FontUnderline
MultiLine
PasswordChar
ScrollBars
Text
ToolTipText
Vous devez pouvoir appliquer toutes ces proprits votre nouveau contrle ActiveX de
zone de texte, avec les nouvelles proprits dnir. Une fois les lments ajouts,
cliquez sur Suivant pour afcher la fentre Cration des membres dinterface personnaliss, illustre la Figure 17.7.
549
<
:
Partie III
Figure 17.7
Vous pouvez
maintenant ajouter
vos proprits,
mthodes et
vnements propres.
La liste au centre de la fentre est vierge, car il vous reste ajouter vos propres lments
la conguration du contrle. Vous ne pouvez pas taper directement llment, vous
devez cliquer sur le bouton Nouveau pour dcrire la nouvelle proprit (ou mthode ou
vnement) que vous souhaitez ajouter.
En cliquant sur Nouveau, vous afchez la bote de dialogue illustre la Figure 17.8.
Vous devez saisir le nom et le type (proprit, mthode ou vnement) du nouvel
lment en cliquant sur lune des options prsentes. Puis cliquez sur OK pour lajouter
la liste de lassistant.
Figure 17.8
Description des nom
et type du nouvel
lment.
>
:
550
Pour le contrle ActiveX que vous tes en train de crer, entrez les deux lments
suivants :
AutoTSize (proprit)
ULText (proprit)
Cliquez sur Suivant pour passer la fentre suivante, Dnition de lassociation. Cest
l que vous associez, ou connectez, les proprits, vnements et mthodes aux quivalents de la zone de texte. En dautres termes, la liste afche dans la fentre Noms
publics est celle qui est gnre partir des lments slectionns prcdemment et des
nouveaux que vous avez ajouts dans la fentre prcdente.
Vous devez indiquer lassistant comment vous voulez que chaque proprit, mthode
et vnement se comporte. Dans le cas de la nouvelle zone de texte que vous crez, vous
voulez que tous fonctionnent comme ils le font normalement pour une zone de texte.
(Vous pourriez cependant modier les associations : par exemple, un vnement
MouseDown pourrait tre associ un vnement MouseClick, gnr la place de
lvnement MouseDown normal qui se produit quand lutilisateur clique sur le contrle.)
Les deux seules proprits que vous ne voulez pas associer au comportement normal
dune zone de texte sont les deux que vous avez ajoutes : AutoTSize et ULText. Slectionnez donc tous les lments de la liste hormis ces deux-l.
ce
Astu
Slectionnez llment auquel vous voulez associer tous ces lments. Ouvrez la liste
droulante Correspond Contrle et slectionnez txtParent. Tous ces lments publics,
lexception des deux qui ne sont pas slectionns, sont appliqus au contrle TextBox
incorpor que vous avez plac sur la feuille. Vous voulez que la zone de texte interne se
comporte normalement pour que le contrle ActiveX puisse y accder normalement.
Les deux nouvelles proprits ne sappliqueront absolument pas la zone de texte
interne cest pourquoi elles ny sont pas associes.
Cliquez sur Suivant pour afcher la fentre Dnition des attributs illustre la
Figure 17.9. Cest ici que vous faites correspondre les nouvelles proprits au nouveau
contrle.
551
<
:
Partie III
Figure 17.9
Vous pouvez
maintenant faire
correspondre les
nouvelles proprits
votre contrle.
Si vous avez ajout des mthodes et des vnements au nouveau contrle, ils apparatront galement dans la fentre Dnition des attributs. Vous avez dj fait correspondre les proprits, mthodes et vnements connus au contrle interne, vous devez
maintenant vous occuper des nouveaux. Suivez ces tapes pour prparer les nouvelles
proprits :
1. Pour la proprit AutoTSize slectionne, changez la valeur par dfaut de 0 1 (les
autres champs sont dj corrects). Si vous vous en souvenez, la proprit AutoTSize
devra prendre une valeur parmi quatre numres, qui vont de 1 4. La valeur 1 sera
la valeur par dfaut (cest--dire la valeur prise lorsquon place pour la premire
fois le contrle ActiveX dans une feuille). Il faut donc remplacer le 0 par 1.
2. Tapez la description suivante pour la proprit AutoTSize :
Dtermine le pourcentage (25%, 50% ou 75%) de la taille de police du
texte en fonction de la hauteur.
3. Slectionnez la proprit ULText. Tous les champs sont corrects, mais il faut ajouter
cette description :
Met le texte en majuscules, minuscules ou ne le change pas.
4. Cliquez sur Suivant pour achever la tche de lassistant. Il peut dsormais construire
toutes les informations ncessaires la gnration du contrle. Vous pouvez cliquer
sur Terminer pour le gnrer. Si vous laissez coche loption Afcher le
rcapitulatif, lassistant afche un rsum de ce qui reste faire.
>
:
552
A lvidence, le contrle ActiveX est incomplet. Vous navez pas dni le comportement des proprits AutoTSize et ULText. Lassistant congure les paramtres du
contrle, mais vous devez toujours ajouter du code et complter manuellement le
contrle ActiveX pour le rendre entirement fonctionnel.
Info
ntion
Atte
Info
553
<
:
Partie III
Les instructions qui suivent ces commentaires sont cruciales pour le fonctionnement du
nouveau contrle et doivent tres laisses telles quelles.
Le Listing 17.2 montre les premires lignes du code. Elles sont ddies aux nouvelles
proprits que vous avez ajoutes au projet.
Listing 17.2 : Lassistant a initialis les valeurs par dfaut des nouvelles proprits
1:
2:
3:
4:
5:
6:
>
:
1:
2:
3:
4:
5:
6:
554
Dclarez toutes les valeurs numres publiques pour quelles soient toujours accessibles. Linstruction Enum dbute une dnition de valeurs numres. Ce sont des valeurs
qui safcheront dans une liste droulante de la fentre Proprits pour les deux proprits. Les valeurs AutoTSize se prsenteront sous la forme courante suivante :
1
2
3
4
NA
Small
Medium
Large
Pour paramtrer une valeur initiale, le programmeur peut slectionner une de ces valeurs
dans la fentre Proprits lorsquil travaille avec le contrle ActiveX. En outre, le code
inclus dans lapplication qui utilise ce contrle ActiveX peut assigner 1, 2, 3 ou 4 la
proprit pour paramtrer le contrle. Linstruction dassignation peut galement assigner les valeurs numres, comme on le fait ci-dessous :
NewControl.AutoTSize = Medium
Assigne 3
1:
2:
3:
4:
5:
6:
7:
8:
555
<
:
Partie III
1:
2:
3:
4:
5:
6:
7:
>
:
556
Vous devez aussi modier les deux types de donnes des procdures Let. Elles demandent du code supplmentaire. Lorsquune valeur est assigne une des deux nouvelles
proprits, plusieurs choses doivent se passer, par exemple le dimensionnement du texte
ou la conversion en majuscules ou en minuscules.
Il vous faut donc complter les deux procdures Let des proprits correspondantes, car
lassistant na cr quun noyau de code. Le code rsultant est montr dans le
Listing 17.6.
Listing 17.6 : Vous devez complter les procdures Let des deux proprits
6:
Select Case New_AutoTSize
7:
Case 1: Pas de modification ncessaire
8:
Case 2: Font.Size = 72 * 0.25 * (Height / 1440)
9:
Case 3: Font.Size = 72 * 0.5 * (Height / 1440)
10:
Case 4: Font.Size = 72 * 0.75 * (Height / 1440)
11:
End Select
12:
PropertyChanged "AutoTSize"
13: End Property
14:
15: Public Property Let ULText(ByVal New_ULText As ULTextEnum)
16:
m_ULText = New_ULText
17:
Tester ltat du contrle
18:
et modifier en fonction la zone de texte
19:
(ignorer ULText 0 qui signifie tel quel)
20:
If New_ULText = 1 Then
21:
Text = UCase(txtParent.Text)
22:
ElseIf New_ULText = 2 Then
23:
Text = LCase(txtParent.Text)
24:
End If
25:
PropertyChanged "ULText"
26: End Property
Info
Assurez-vous que vous avez bien modi les types de donnes transmis
des procdures Get AutoTSize() et Get ULText() pour quelles reoivent des
donnes numres au lieu des types de donnes Variant quelles reoivent par dfaut.
557
<
:
Partie III
>
:
558
Figure 17.10
Entrez le nom de
chier du contrle
ActiveX ; Visual Basic
enregistre le contrle
avec une extension
.OCX.
559
<
:
Partie III
Figure 17.11
Le texte de
description
du nouveau contrle
ActiveX safche dans
la bote de dialogue
Composants.
4. Cliquez sur le bouton de la proprit ULText pour ouvrir la liste droulante. Vous
verrez trois valeurs numres, AsIs, Uppercase et Lowercase, telles quelles ont t
programmes. Pour linstant, laissez la valeur par dfaut.
5. Cliquez sur la proprit AutoTSize pour voir ses valeurs numres. Laissez encore
la valeur par dfaut.
6. Changez la proprit Name en MyFirstCtl et effacez la proprit Text.
7. Ajoutez cinq boutons de commande la feuille en utilisant les valeurs de proprits
du Tableau 17.1.
Tableau 17.1 : Dnissez ces contrles et ces proprits pour les boutons
de commande de la feuille
>
:
Contrle
Proprit
Command1 Name
cmdSmall
Command1 Caption
Texte &Small
Command1 Left
1320
Command1 Top
2640
Command2 Name
cmdMedium
560
Tableau 17.1 : Dnissez ces contrles et ces proprits pour les boutons
de commande de la feuille (suite)
Contrle
Proprit
Command2 Caption
Texte &Medium
Command2 Left
3120
Command2 Top
2640
Command3 Name
cmdLarge
Command3 Caption
Texte &Large
Command3 Left
4920
Command3 Top
2640
Command4 Name
cmdUpper
Command4 Caption
Maj&uscules
Command4 Left
2160
Command4 Top
3600
Command5 Name
cmdLower
Command5 Caption
Minuscu&les
Command5 Left
3960
Command5 Top
3600
561
<
:
Partie III
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
En tapant ces lignes, remarquez que Visual Basic vous aide localiser les valeurs de
proprits du nouveau contrle ActiveX lorsque vous tapez le signe gale, laide dune
liste droulante doptions ((voir Figure 17.12). Les choix proposs sont les seules options
acceptables par Visual Basic. Cette liste de slection a donc quelque chose dincroyable,
tant donn que vous navez absolument rien fait pour gnrer cette fonction.
Figure 17.12
Votre contrle
ActiveX supporte
la liste droulante
daide Info
Express.
>
:
562
Compilez et excutez lapplication. Tapez une valeur dans la zone de texte du contrle
ActiveX, en combinant majuscules et minuscules. Cliquez sur les trois boutons de
dimensionnement pour voir la taille du texte se modier. Ces boutons ne sont pas associs la proprit Font.Size, mais la nouvelle proprit cre pour le contrle.
Cliquez aussi sur les boutons de commande de conversion de la casse pour voir les
modications.
Info
Une fois que vous avez converti le texte du contrle ActiveX en majuscules
ou en minuscules, la casse dorigine est perdue.
Figure 17.13
Les proprits
du contrle ActiveX
effectuent dsormais
les conversions.
563
<
:
Partie III
En rsum
La leon daujourdhui vous a expliqu comment travailler sur les objets particuliers que
sont les contrles ActiveX. Non seulement ils ajoutent des nouveaux contrles votre fentre Bote outils, mais ils peuvent tre utiliss dans dautres types dapplications Windows
comme Visual C++ et les navigateurs Internet. Cest pourquoi les contrles ActiveX sont
disponibles partir de nombreuses sources diffrentes. Une fois que vous avez appris
utiliser un contrle ActiveX, vous pouvez le rutiliser dans dautres applications.
Vous pouvez crer vos propres contrles ActiveX en tirant avantage de lassistant Interface de contrles ActiveX. Vous pouvez sous-classer un contrle ActiveX partir dun
contrle existant (mme si cest un autre contrle ActiveX crit par quelquun dautre).
Finalement, vous pourrez crer une bibliothque de contrles qui vous aideront dans la
cration de nouveaux contrles et applications.
Questions-rponses
Q Pourquoi crer de nouveaux onglets de groupe dans la fentre Bote outils ?
R Les onglets ne sont l que pour organiser les contrles. En les regroupant, vous
retrouverez plus facilement le contrle dont vous avez besoin pour un but particulier.
Par exemple, si vous crez une application Visual Basic qui se rapporte aux bases de
donnes, vous pouvez regrouper lensemble des contrles qui ont trait ce sujet
dans leur propre onglet pour y accder plus simplement. Vous navez plus chercher
dans tous les contrles de longlet Gnral pour retrouver celui dont vous avez
besoin. Mme sils sont groups dans les onglets, tous les contrles de la fentre
Bote outils sont toujours disponibles.
Q Puis-je me dbarrasser des onglets de groupes que je cre ?
Oui. Il suft de cliquer du bouton droit sur le nom de groupe pour afcher un menu
contextuel contenant loption Supprimer un onglet. Vous pouvez aussi renommer les
onglets partir de ce menu.
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que
vous avez appris. Essayez de comprendre les questions et les exercices avant de passer
la leon suivante. Les rponses se trouvent lAnnexe A.
>
:
564
Quiz
1. Que signie automatisation ?
2. Que se passe-t-il si votre application utilise CreateObject() pour un document Word,
alors que Word est dj en excution ?
3. Pourquoi ne peut-on pas assigner directement des applications des variables
objets ?
4. Quel est le but de lobjet systme Err.Number ?
5. Quelles sont les trois manires de crer des contrles ActiveX ?
6. Quelle est la mthode de cration des contrles ActiveX la plus simple utiliser ?
7. Vrai ou Faux. Quand vous sous-classez un contrle, le nouveau contrle ActiveX
emprunte les proprits, les mthodes et les vnements du parent.
8. A quoi servent les blocs dnumrations ?
9. Quelle extension utilise Visual Basic pour les contrles ActiveX compils ?
10. Quelles sont les deux procdures obligatoires dans les proprits des contrles
ActiveX ?
Exercices
1. Utilisez la bote de dialogue Composants pour rechercher des contrles ActiveX sur
votre disque. Vous en trouverez certainement quelques-uns en dehors du dossier Visual
Basic. Par exemple, si vous tes membres du service en ligne Microsoft Network, vous
trouverez plusieurs contrles ActiveX dans le dossier Microsoft Network.
2. Modiez le contrle ActiveX et lapplication crs la n de cette leon. Modiez la
valeur numre AsIs en AsEntered. Modiez le contrle ActiveX pour que, quand
un programme change le texte de AsEntered en Uppercase ou LowerCase, le contrle
mmorise le texte tel quil se prsentait avant conversion. Rcrivez lapplication nale
de cette leon et ajoutez un sixime bouton de commande qui indique Comme saisi.
Lorsque lutilisateur clique dessus, le texte doit revenir sa forme initiale.
565
<
:
PB8
Ces lments
qui enjolivent
les applications
Ce projet dcrit comment crer une application qui comporte les lments suivants :
Ce projet ne comporte aucune fantaisie. Malgr la zone dimage anime, vous verrez
que lanimation est assez triste. Cela ne pose cependant pas de problme, car le but est
de vous faire comprendre les principes du dplacement des objets dans les zones
dimages et vous aurez une exprience pratique de lutilisation des botes A propos de et
de lajout dun chier Wav vos applications.
567
Partie III
But de lapplication
La Figure PB8.1 montre la feuille telle quelle se prsentera durant lanimation. (A la
premire excution de lapplication, lenveloppe est close et la lettre ne safche pas). La
feuille est simple et assez grande pour permettre la lettre de schapper de lenveloppe
ouverte quand lutilisateur clique sur le bouton Animer.
Figure PB8.1
Lapplication montre
simplement une lettre
qui schappe
de lenveloppe.
Info
>
:
568
Figure PB8.2
Un chier Wav
est jou quand
lutilisateur afche
cette bote
A propos de.
Info
ce
Astu
Pour vous donner une meilleure ide de lapparence de la feuille, la Figure PB8.3
montre quoi elle devrait ressembler aprs le placement des contrles du Tableau
PB8.1. A lexcution, certains contrles seront invisibles et donneront lillusion dune
lettre qui jaillit de lenveloppe.
Info
569
<
:
Partie III
Figure PB8.3
Votre feuille aura
cette apparence
une fois les contrles
placs.
>
:
Valeur de proprit
Feuille : Name
frmEnvelope
Feuille : Caption
Feuille : Height
5790
Feuille : Width
7845
mnuHelp
&Aide
mnuHelpAbout
A &propos de
cmdAni
&Animate
2940
2880
Timer : Name
tmrAni
570
Tableau PB8.1 : Congurez ces contrles et ces proprits dans la feuille (suite)
Nom de proprit du contrle
Valeur de proprit
Timer : Enabled
False
Timer : Interval
300
Timer : Left
1410
Timer : Top
3405
PictureBox #1 : Name
picAni1
PictureBox #1 : Height
495
PictureBox #1 : Left
3330
PictureBox #1 : Picture
Common\Graphics\Icons\Mail\Mail01a
PictureBox #1 : Top
1485
PictureBox #1 : Width
1215
PictureBox #2 : Name
picAni2(0)
PictureBox #2 : Height
495
PictureBox #2 : Left
5895
PictureBox #2 : Picture
Common\Graphics\Icons\Mail\Mail01a
PictureBox #2 : Top
2520
PictureBox #2 : Width
1215
PictureBox #3 : Name
picAni2(1)
PictureBox #3 : Height
495
PictureBox #3 : Left
5520
PictureBox #3 : Picture
Common\Graphics\Icons\Mail\Mail0lb
PictureBox #3 : Top
3240
PictureBox #3 : Visible
False
PictureBox #3 : Width
1215
571
<
:
Partie III
Tableau PB8.1 : Congurez ces contrles et ces proprits dans la feuille (suite)
Nom de proprit du contrle
Valeur de proprit
PictureBox #4 : Name
picAni2(2)
PictureBox #4 : Height
495
PictureBox #4 : Left
3960
PictureBox #4 : Picture
Common\Graphics\Icons\Mail\Mail03
PictureBox #4 : Top
1080
PictureBox #4 : Visible
False
PictureBox #4 : Width
1215
mmcEnv
WaveAudio
True
\Windows\Media\Chimes.wav
2520
4080
False
3540
>
:
1:
2:
3:
4:
5:
572
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:
Else
cmdAni.Caption = &Animer
tmrAni.Enabled = False
End If
End Sub
Private Sub mnuHelpAbout_Click()
mmcEnv.Command = Open
mmcEnv.Command = Play
frmAbout.Show
End Sub
Private Sub tmrAni_Timer()
Determine le bon emplacement
dimage afficher
573
<
:
Partie III
Analyse
La procdure vnementielle cmdAni_Click() bascule le titre du bouton de commande
dAnimer Stop. Si le titre est Animer, la ligne 4 le modie en Stop et le contrle Timer
est activ la ligne 5. Lvnement Click du bouton de commande dclenche alors
lvnement tmrAni_Timer() de la ligne 18. La proprit Interval 300 signie que la
procdure tmrAni_Timer() sexcutera toutes les 300 millisecondes pour crer lanimation. Elle continue tant que lutilisateur ne clique pas sur le bouton Stop. La ligne 7
change alors nouveau le titre en Animer et la ligne 8 dsactive le Timer.
La procdure vnementielle tmrAni_Timer(), qui commence la ligne 18, est donc
excute par lvnement Timer toutes les 300 millisecondes. Elle effectue une des cinq
actions contrles par linstruction Select Case de la ligne 27. La variable de contrle
est une variable statique, dclare la ligne 25, qui part dune valeur de 0 (comme toute
variable statique). Une fois une valeur assigne, elle sera prserve lors des excutions
ultrieures de tmrAni_Timer(). Elle peut prendre les valeurs de 0 4, modies chaque
excution.
Chacun des trois premiers cas effectue les actions suivantes :
"Dplace" licne de lettre en modiant ses proprits Left et Top (voyez les
lignes 31 et 32).
>
:
574
Valeur de proprit
lblDescription Caption
lblDescription FontSize
14
lblDescription FontStyle
Gras
lblDisclaimer Caption
Info
575
<
:
Chapitre
18
Interactions avec
les donnes
Ce chapitre vous montre comment accder aux bases de donnes partir de vos applications Visual Basic. Une base de donnes est un regroupement de chiers qui offre un
systme de gestion de donnes complet. Un tel systme, tel Microsoft Access, cre la
base de donnes laquelle votre application Visual Basic peut avoir besoin de se
connecter. En utilisant des contrles et des mthodes spciques, vos applications
peuvent communiquer avec la base de donnes.
Vous apprendrez aujourdhui :
le contrle Data ;
comment lassistant Cration dapplications de Visual Basic peut analyser les tables
et gnrer des feuilles.
577
Partie III
Microsoft Access ;
DBase ;
FoxPro ;
Paradox ;
ition
Dfin
Info
Pour comprendre comment Visual Basic supporte lutilisation des bases de donnes,
vous devez comprendre les termes apparents leur technologie. La leon
daujourdhui ne propose quun vernis ! Vous lisez ce livre pour apprendre Visual Basic
et pas les bases de donnes. Pour une approche plus approfondie du sujet, il existe de
nombreux ouvrages traitant des bases de donnes et des accs avancs de Visual Basic.
>
:
578
Il nest cependant pas utile dtre un expert en bases de donnes pour connatre les
techniques daccs de Visual Basic. Ce dernier comporte de nombreux contrles qui
grent laccs aux bases de donnes dans un environnement structur. Le reste du chapitre
vous prsente ces outils et le traitement des bases de donnes en gnral.
Enregistrements
Fichier d'inventaire
Code
pice
Description
Quantit
Prix de
gros
Prix de
dtail
XG12
Gadget
47
0,52
01,35
C1-98
Embases n 4
16,73
26,99
W2A
Sac de joints
9,38
14,95
KL7
Boulon n 4
62
0,12
00,67
AT8E
Boulons n 5
38
0,08
00,21
MVP9
Joint large
7,88
15,00
MVP8
Joint troit
4,88
10,00
Champs
Info
579
<
:
Partie III
Les noms de champs ne font jamais partie des donnes. Ils ne servent qu
tiqueter les champs, comme les noms de variables tiquettent le contenu
des variables.
Le chier de la Figure 18.1 est dit chier squentiel, car il est autonome. Un programme
peut accder simplement aux informations en squence ou alatoirement. Les enregistrements nont pas dordre particulier, mais le concepteur de la base peut par exemple
les classer par numro de pice, car ce type de chier est plus simple utiliser si on
emploie des donnes tries. Les systmes de base de donnes daujourdhui vont bien
plus loin que le concept de chier squentiel unique illustr par cette gure.
Dans la terminologie de base de donnes actuelle, une table est un chier de donnes, et
la base de donnes est le rassemblement de ces tables. Donc, votre base de donnes peut
se composer dune table des clients, dune table des fournisseurs, dune table des
employs et dune table dinventaire. Lorsque vous les mettez dans une base de donnes
unique, un programme qui a accs la base a accs lensemble des tables en mme
temps. Il peut donc dterminer quel fournisseur vous a vendu une pice en gros ou quel
employ a vendu un produit particulier. En dautres termes, un systme de base de
donnes peut prendre ces tables diffrentes et fournir partir de l des informations
consolides.
On utilise une interrogation pour rechercher des informations dans une base de donnes.
Cest--dire quun programme interroge la base de donnes pour rechercher un enregistrement ou un groupe denregistrements. Une table de base de donnes dispose gnralement
dau moins un index. Un index est un champ de cl avec des valeurs uniques pour chaque
enregistrement. Lindex fonctionne comme un index de livre : quand vous avez besoin
daccder un enregistrement particulier de la table, vous pouvez spcier la valeur dindex
et la base saute directement la ligne correspondante sans rechercher dans toute la table
(comme on le ferait avec des routines classiques daccs un chier squentiel). Dans la
Figure 18.1, le meilleur champ pour lindex serait le champ Code pice, car chaque pice a
un numro unique.
Info
>
:
580
581
<
:
Partie III
Tous les noms de chiers des bases de donnes Access se terminent par .MDB (pour
Microsoft Database). Un chier de base de donnes Access peut tre volumineux, car il
contient lensemble des tables, tats, formulaires, crans et requtes enregistrs dans la
base de donnes. Lavantage du chier unique est une simplication de la sauvegarde de
la base complte (il nest pas utile de garder la trace de plusieurs chiers lorsquon
effectue la sauvegarde).
Pour que cette prsentation des bases de donnes reste simple, la prsente leon utilise la
base de donnes NWIND.MDB pour illustrer lutilisation de certains contrles et commandes lis aux bases de donnes. Cependant, tous les programmeurs Visual Basic nont pas
accs un systme de base de donnes externe. Heureusement, Visual Basic comporte un
outil complmentaire spcial nomm le Gestionnaire de donnes qui vous permet de crer
et de modier des chiers de base de donnes.
ition
Dfin
ntion
Atte
Le Gestionnaire de donnes est le seul outil par dfaut du menu Complments. Slectionnez Complments, Gestionnaire de donnes pour que Visual Basic dmarre le
programme (voir Figure 18.2).
>
:
582
Figure 18.2
Le Gestionnaire
de donnes vous aide
crer et analyser
des chiers de base de
donnes.
583
<
:
Partie III
ntion
Atte
Voici les tapes gnrales pour crer une nouvelle base de donnes avec le Gestionnaire de
donnes de Visual Basic :
1. Crez le chier de base de donnes en slectionnant Fichier, Nouvelle base de donnes,
puis en choisissant le type de base que vous voulez crer en choisissant dans la liste. Le
Gestionnaire de donnes peut crer et modier tous les formats de base de donnes
lists au dbut de cette leon.
2. Crez chaque table de la base en cliquant du bouton droit sur la fentre Base de
donnes et en slectionnant Nouvelle table dans le menu contextuel. Le Gestionnaire
de donnes afche la feuille Modier la structure, illustr la Figure 18.3, dans lequel
vous pouvez entrer le nom de la table, chacun des champs, leur type (chaque champ de
base de donnes supporte un type de donnes unique, comme les variables dans Visual
Basic), les exigences de scurit et de validation (par exemple les champs protgs par
mots de passe), et les champs indexs (une table peut avoir plusieurs index suivant la
manire dont lapplication accde aux donnes).
Figure 18.3
Vous pouvez
concevoir chaque
table et la structure
de ses champs
partir du formulaire
Modier la structure.
>
:
584
3. Cliquez sur le bouton Crer la table pour crer la structure de la table et pour ajouter
des tables supplmentaires.
4. Cliquez sur le bouton de la barre doutils dont linfo-bulle annonce "Utiliser le
contrle Data sur la feuille" pour que le Gestionnaire de donnes de Visual Basic ait un
outil (le contrle Data) utiliser lors de la saisie des donnes de table de la base de
donnes.
5. Double-cliquez sur un des noms de table de la fentre de base de donnes et entrez
chaque enregistrement en utilisant le formulaire de saisie illustr la Figure 18.4.
Figure 18.4
Entrez les donnes
de chaque table pour
avoir une base de
donnes sur laquelle
travailler.
Info
Si vous avez dabord cliqu sur le bouton de la barre doutils de jeu denregistrements de type dynaset, les donnes que vous allez saisir prendront la
forme dun de ces types avancs de jeux denregistrements.
585
<
:
Partie III
Le contrle Data
Le contrle Data, ou contrle de donnes, dernier contrle intrinsque de la fentre
Bote outils quil reste tudier, est souvent considr comme un outil lent et encombrant de gestion des donnes. Mais, pour sa dfense, il est toujours utile pour les raisons
suivantes :
Cest un contrle simple, qui rend plus ais lapprentissage de la manire dont
Visual Basic interagit avec les chiers de base de donnes.
Le contrle Data est toujours prsent dans la fentre Bote outils. Il nest donc pas
ncessaire de chercher et dajouter un contrle ActiveX pour lutiliser.
Ldition Standard de Visual Basic ne contient pas tous les outils avancs de base de
donnes inclus dans les ditions Professionnelle et Entreprise. Dans la partie nale
de la leon daujourdhui, vous apprendrez comment ces outils et techniques
avancs peuvent aider le programmeur accder aux bases de donnes de manire
plus varie que ne le permet le contrle Data. Mais tout le monde ne possdant pas
ces versions, ces outils plus avancs ne sont pas disponibles pour tous, alors que le
contrle Data lest.
Les sections qui suivent dcrivent comment utiliser le contrle Data pour accder la
base de donnes NWIND.MDB. Une fois celui-ci matris, les contrles de donnes
plus avancs ne vous paratront plus si impressionnants.
>
:
586
Premier
enregistrement
Dernier
enregistrement
Enregistrement
prcdent
Enregistrement
suivant
Une zone centrale qui afche linformation que vous voulez de la base de donnes.
Le contrle Data est un contrle li. Vous pouvez lier de nombreux contrles Visual
Basic, tels que le contrle TextBox, une base de donnes. Quand un utilisateur parcourt
la base, le champ de texte afche le champ congur. Lorsque vous liez un contrle une
base de donnes, vous navez plus vous proccuper de lafchage des donnes du
champ ; cest Visual Basic qui soccupe de tout.
ition
Dfin
587
<
:
Partie III
Pour afcher un enregistrement la fois partir dun jeu denregistrements que vous
avez dni dans la base de donnes, utilisez un contrle li. Il permet de nafcher en
gnral que lenregistrement en cours ou un de ses champs. Lorsque lutilisateur
navigue dans la base en cliquant sur les boutons du contrle Data, lenregistrement en
cours change et rete la position de lutilisateur dans la table de la base de donnes.
Name: lblCust
Alignment: 2-Center
Font.Size: 18
Height: 915
Left: 1680
Top: 1440
Width: 4320
7. Ouvrez la proprit DataSource de ltiquette. Cest une proprit que vous navez
encore jamais eu congurer. Vous allez lier ltiquette au contrle Data. (Une
tiquette est un des contrles qui peuvent tre lis). La proprit DataSource vous
>
:
588
Vous ntes absolument pas limit une colonne de la table. Vous pouvez ajouter autant
dtiquettes que vous le voulez pour afcher plusieurs colonnes. La Figure 18.7 montre
lafchage dun enregistrement client complet. Les tiquettes supplmentaires ont
simplement leur valeur DataField lie des colonnes particulires de la table. En outre,
des tiquettes supplmentaires aident la description des donnes afches. (Vous
pourrez modier le programme de base de donnes en ajoutant ces colonnes
supplmentaires dans le premier exercice la n du chapitre).
589
<
:
Partie III
ce
Astu
Pour afcher les colonnes de plusieurs tables, vous devez crer un jeu
denregistrements, tel quun dynaset, dans le systme de base de donnes
pour extraire les colonnes des tables correctes. Des commandes et des
contrles Visual Basic plus avancs vous permettent deffectuer des slections complexes dans les bases de donnes, comme vous le verrez dans les
dernires parties de la leon daujourdhui.
Figure 18.7
Afcher plusieurs
colonnes de tables
ne demande que
des tiquettes
supplmentaires.
ce
Astu
Pour afcher les donnes de type boolen, utilisez une case cocher ou un
bouton doption pour indiquer les conditions True ou False du champ.
Loption peut indiquer les valeurs de donnes Oui/Non ou Vrai/Faux qui
apparaissent dans les tables des bases de donnes.
>
:
590
Soyez toujours vigilant sur la scurit. Vous pouvez avoir besoin dafcher
une bote de dialogue de saisie de mot de passe pour limiter la mise jour
certaines personnes. De plus, la base elle-mme peut limiter les types de
modications autorises. La proprit Exclusive du contrle Data
dtermine si un utilisateur peut avoir des droits exclusifs sur une base de
donnes, et tre le seul utilisateur autoris y accder (dans les systmes en
rseau) ; sinon, le contrle Data noffre que peu en matire de scurit. Vous
devrez matriser des commandes et des contrles plus avancs (dont
certains sont tudis plus loin) pour incorporer une vritable scurit dans
vos applications.
Lorsque votre savoir-faire en programmation samliorera, vous apprendrez des mthodes dutilisation du contrle Data permettant un accs plus avanc aux bases de
donnes. Il dispose par exemple de plusieurs mthodes Move qui permettent de dplacer
le pointeur denregistrement comme le font les boutons du contrle Data.
Les mthodes suivantes dplacent le pointeur au premier ou au dernier enregistrement, au
prcdent ou au suivant, dans la base de donnes pointe par la proprit DataSource du
contrle Data :
dtaCust.Recordset.MoveFirst
dtaCust.Recordset.MoveLast
dtaCust.Recordset.MoveNext
dtaCust.Recordset.MovePrevious
ition
Dfin
Va au premier enregistrement
Va au dernier enregistrement
Enregistrement suivant
Enregistrement prcdent
Le jeu denregistrements par dfaut du contrle Data est dni par les valeurs de
proprits que vous congurez. Par exemple, si vous ajoutez un bouton de commande
qui comporte une procdure vnementielle Click qui contient son tour une de ces
mthodes, ltiquette afche lenregistrement slectionn par la mthode chaque fois
que lutilisateur clique sur le bouton de commande. Outre les contrles de dplacement
dans les enregistrements, il existe des mthodes qui ajoutent ou suppriment des enregistrements de la base de donnes.
ce
Astu
Utilisez les proprits boolennes BOF et EOF pour voir si le pointeur denregistrement se trouve au dbut ou la n dune table. Les programmeurs
Visual Basic utilisent souvent une boucle DoWhile pour parcourir tous les
enregistrements de la table. La boucle se termine quand datCust.Recordset.EOF est gale True.
591
<
:
Partie III
>
:
592
Plusieurs contrles ADO placs sur une mme feuille peuvent dgrader les
performances dune application, car chacun fonctionne indpendamment
des autres et consomme son propre ensemble de ressources.
La technologie ADO supporte (dans toutes les ditions dans une certaine mesure, mais
compltement dans les ditions Professionnelle, Entreprise et Visual Studio) les contrles
de donnes suivants :
Contrle DataList ADO. Il ressemble une zone de liste standard, mais donne
lutilisateur laccs plusieurs enregistrements de cette colonne.
Info
593
<
:
Partie III
Supposons que vous vouliez une application qui propose un accs en consultation et en
modication au chier de base de donnes BIBLIO.MDB. Aprs avoir lanc lassistant
Cration dapplication et pass plusieurs fentres, vous verrez la fentre de la
Figure 18.8. Vous y demandez lassistant de gnrer les feuilles daccs la base de
donnes. Vous pourriez les crer par vous-mme, mais vous pouvez aussi laisser faire
lassistant, puis personnaliser ensuite les feuilles.
Une fois que vous cliquez sur le bouton Crer une nouvelle feuille, lassistant
commence par vous demander un prol. Dans cet exemple, cliquez sur Suivant pour
slectionner un type de base de donnes pour lapplication. La base BIBLIO .MDB
fournie avec Visual Basic tant une base Microsoft Access, slectionnez Access, puis
cliquez sur Suivant.
Lassistant demande ensuite le nom de la base de donnes dans la fentre illustre la
Figure 18.9. Spciez le chemin daccs et le nom de la base. (Vous pouvez cliquer sur
le bouton Parcourir pour chercher le chier.)
Figure 18.9
Lassistant demande
la base de donnes
utiliser.
Une fois la base spcie, cliquez sur Suivant ; lassistant demande le nom du formulaire principal (entrez frmADO dans cet exemple) et la prsentation que vous voulez.
Vous avez les cinq choix de prsentation suivants :
>
:
594
Vous pouvez aussi spcier les liens (la manire dont Visual Basic lie les informations
de la base de donnes aux contrles). Lassistant propose ces trois liens de donnes :
Contrle de donnes ADO. Utilise le contrle de donnes ADO pour lier les
contrles aux donnes.
Code ADO. Utilise du code ADO pour lier les contrles aux donnes.
Classe. Cre une classe de donnes particulire pour la base de donnes et lie les
donnes aux contrles au travers de cette classe.
Pour cet exemple, slectionnez Contrle de donnes ADO et cliquez sur Suivant. Dans
la fentre suivante, lassistant doit connatre la table, ou le jeu denregistrements, auquel
accder dans la base. Ouvrez la liste droulante Source denregistrements pour
slectionner la table Publishers. Comme le montre la Figure 18.10, la liste des champs
disponibles est mise immdiatement jour ; elle afche tous les champs, ou colonnes,
de la table.
Les champs que vous slectionnez dterminent ceux que lassistant place sur la feuille
ADO quil gnre. Vous pouvez slectionner un champ de la liste de gauche et cliquer sur
le bouton > pour lenvoyer dans la liste de droite, qui sert gnrer les champs de la
feuille nale. Dans cet exemple, envoyez-y tous les champs.
595
<
:
Partie III
Figure 18.10
Visual Basic analyse
la table et afche
les champs que vous
pouvez slectionner.
Rorganisez lordre des champs pour que Company Name apparaisse en premier. Pour
cela, cliquez sur ce champ, puis cliquez sur la che vers le haut trois fois pour dplacer
le champ en tte de liste. Pour que la feuille afche les enregistrements par ordre alphabtique dentreprise, slectionnez Company Name dans la liste des colonnes trier.
Cliquez sur le bouton Suivant pour afcher la fentre de slection des contrles illustre
la Figure 18.11. Cette fentre vous permet de spcier les boutons qui safcheront
dans la feuille daccs aux donnes. Ils retent les capacits que vos accordez lutilisateur. Pour lempcher de supprimer des enregistrements, dcochez le bouton doption
Supprimer. Dans lexemple, gardez tous les boutons cochs.
Lorsque vous cliquez sur le bouton Terminer, Visual Basic gnre lapplication.
ntion
Atte
Lorsque vous excutez lapplication, la feuille Publishers safche (voir Figure 18.12.)
Lassistant y a plac tous les boutons et zones de texte ncessaires pour que les champs
de donnes puissent tre accessibles correctement. Vous pourrez ajouter des lments
la feuille, peut-tre la personnaliser pour la rendre plus attrayante, une fois que vous
avez vri que lapplication gnre fonctionne correctement.
>
:
596
Figure 18.11
Vous pouvez
contrler la capacit
de lutilisateur
ajouter, modier
et supprimer
des enregistrements
de la table de
base de donnes.
Figure 18.12
Lassistant a gnr
la feuille avec tous les
champs et les boutons
de base de donnes
ncessaires.
En rsum
La leon daujourdhui a trait de laccs aux bases de donnes laide de Visual Basic.
La manire la plus simple daccder une base de donnes (en considrant que vous
nutilisez pas lassistant Cration dapplications) est dajouter le contrle Data votre
feuille. Il soccupe de mettre jour la base de donnes sous-jacente et de modier les
contrles lis lorsque vous vous dplacez dans les enregistrements. Des mthodes
peuvent tre utilises pour tendre les fonctionnalits du contrle Data.
597
<
:
Partie III
Linterface ADO peut exiger une programmation complexe, mais vous aurez beaucoup
plus de contrle et de souplesse dans laccs la base de donnes. Mme si votre application doit soccuper de mettre jour les contrles et le dplacement entre les enregistrements lorsque les vnements sont dclenchs, lapplication est globalement plus rapide.
La leon de demain explore des manires dintgrer lInternet Visual Basic. Le monde
informatique est en train de devenir rapidement un monde connect et vos applications
ont souvent besoin de proposer des fonctionnalits Internet.
Questions-rponses
Q Les relations un--plusieurs existent-elles toujours dans les tables de bases de
donnes ?
R Il existe plusieurs types de relations entre les donnes, qui peuvent se retrouver
toutes ou en partie dans une base de donnes, en fonction de sa structure. Rappelons
que le but du chapitre nest pas dapprofondir la thorie des bases de donnes.
Cependant, les relations un--plusieurs tant ncessaires dans de nombreuses applications Visual Basic, une meilleure comprhension de ce sujet nest pas un mal.
Vous aurez souvent afcher tous les enregistrements en rapport une valeur de cl
donne, cest ce quoffre cette relation.
Lafchage Principal/Secondaire de lassistant est une excellente manire de crer
des applications qui offrent cette relation entre les donnes. Il faut au moins un
champ en correspondance entre les deux tables pour que la relation soit possible.
Une relation un--un se prsente parfois, lorsquune colonne dune table est apparente une autre colonne dans une autre table. Ce peut tre le cas par exemple
dune mme pice propose par deux fournisseurs. Des relations plusieurs-plusieurs existent galement. Toutes ces relations sont dnies lors de la conception
et elles sont la base de la comprhension du fonctionnement des bases de donnes
relationnelles. Le principal dans ces relations est la manire dont on y accde. Votre
tche de programmeur Visual Basic consiste accder ces relations, mais vous
naurez pas les reconstruire, sauf si vous tre le concepteur et le crateur de la base
de donnes.
>
:
598
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits et des exercices qui vous permettent de mettre en pratique ce que vous
avez appris. Essayez de comprendre les questions et les exercices avant de passer la
leon suivante. Les rponses se trouvent lAnnexe A
Quiz
1. Quel est loutil fourni avec Visual Basic permettant la modication et la consultation
des chiers de base de donnes ?
2. Quelle est la diffrence entre un chier et une table ?
3. Vrai ou faux. Lorsque vous ajoutez des enregistrements une table, le nombre de
ses colonnes augmente galement.
4. Vrai ou faux. Une table est un sous-ensemble dun jeu denregistrements.
5. Quest-ce quun contrle li ?
6. Quelles sont les diffrences entre jeux denregistrements recordset, dynaset et
snapshot ?
7. Donnez deux avantages dADO sur le contrle Data ?
8. Que dnissent les valeurs EOF et BOF ?
9. Quelle est la diffrence entre un afchage Principal et un afchage Secondaire ?
10. Quel est loutil fourni avec Visual Basic pour gnrer des feuilles directement
partir de la structure de la base de donnes ?
Exercices
1. Modiez lapplication daccs la base de donnes que vous avez cre (illustre la
Figure 18.6), pour quelle afche tous les champs de la table Customer. Votre feuille
doit imiter celle de la Figure 18.7. (Noubliez pas dajouter les tiquettes descriptives
pour que lutilisateur sache ce que contient chaque colonne.)
2. Utilisez lassistant Cration dapplication pour gnrer un afchage Principal/
Secondaire de la base de donnes BIBLIO.MDB qui prsente le nom de lauteur
en afchage principal et tous les codes ISBN de ses ouvrages dans lafchage
secondaire.
599
<
:
PB9
Contrles ADO
Ce projet dcrit comment crer une application de base de donnes sous ADO. Vous
utiliserez la base de donnes exemple BIBLIO.MDB fournie avec Visual Basic. Les
contrles ADO supportent des instructions de programmation supplmentaires (comme
vous le verrez dans ce projet), mais, tel quil est dcrit et utilis ici, il est simple
comprendre.
But de lapplication
La Figure PB9.1 montre la feuille que vous allez crer. Elle contient plusieurs lignes et
contrles ; sa cration peut demander un certain temps. Elle propose un systme de gestion
de base de donnes complet de BIBLIO.MDB. Ce projet ne peut pas dcrire toutes les
actions du contrle ADO, mais il dcrit comment commencer manipuler la base. Aprs
avoir suivi ce projet, vous comprendrez une partie de ce quimplique le travail avec les
applications ADO.
Info
Cette application imite quelque peu ce que peut produire lassistant Cration dapplications, mais dans ce projet, vous tudierez de lintrieur les
exigences des contrles ADO. Vous apprendrez comment incorporer des
instructions de programmation concernant les contrles ADO qui permettent daccder aux tables de base de donnes sans intervention de lutilisateur et de les modier.
601
Partie III
Figure PB9.1
Votre application
ADO permettra de
grer cette base
de donns des livres.
ntion
Atte
Ce projet ne vous donnera pas une matrise complte des contrles ADO
et du langage de programmation sous-jacent. Vous en tudierez cependant les
bases. Heureusement, de nombreux programmeurs Visual Basic nauront
jamais programmer un contrle ADO en utilisant en profondeur le
langage dont nous allons parler. Ce projet a pour seul objectif de vous
donner une introduction aux comptences ncessaires une utilisation
efcace du contrle ADO.
>
:
Valeur de proprit
Feuille : Name
frmBookTitle
Feuille : Caption
Feuille : Height
4590
Feuille : Width
7740
602
Valeur de proprit
ADO Name
adoBooks
ADO Height
735
ADO Left
5400
ADO Top
ADO Width
2055
Label #1 Name
lblApp
Label #1 Alignment
Center
Label #1 BorderStyle
Fixed Single
Label #1 Caption
Label #1 FontStyle
Gras
Label #1 FontSize
18
Label #1 Left
2520
Label #1 Height
495
Label #1 Top
240
Label #1 Width
2650
Label #2 Name
lblTitle
Label #2 Alignment
Right Justify
Label #2 Caption
Titre:
Label #2 FontSize
10
Label #2 Left
720
Label #2 Height
255
Label #2 Top
840
Label #2 Width
510
Label #3 Name
lblYear
Label #3 Alignment
Right Justify
Label #3 Caption
Anne de publication :
603
<
:
Partie III
>
:
Valeur de proprit
Label #3 FontSize
10
Label #3 Left
120
Label #3 Height
255
Label #3 Top
2400
Label #3 Width
1995
Label #4 Name
lblISBN
Label #4 Alignment
Right Justify
Label #4 Caption
ISBN :
Label #4 FontSize
10
Label #4 Left
3240
Label #4 Height
255
Label #4 Top
2400
Label #4 Width
615
Label #5 Name
lblPubID
Label #5 Alignment
Right Justify
Label #5 Caption
ID dditeur :
Label #5 FontSize
10
Label #5 Left
120
Label #5 Height
255
Label #5 Top
3000
Label #5 Width
1455
Label #6 Name
lblSubject
Label #6 Alignment
Right Justify
Label #6 Caption
Sujet :
Label #6 FontSize
10
Label #6 Left
3480
604
Valeur de proprit
Label #6 Height
255
Label #6 Top
3000
Label #6 Width
855
TextBox #1 Name
txtTitle
TextBox #1 DataField
Title
TextBox #1 DataSource
adoBooks
TextBox #1 Height
1095
TextBox #1 Left
1320
TextBox #1 Top
840
TextBox #1 Width
5535
TextBox #2 Name
txtPub
TextBox #2 DataField
Year Published
TextBox #2 DataSource
adoBooks
TextBox #2 Height
345
TextBox #2 Left
2160
TextBox #2 Top
2400
TextBox #2 Width
975
TextBox #3 Name
txtISBN
TextBox #3 DataField
ISBN
TextBox #3 DataSource
adoBooks
TextBox #3 Height
345
TextBox #3 Left
3960
TextBox #3 Top
2400
TextBox #3 Width
3495
TextBox #4 Name
txtPubID
TextBox #4 DataField
PubID
605
<
:
Partie III
>
:
Valeur de proprit
TextBox #4 DataSource
adoBooks
TextBox #4 Height
345
TextBox #4 Left
1680
TextBox #4 Top
3000
TextBox #4 Width
1575
TextBox #5 Name
txtSubject
TextBox #5 DataField
Subject
TextBox #5 DataSource
adoBooks
TextBox #5 Height
345
TextBox #5 Left
4440
TextBox #5 Top
3000
TextBox #5 Width
1575
cmdSave
&Enregistrer
240
3600
875
cmdAdd
&Ajouter
1200
3600
875
cmdNew
&Nouveau
2160
3600
606
Valeur de proprit
875
cmdDelete
&Supprimer
3120
3600
875
cmdCancel
Ann&uler
4080
3600
875
cmdPrev
&<
5160
3600
495
cmdNext
&>
5760
3600
495
cmdExit
&Quitter
6600
3600
855
607
<
:
Partie III
Valeur de proprit
Ligne #1 Name
Line1
Ligne #1 X1
120
Ligne #1 X2
7440
Ligne #1 Y1
2160
Ligne #1 Y2
2160
Ligne #2 Name
Line2
Ligne #2 X1
Ligne #2 X2
7800
Ligne #2 Y1
3480
Ligne #2 Y2
3480
Ligne #3 Name
Line3
Ligne #3 X1
5040
Ligne #3 X2
5040
Ligne #3 Y1
3480
Ligne #3 Y2
4280
Ligne #4 Name
Line4
Ligne #4 X1
6480
Ligne #4 X2
6480
Ligne #4 Y1
3480
Ligne #4 Y2
4280
En plaant ces contrles, notez que les zones de texte sont lies leurs champs respectifs de la table BIBLIO.MDB, sur laquelle pointe le contrle ADO adoBooks. Vous avez
appris raliser le mme type de liens avec le contrle Data au Chapitre 18. Mais,
contrairement ce dernier, le contrle ADO a plus de possibilits, comme vous le verrez
au cours de ce projet.
>
:
608
Le contrle ADO est bien plus difcile connecter une base de donnes
que ne lest le contrle Data. Mais les avantages compensent largement
cette complication due une meilleure efcacit et la possibilit de se
connecter quasi nimporte quel type de donnes.
Si vous utilisez la fentre Proprits pour vous connecter aux donnes, vous passez par
des botes de dialogue qui simplient le paramtrage de la connexion. Lautre mthode
demande dcrire du code assez abscons (cette section illustrera les deux manires).
La connexion par la fentre Proprits nest pas aussi simple que pour le contrle Data.
Lorsque vous cliquez sur la proprit ConnectionString, la bote de dialogue illustre
la Figure PB9.2 safche. Vous devez dterminer les options qui correspondent votre
type de sources de donnes.
Dans cet exemple, comme pour la plupart des applications utilisant le contrle ADO,
vous crerez une simple chane de connexion qui pointe sur un chier de base de
donnes. Les deux premires options, Utiliser un chier OLE DB (utilis pour transmettre des donnes entre deux emplacements) et Utiliser un nom de source de donnes
ODBC (utilis avec les bases de donnes compatibles ODBC), ne sont pas ncessaires
pour laccs simple utilis dans ce projet. Cliquez sur la troisime option pour spcier
une chane de connexion.
609
<
:
Partie III
Figure PB9.2
La bote de dialogue
Pages de proprits
du contrle ADO vous
aide spcier une
chane de connexion.
Les chanes de connexion peuvent tre assez longues, mais Visual Basic vous assiste
dans leur cration. Suivez ces tapes :
1. Cliquez sur le bouton Crer pour afcher la bote de dialogue Proprits des liaisons
de donnes.
2. Double-cliquez sur la premire option, Microsoft Jet 3.51 OLE DB Provider. (Les
bases de donnes Access ont pour systme sous-jacent la technologie Jet utilise par
Microsoft pour un accs rapide aux bases de donnes). Longlet suivant, Connexion,
safche.
3. Cliquez sur les points de suspension la droite de la premire zone de texte et
cherchez la base de donnes BIBLIO.MDB sur votre disque.
4. Cliquez sur le bouton Ouvrir pour lier la base de donnes au contrle ADO.
ce
Astu
Pour vous assurer que vous tes correctement connect la base de donnes,
cliquez sur le bouton Tester la connexion. Si les proprits de la chane de
connexion sont correctes, Visual Basic afche une bote de message qui vous
signale un test russi. Dans le cas contraire, vous pouvez corriger le problme.
5. Pour une vrication, cliquez sur longlet Tous pour voir la page rsumant la chane
de connexion, illustre la Figure PB9.3. Les autres lments lists peuvent tre
modis si vous le souhaitez (vous pouvez par exemple paramtrer la scurit
daccs).
6. Cliquez sur le bouton OK pour revenir la bote de dialogue Pages de proprits,
puis cliquez sur OK pour la fermer et revenir la feuille.
>
:
610
Figure PB9.3
Visual Basic
rcapitule
les paramtres
de votre chane de
connexion.
Mme pour utiliser du code pour accder aux donnes, vous devez placer le
contrle ADO sur la feuille. Congurez sa proprit Visible False si
vous ne voulez pas que lutilisateur y accde autrement que par votre code.
Vous ne pouvez pas utiliser la fois le code et la fentre Proprits pour
congurer la chane de connexion, vriez donc que la proprit ConnectionString est bien vierge si vous utilisez du code dans votre programme
pour congurer laccs.
Pour paramtrer le contrle ADO par programme, vous devez placer linstruction
suivante dans la procdure vnementielle Form_Load() :
adoBooks.ConnectionString = Provider=Microsoft.Jet.OLEDB.3.51;
& Persist Security Info=False; & Data Source=C:\Program
Files\Microsoft Visual & Studio\VB98\Biblio.mdb
611
<
:
Partie III
Linstruction assigne exactement la mme chane de connexion que celle cre au dbut
de cette section laide de la bote de dialogue. Comme vous pouvez le voir, le format
peut tre assez pineux, mais la proprit ConnectionString comporte lensemble des
informations de la bote de dialogue.
Le contrle nest cependant pas encore tout fait prt afcher les donnes de la base.
Vous devez spcier exactement quelles lignes de quelles tables sont la disposition
du reste de lapplication. Vous devez utiliser SQL (un langage de programmation de
base de donnes support par Visual Basic comme une proprit RecordSource) pour
indiquer Visual Basic daccder tous les enregistrements (ce quindique le caractre
gnrique *) de la table Titles de la base de donnes BIBLIO.MDB. Linstruction est la
suivante :
adoBooks.RecordSource = Select * From Titles
ition
Dfin
Vous pouvez congurer la feuille laide dun contrle ADO invisible pour accder aux
donnes en congurant la proprit Visible du contrle ADO False, effaant toute
valeur dans la proprit ConnectionString de la fentre Proprits et assignant les
proprits DataSource et DataField de chaque contrle de zone de texte telles quelles
sont dcrites dans le Tableau PB9.1. Dans ce cas, le code du programme doit permettre
de parcourir les donnes selon les besoins. Dans cet exemple, les boutons de commande
en bas de la feuille exigent du code pour permettre de parcourir les donnes. Cest
lobjet de la section suivante.
Info
>
:
612
Info
Code ou contrle ?
Devez-vous laisser les utilisateurs commander le contrle ADO laide de
ses boutons ou devez-vous le masquer et utiliser du code pour parcourir la
table connecte ? Dans ce projet, vous tudiez les deux mthodes. Pour voir
les donnes lies, un utilisateur peut cliquer sur les boutons du contrle
ADO ou sur les boutons en bas de la feuille.
Le choix de la mthode dpend de lapplication, qui sert souvent mettre
jour ou afcher un enregistrement unique qui rpond certains critres.
Elle doit alors pouvoir rechercher un enregistrement particulier ou parcourir lensemble des enregistrements pour calculer des totaux et des moyennes. Ces types de traitements sur une table exigent lcriture de code, qui
permet de parcourir les donnes en arrire-plan.
Vous ne pouvez pas assigner ce champ dans la fentre Proprits si vous connectez
lexcution le contrle ADO la base par programme, comme lexplique la section
prcdente.
Une fois quune zone de texte est lie au contrle ADO, vous pouvez rpter la mme
opration pour les autres ou utiliser les proprits DataSource et DataField de la fentre
Proprits dcrites au Tableau PB9.1, car elles fonctionneront une fois quun contrle de
la feuille est reli la base de donnes nouvellement connecte.
Les champs de la table ne contiennent pas tous des donnes prcises et compltes. Par exemple, dans le premier enregistrement de la base de donnes
BIBLIO.MDB, le champ Sujet est vide. Certains champs contiennent des
valeurs tranges tel que 2nd qui est sans doute ldition, mais pas le sujet
du livre..
613
<
:
Partie III
Figure PB9.4
Le premier
enregistrement peut
maintenant safcher.
1:
2:
3:
4:
5:
6:
7:
8:
9:
Le jeu denregistrements utilis dans les lignes 3 6 est la liste des enregistrements avec
lesquels vous travaillez. Vous avez spci le jeu denregistrements prcdemment par
linstruction SQL qui limitait les enregistrements la table Titles. La mthode MoveNext
du jeu denregistrement fait avancer le pointeur dun enregistrement la ligne 4. Tous
les autres contrles lis la table avancent galement.
Un problme peut se produire dans les situations suivantes, quil faut grer :
>
:
614
fait "si lon nest pas la n du jeu denregistrements, alors continuer". La ligne 5
garantit que, si la mthode MoveNext amne la n du chier, la mthode MovePrevious fait alors reculer le pointeur pour lempcher de dpasser la n de la table.
MovePrevious est la mthode de jeu denregistrement qui permet de reculer dans la
table dun enregistrement.
Vous pouvez utiliser la mthode MovePrevious pour ajouter une procdure vnementielle au bouton Prcdent (dont le titre est <) :
1:
2:
3:
4:
5:
6:
7:
8:
9:
La proprit BOF du jeu denregistrements vrie le dbut du chier, pour garantir quon
interdit lutilisateur de reculer lorsque le pointeur se trouve dj au dbut.
Info
615
<
:
Partie III
Listing PB9.1 : Vous pouvez utiliser des mthodes dcriture des donnes
dans la table par programmation
La fonction IIf() est utilise tout au long du listing pour que la valeur N/A (non
applicable) soit crite quand un champ enregistr ne contient pas de donnes. IIf()
garantit quaucune valeur crite nest nulle. Le nom de champ entre crochets de la
ligne 7 est obligatoire, car il contient un espace. Visual Basic traite [Year Published]
comme un nom de champ unique ; sans les crochets, il ne serait pas capable de reconnatre lespace incorpor.
Le Listing PB9.1 najoute que les donnes qui ont t modies dans la feuille du
projet, mais vous pouvez facilement adapter le code pour rechercher dans une autre
source les donnes enregistrer dans la table. A la ligne 14, vous pourriez chercher des
donnes externes, par exemple une saisie dans une zone de texte, au lieu daller dans la
zone de texte de la feuille. La ligne 17 est ncessaire, car elle effectue la mise jour
effective dans la table, laide de la mthode Update.
Le code du Listing PB9.1 crit donc dans la table les modications effectues par
lutilisateur dans les donnes de la feuille (ces valeurs seront de toutes faons crites,
car les zones de texte sont lies la base dans notre exemple). Pour ajouter de
nouvelles donnes la n de la table, vous devez dabord effacer les champs de la
feuille pour permettre lutilisateur de saisir les donnes. (Vous pourriez connecter
ce code au bouton de commande Nouveau, ce que cette application ne prend pas le
temps de faire).
>
:
616
Les donnes qui sont enregistres ensuite apparatront comme un nouvel enregistrement
dans la table.
Les mthodes AddNew et Update mettent toujours la table jour avec des donnes
nouvelles ou modies de champs lis.
617
<
:
Chapitre
19
619
Partie III
Lassistant Internet
Lassistant Cration dapplications effectue une partie du travail si vous souhaitez que
votre application accde lInternet. Slectionnez les choix adapts et lassistant ajoute
laccs lInternet votre application, en lui donnant des capacits de communications
plantaires.
Note
ition
Dfin
ition
Dfin
Les outils Internet dcrits dans cette leon fonctionnent aussi bien sur
lInternet que sur un intranet. Les technologies Internet et intranet supportent un protocole commun, elles peuvent donc fonctionner avec le mme type
dapplications.
Un intranet est un systme de rseau local (par exemple, un rseau dans un
seul immeuble ou mme une petite zone sur un seul tage) qui offre les mmes
fonctions que lInternet.
Un protocole permet deux ordinateurs de communiquer. Les connexions
Internet et intranet utilisent un protocole commun : TCP/IP (Transfer
Control Protocol/Internet Protocol). Il est utilis pour les connexions Internet
universelles.
ition
Dfin
Lorsque vous crez le noyau dune application avec lassistant Cration dapplications,
la sixime bote de dialogue (voir Figure 19.1) est la fentre Connexion Internet, qui
congure laccs au Web de lapplication que vous crez.
>
:
620
Figure 19.1
Vous pouvez
slectionner laccs
lInternet dans
la bote de dialogue
Connexion Internet
de lassistant.
Lassistant propose un URL par dfaut : la page daccueil de Microsoft. Vous devez
modier cet URL pour prsenter autre chose aux utilisateurs. Lorsque le navigateur est
dclench dans lapplication, il se connecte (en utilisant le fournisseur de services Internet
existant) lURL spci dans lassistant. Vous pouvez, par exemple, inclure lURL de la
page daccueil de votre entreprise dans la zone de texte. Lorsque vous slectionnez loption
Oui, lassistant insre en fait un moteur de navigateur Web dans lapplication gnre.
ition
Dfin
Faites toujours commencer un URL par http://. (http signie Hypertext Transfer
Protocol, et dsigne la procdure de communication standard utilise pour laccs aux
pages Web). La majorit des navigateurs modernes se passent du prxe http://, mais
lassistant lexige.
Vous pouvez rapidement crer une application de test pour accder lInternet. Suivez
ces tapes pour ajouter une fonction de navigation Internet dans lapplication cre par
lassistant :
1. Crez un nouveau projet et lancez lassistant Cration dapplications.
2. Cliquez sur Suivant pour sauter la premire bote de dialogue.
3. Slectionnez Interface monodocument (SDI) pour simplier lapplication gnre.
4. Cliquez sur Suivant dans les quatre botes de dialogue suivantes pour accepter les
options de menu par dfaut.
621
<
:
Partie III
5. Dans la bote de dialogue Connexion Internet, cliquez sur Oui. Laissez, dans cet
exemple, ladresse URL du site Web de Microsoft.
6. Cliquez sur Terminer pour gnrer lapplication.
Info
Si cest la premire fois que vous utilisez les contrles Internet depuis
linstallation de lenvironnement Visual Basic, vous verrez la bote de dialogue de la Figure 19.2. Cliquez sur OK pour prparer ces contrles et les
charger dans lenvironnement Visual Basic.
Figure 19.2
Visual Basic doit
prparer les contrles
Internet pour leur
premire utilisation.
Lorsque vous revenez dans lenvironnement Visual Basic, observez la fentre Bote
outils. La Figure 19.3 montre les outils ajouts par lassistant la collection des contrles internes. Vous en avez dj utilis certains au cours de ce didacticiel : la bote de
dialogue standard, la barre doutils, la liste de dessins et le curseur.
Figure 19.3
Lassistant a ajout
de nouveaux outils
la bote outils.
Barre
d'onglets
Affichage
des dossiers
Bote de
dialogue
commune
Navigateur
Web
Barre
Curseur
Barre de
Affichage
d'outils
progression
de listes
Barre
Affichage de
Liste de ImageCombo
d'tat
l'arborescence dessins
Les outils supplmentaires donnent aux parties de navigation Web de lapplication les
contrles dont elles ont besoin. A lvidence, le contrle Navigateur Web est loutil
principal concern par cette leon.
Appuyez sur F5 pour excuter ce noyau dapplication. Lcran que vous voyez nest pas
diffrent des autres crans dapplications gnres par des assistants que vous avez dj
pu rencontrer. Le menu et la barre doutils par dfaut safchent dans la feuille. La fonc-
>
:
622
tion Internet apparat cependant lorsque vous choisissez Navigateur Web dans le menu
Afchage. Une bote de dialogue de navigation Web safche et lance la connexion
laide de la fentre classique de connexion votre fournisseur Internet ( moins que
vous ne soyez dj connect ou que vous ne disposiez dune capacit de connexion
automatique). Aprs avoir saisi le nom dutilisateur et le mot de passe, une fentre de
type Internet Explorer safche au centre de la feuille de lapplication et prsente le site
Web de Microsoft (voir Figure 19.4).
Figure 19.4
Lapplication gnre
par lassistant est
connecte au site Web
de Microsoft.
ce
Astu
Le navigateur Web
La fentre Internet Explorer que vous voyez est en fait une petite application
qui enrobe un norme contrle ActiveX. Le navigateur Web insr par
lassistant de Visual Basic est un exemple de contrle ActiveX. Sil est plus
simple que la version complte dInternet Explorer (il y a moins de boutons
de barre doutils et pas de menu), il fournit toutes les fonctions de navigation ncessaires : les boutons Prcdent et Suivant, Origine, etc. Si vous
cliquez sur Rechercher, Internet Explorer utilise le site de recherche de
Microsoft pour lancer la requte.
Pour vous dconnecter de lInternet, vous devez fermer le navigateur Web, doublecliquer sur licne de connexion de votre fournisseur Internet dans la Barre des tches,
et slectionner loption Dconnecter. Le navigateur ne dispose pas de fonction de
dconnexion, mais vous pouvez lajouter par programmation.
623
<
:
Partie III
>
:
Contrle de transfert Internet. Il encapsule les trois protocoles Internet les plus
courants : HTTP, FTP (File Transfer Protocol) et Gopher (un protocole de recherche
permettant de trouver des informations sur lInternet). Vous pouvez tlcharger des
chiers depuis vos applications Visual Basic en utilisant FTP.
624
Description
IE Animated button
IE Popup Menu
IE Preloader
Prcharge une page dun site avant que laccs visible lInternet
commence
IE Super Label
IE Timer
Microsoft Internet
Controls
Microsoft Internet
Transfer Control 6.0
Contrle TCP
Microsoft Winsock
Control 6.0
625
<
:
Partie III
Info
Documents ActiveX
An de dvelopper une application Visual Basic exclusivement Internet, vous pouvez utiliser
les documents ActiveX pour commencer. Un document ActiveX ressemble et fonctionne
comme une application Visual Basic dans une fentre feuille, mais il envoie vers lordinateur
de lutilisateur nal tous les contrles ActiveX utiliss, sils y sont absents. Le document se
prsente lutilisateur comme une page Web HTML classique. Le document ActiveX peut,
par exemple, contenir des liens hypertexte (des contrles ActiveX qui sont tlchargs ou
utiliss, suivant le contenu de la machine de lutilisateur). Les menus des documents ActiveX peuvent aussi tre fusionns automatiquement avec lapplication parente (comme les
serveurs OLE).
ition
Dfin
>
:
626
Visual Basic peut vous aider dans la conception de pages Web si vous slectionnez lassistant DHTML. Les chiers HTML ont lextension .HTM extension de chier.
Les ditions Professionnelle et Entreprise de Visual Basic 6 supportent DHTML (Dynamic Hypertext Markup Language) qui ragit des actions sur la page Web. Le document
ActiveX est li une page HTML que vous crez ou utilisez. Quand lutilisateur clique
sur le lien vers votre document ActiveX, ce dernier sactive, le contrle arrive sur lordinateur de lutilisateur, puis le code du document ActiveX de la page Web sexcute quand
la page safche. Le contenu est dynamique, ce qui signie que des paramtres tels que la
couleur et le style du texte peuvent diffrer dune machine lautre en fonction des congurations.
Info
Un document ActiveX nest pas statique. Cest en fait une vritable application qui sexcute. Lutilisation dun concept de document aide les programmeurs voir comment les pages Web utilisent le document ActiveX
incorpor.
La raison principale pour crer des documents ActiveX est sans doute quInternet
Explorer peut les excuter comme sil tait un programme de contrle ou un lanceur de
programme du systme dexploitation. Les menus du document ActiveX fusionnent
avec les menus dInternet Explorer (et en remplacent les fonctionnalits si ncessaire),
et vous navez pas apprendre un nouveau langage, tel que Java, pour activer les pages
Web.
ition
Dfin
Info
627
<
:
Partie III
Figure 19.5
Dmarrez lassistant
Nouveau projet pour
voir les assistants
Documents ActiveX.
Assistant DLL
Document ActiveX
Assistant Exe
Document ActiveX
>
:
628
Figure 19.6
Lapplication Calc
imite les fonctions
dune calculette de
poche.
Figure 19.7
Slectionnez la feuille
de lapplication
qui apparatra sur
la page Web comme
un document ActiveX.
9. La fentre Options (voir la Figure 19.8) dtermine comment lassistant doit grer les
lments quil ne peut pas convertir. Certains types dinstructions de communication
avances ne peuvent pas fonctionner dans un document ActiveX, mme si la majeure
629
<
:
Partie III
Figure 19.8
Congurez les options
du document ActiveX
afcher.
Dans le cadre de cet exemple, laissez les paramtres par dfaut de la bote de dialogue Options et cliquez sur Suivant pour continuer.
10. Laissez les options telles quelles et cliquez sur Terminer dans la fentre Termin! pour
dmarrer la migration de lapplication Calc.vbp vers un document ActiveX. Une fois
quelle sachve, une bote de dialogue de n safche.
11. Cliquez sur OK pour fermer la bote de dialogue de n.
>
:
630
ce
Astu
Figure 19.9
La fentre
Rcapitulatif
dcrit les actions
accomplir pour
achever la migration.
La migration tant acheve, vous devez excuter encore une fois lapplication dans lenvironnement Visual Basic pour prparer un objet document ActiveX excutable. Dune
certaine manire, Visual Basic compile votre application, mais contrairement une compilation classique, lexcution de lapplication convertie cre un document ActiveX avec une
extension .VBD (Visual Basic Document). Vous devrez encore compiler le document
ActiveX dans un format EXE pour lutiliser hors de lenvironnement Visual Basic.
Ds que vous dmarrez lapplication, Visual Basic afche la bote de dialogue Proprits du projet (voir Figure 19.10). Elle dtermine le comportement du document lorsque
vous excuterez le programme. Si vous observez la fentre Projet, vous constaterez
quelle comprend deux composants : la feuille Calc habituelle et un second objet,
docCalculator. Ce dernier est le composant document ActiveX cr quand vous avez
appuy sur F5 pour excuter lapplication.
Lorsque vous cliquez sur OK, Visual Basic lance le document ActiveX dans le navigateur
Internet. La Figure 19.11 montre le rsultat. Remarquez ce qui sest produit :
Vous navez pas crit une ligne dinstructions HTML pour gnrer la page Web.
631
<
:
Partie III
Figure 19.10
Spciez
les proprits du
projet de document
ActiveX.
Si vous fermez le projet, vous pouvez tout moment redmarrer le navigateur Internet,
slectionner Fichier, Ouvrir, rechercher le chier docCalculator.vbd et excuter
lapplication compile sous forme de document ActiveX, sans dmarrer Visual Basic.
Si vous placez lapplication sur votre serveur Web (en considrant que vous avez
accs un serveur Web o vous pouvez proposer des pages Web sur lInternet), tout
utilisateur dInternet dans le monde entier qui utilise un navigateur compatible
ActiveX sera capable dexcuter cette application. (Cela simule en fait laction
dune applet Java).
Une fois le navigateur Internet ferm, vous pouvez slectionner Excution, Fin pour
arrter lexcution de Visual Basic.
ce
Astu
>
:
632
Figure 19.11
Internet Explorer est
la plate-forme sur
laquelle lapplication
Calculette sexcute
dsormais.
HTML et VBScript
Sil suft de connatre le langage de programmation Visual Basic pour accder aux
fonctions de connexion Internet de Visual Basic 6, vous devez matriser deux autres
langages pour bien lier le tout. HTML est le langage de mise en forme des pages Web ;
il est conu pour atteindre les objectifs suivants :
formater les pages Web en colonnes, avec des graphiques et des titres adapts ;
HTML est dsign comme un langage de script. Il ne se compile pas pour donner un
excutable comme le font les programmes Visual Basic. HTML formate les pages Web,
spcie o mettre les graphiques et les cadres de sparation, et permet dactiver des
applications incorpores comme les documents ActiveX et les programmes Java.
VBScript, comme son nom lindique, est un autre langage de script, conu par Microsoft partir du langage de programmation Visual Basic. Il est utile lorsque vous voulez
ajouter des caractristiques cls de Visual Basic une page Web, comme un message
surgissant, une bote de saisie, un calcul en boucle, etc. VBScript, malgr ses bases
Visual Basic, ne remplace pas les documents ActiveX, mais il permet de les charger
dans une page HTML pour quils sexcutent. Cest donc le support permettant aux
documents HTML de trouver et dexcuter des documents ActiveX Visual Basic.
633
<
:
Partie III
Info
Le Listing 19.1 montre un exemple des premires lignes du code HTML du site Web
Microsoft.
Listing 19.1 : Quelques lignes de code HTML peuvent rvler comment fonctionne
le code de formatage des pages Web
<HTML>
<HEAD>
<TITLE>MSN.COM</TITLE>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<META http-equiv="PICS-Label" content=
(PICS-1.0 "http://www.rsac.org/ratingsv01.html"
l comment "RSACi North America Server" by
"Microsoft Network">
</HEAD>
<FRAMESET rows="20,*" frameborder="0"
framespacing="0" border="0">
<FRAME src="/pilot.htm" name="pilot"
NORESIZE scrolling="no" marginwidth="0"
marginheight="0" frameborder="0" framespacing="0">
</FRAMESET>
</html>
Connectez-vous lInternet et allez avec votre navigateur Web sur la page daccueil de
Microsoft http://www.microsoft.com/. Mme si la page peut diffrer de celle dcrite
dans le Listing 19.1, ce nest pas ce texte que vous verrez. HTML est un langage de
description de mise en forme de page. Les commandes du Listing 19.1 indiquent votre
navigateur Web comment afcher le texte et les graphiques qui sont transmis vers
votre machine lorsque votre navigateur pointe la page.
Le Listing 19.2 montre un extrait dun exemple VBScript. Vous pouvez en comprendre
une bonne partie grce votre connaissance du langage Visual Basic.
Listing 19.2 : Un exemple de VBScript qui montre les ressemblances
avec Visual Basic
<SCRIPT Language="VBScript">
Call PrintWelcome
Call ModMessage
>
:
634
Sub PrintWelcome
If Date() = "2/2/98" Then
document.write ". . . .Anniversaire de Cathy !"
End If
If Date() = "2/5/98" Then
document.write ". . . .Anniversaire dEric !"
End If
If Date() = "5/17/98" Then
document.write ". . . .Anniversaire de Michael !"
End If
If Date() = "7/25/98" Then
document.write ". . . .Mon Anniversaire !"
End If
End Sub
Sub ModMessage
Document.Write "<BR>Dernire modification de cette page :
"+Document.lastModified +"</FONT><BR>"
End Sub
</SCRIPT>
De VB Java ?
Une technique que vous pouvez vite tudier est la conversion de Visual Basic vers Java.
Certains fournisseurs vendent dj de tels outils et dautres ont annonc leur intention
de le faire. Le gros avantage de ce type doutil est que vous navez pas trop vous
proccuper des contrles Internet. Si vous pouvez crire une application qui utilise des
contrles Visual Basic, le programme de conversion traduit le projet Visual Basic en
projet Java. Dans Java, vous pouvez incorporer lapplication dans vos pages Web intranet ou Internet, et lapplication aboutit sur lcran de lutilisateur ds quil afche la
page Web.
Ces outils de conversion Java ne remplacent pas ncessairement lassistant Migration de
document ActiveX dont nous avons dj parl. Cependant, sur certains systmes autres
que Windows supportant Java, mais pas ActiveX, les applications Java peuvent tre plus
universellement acceptes que les applications bases sur ActiveX.
Info
Si Java est une nouveaut pour vous, disons quil fournit un vritable contenu
actif aux pages Web depuis bien avant lapparition des contrles ActiveX. Java
fonctionne au travers des pages Web et il sexcute sur la machine de lutilisateur nal, mme si cette machine et le systme dexploitation ne sont pas les
mmes que ceux du dveloppeur. Pour des informations supplmentaires sur
Java, reportez-vous labondante littrature existant sur le sujet.
635
<
:
Partie III
ce
Astu
Applications DHTML. Permet dcrire du code qui ragit des vnements sur
une page Web HTML. Le navigateur de lutilisateur nal interprte et excute ces
commandes, et le serveur distant na pas grand-chose dautre faire que de rpondre
aux requtes particulires quand elles se produisent, comme, par exemple, rcuprer
des pages Web supplmentaires.
Info
ition
Dfin
Visual Basic supporte ces deux types de dveloppement dapplications Internet ; vous
pouvez donc les dvelopper dans Visual Basic, et les tester avec les outils de dbogage
que vous apprendrez dans le Chapitre 21.
>
:
636
En rsum
Ce chapitre a donn une brve prsentation du rle de Visual Basic en tant quacteur
Internet. A lvidence, cette leon ne peut couvrir quune trs faible partie des dtails
ncessaires pour vraiment transformer Visual Basic en un outil de programmation Internet. Des bases solides sont ncessaires, ne serait ce que dans la technologie Internet,
avant de sattaquer linterface de Visual Basic. Il existe quantit de bons livres et de
rfrences en ligne, mais la meilleure chose est dj dtudier le matriel qui accompagne
Visual Basic 6. Vous y trouverez des descriptions qui dtaillent votre rle en tant que
programmeur Internet.
Ne soyez pas effrays par lide dcrire des applications qui interagissent avec lInternet. Rendez-vous compte que lobjectif annonc de faire tenir chaque leon sur la dure
dune journe raisonnable naurait pas pu tre atteint si la leon daujourdhui stait
aventure vous apprendre les nombreuses particularits ncessaires lcriture des
programmes Internet. En tout cas, les programmeurs Internet sont bien rcompenss
pour leurs comptences rsultant des tudes approfondies exiges et du rythme quils
doivent suivre pour rester jour dans la technologie.
La leon de demain dcrit comment crer des pages daide pour les applications Visual
Basic. Vous verrez de plus prs comment fonctionne HTML en crant un systme daide
HTML et en utilisant des pages de type HTML.
Questions-rponses
Q Mon application comprend trois feuilles. Lassistant Migration de document
ActiveX compile-t-il ces trois feuilles en un document ActiveX unique ?
R Lassistant Migration de document ActiveX convertit les feuilles, non les applications
entires, en documents ActiveX. En dautres termes, si votre application contient
quatre feuilles, chacune gnrera un document ActiveX diffrent (si on considre
quelles ne contiennent pas de code qui viole les exigences des documents ActiveX).
Vous pourrez lier les documents avec des liens hypertexte en utilisant des instructions
HTML, mais chaque feuille deviendra un document ActiveX indpendant. Lassistant
de migration ne convertit pas vraiment la totalit de lapplication en un document
ActiveX unique si lapplication contient plusieurs feuilles.
637
<
:
Partie III
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension
des lments traits, ainsi que des exercices qui vous permettent de mettre en pratique ce
que vous avez appris. Essayez de comprendre les questions et les exercices avant de passer
la leon suivante. Les rponses se trouvent lAnnexe A.
Quiz
1. Que fait de lURL que vous fournissez lapplication de navigation Web que vous
gnrez dans lassistant Cration dapplication ?
2. Les utilisateurs de votre application doivent utiliser Internet Explorer comme navigateur Web pour que le contrle de navigation Web Visual Basic fonctionne. Vrai ou
faux ?
3. Vous devez utiliser Internet Explorer comme navigateur Web pour que le contrle de
navigation Web Visual Basic fonctionne. Vrai ou faux ?
4. Quest-ce que lencapsulation ?
5. Quel service en ligne est support par certains contrles Visual Basic ?
6. Quelle est la diffrence entre un intranet et lInternet ?
>
:
638
7. Quelle est la diffrence entre un document ActiveX et une application Visual Basic
classique ?
8. A quoi sert Java ?
9. Quel langage de script fonctionne avec HTML pour charger et excuter des documents
ActiveX ?
10. Comment pouvez-vous convertir des applications existantes en documents
ActiveX ?
Exercices
1. Si vous disposez de Microsoft Ofce Professionnel, vous pouvez utiliser le Classeur
Ofce pour contenir des documents ActiveX ! Essayez en utilisant le document
ActiveX calculette que vous avez cr dans la leon daujourdhui.
2. Slectionnez une application qui contient plusieurs feuilles, comme le projet exemple
Controls. Convertissez cette application en un document ActiveX.
639
<
:
Chapitre
20
Fournir de laide
Ce chapitre explique comment aider les utilisateurs. Lorsque vous en aurez termin, vous
saurez ajouter un systme daide une application an que lutilisateur puisse en lire la
documentation en ligne. Le systme daide est dit en ligne non pas parce que vous
envoyez lutilisateur sur lInternet, mais parce que les informations sont immdiatement
disponibles ; il na pas se reporter un manuel imprim. Le systme daide imite le
systme daide de presque toutes les applications Windows. Lutilisateur na pas faire
defforts particuliers dapprentissage pour savoir comment utiliser laide en ligne de vos
applications.
Cette leon commence par vous apprendre comment ajouter des info-bulles aux contrles.
Laide "Quest-ce que cest ?" peut galement tre ajoute une fois que vous matrisez la
cration des chiers daide.
Vous apprendrez dans ce chapite :
641
Partie III
ntion
Atte
ition
Dfin
ce
Astu
Les info-bulles sont les descriptions daide qui safchent quand vous laissez
le pointeur de la souris sur un contrle.
Laide "Quest-ce que cest ?" est une aide contextuelle (signiant quelle
dpend de lendroit do lutilisateur la demande) qui dcrit le contrle.
Lutilisateur clique sur le point dinterrogation "Quest-ce que cest ?" dans
le coin suprieur droit de la fentre ou slectionne le menu Aide, Quest-ce
que cest ? ; le curseur se transforme en un point dinterrogation. Tout
contrle sur lequel lutilisateur clique alors gnre une aide.
Proposez une aide "Quest-ce que cest ?" lorsque lcran de votre application contient de nombreux lments qui peuvent troubler les nouveaux
utilisateurs. Ils peuvent cliquer sur "Quest-ce que cest ?" dans la barre
doutil ou slectionner loption de menu correspondante, puis cliquer sur
lobjet de lcran pour lequel ils veulent en savoir plus.
Outre les info-bulles, vous pouvez proposer une aide "Quest-ce que cest ?" pour
donner aux utilisateurs des informations supplmentaires sur vos applications. La
Figure 20.1 montre la fentre daide "Quest-ce que cest ?" qui safche aprs que
lutilisateur a choisi Aide, Quest-ce que cest ? et quil a cliqu sur Parcourir. Le
>
:
642
pointeur en point dinterrogation reprend une forme normale ds que la bote daide
safche.
Figure 20.1
Lutilisateur peut
demander "Quest-ce
que cest ?"
Info
Cette tude simultane des info-bulles et de laide "Quest-ce que cest ?" sexplique par
leur ressemblance dun point de vue utilisateur. Ce dernier doit laisser le curseur sur un
contrle pour lire linfo-bulle, ou cliquer sur le dclencheur "Quest-ce que cest ?" pour
obtenir de laide sur ce contrle.
Malgr ces ressemblances, vous pourrez tre surpris de la complexit inhrente lajout
de laide "Quest-ce que cest ?" par rapport aux info-bulles (qui sont trs simples). Le
reste de cette section dcrit comment ajouter des info-bulles et la partie nale dcrit
comment ajouter laide contextuelle (une fois que vous aurez appris comment crer des
chiers daide intgrer dans laide en ligne).
La simplicit de lajout des info-bulles tout contrle plac sur la feuille peut vous
surprendre. Il suft pour cela de saisir le texte dans la proprit ToolTipText de lobjet.
Visual Basic soccupe de tout le reste. Cherchez, dans les exemples, lapplication de
643
<
:
Partie III
Faire
Prenez lhabitude de renseigner le texte de linfo-bulle chaque fois que vous
ajoutez un contrle dans une feuille dune application, vu la simplicit de la
manipulation. Il y a moins de chances que vous ajoutiez les info-bulles plus
tard, ajoutez-les donc immdiatement, quand le but de votre contrle est
encore frais dans votre esprit.
>
:
644
Vous pouvez ajouter ce type daide HTML vos applications Visual Basic. Cest un
nouveau type daide ; en effet, avant lapparition des navigateurs Web, toutes les applications Windows utilisaient le mme moteur, WinHelp. Ce dernier permet lafchage de
laide en ligne et utilise les liens hypertexte, mais dans un format diffrent des navigateurs Web (voir Figure 20.2). La version WinHelp du systme daide des applications
Windows est le mme depuis plusieurs annes. Les programmeurs prdisent que laide
HTML sera le systme standard de laide en ligne des applications Windows dans
quelques annes, mais WinHelp garde toujours une bonne avance.
ition
Dfin
WinHelp est le systme daide en ligne utilis dans la plupart des applications Windows, et qui sera peut-tre remplac un jour par le systme daide
HTML.
Figure 20.2
Laide HTML utilise
une fentre deux
volets ressemblant
lExplorateur.
ntion
Atte
645
<
:
Partie III
La manire de connecter un chier daide HTML une application Visual Basic est la
mme que pour un chier WinHelp : spciez le chier daide HTML dans la proprit
HelpFile. Vous pouvez en outre paramtrer la proprit HelpContextID pour tous les
objets de la feuille pour quun sujet particulier daide contextuelle safche sil est
slectionn lcran quand lutilisateur appelle laide.
La principale difcult ne rside pas dans la connexion du chier daide votre application et ses objets, mais dans la cration de ce chier. A partir de la section suivante,
vous suivrez un exemple assez ennuyeux qui cre un chier daide WinHelp qui, malgr
sa longueur, est encore assez incomplet. Les crans daide, mme pour les applications
simples, peuvent tre nombreux et, plus vous offrez de liens hypertexte complets, plus
votre travail de concepteur de chiers daide devient pesant.
Info
ce
Astu
Les chiers daide HTML ont une extension .CHM et les chiers WinHelp,
une extension .HLP.
La cration dun chier daide, quil soit HTML ou WinHelp, ncessite
souvent beaucoup plus defforts quil nen mrite. Cependant, lexprience
que vous allez commencer acqurir partir de la section suivante est une
bonne chose, car vous comprendrez mieux comment le texte dun chier
daide interagit avec une application. Faites-vous plaisir ds que vous en
aurez termin avec cette leon : courez chez votre marchand de logiciels et
cherchez un outil de cration daide plus automatis. De nombreux logiciels
utilitaires rendent la cration beaucoup plus simple. De plus, les nouveaux
outils de cration daide gnrent laide HTML et WinHelp partir des
mmes instructions.
Il existe dautres outils outre les outils de cration daide disponibles actuellement
avec lesquels il est possible de crer des pages HTML utilisables comme chiers daide.
De nombreux traitements de texte actuels, comme Microsoft Word 97, ouvrent et enregistrent les chiers au format HTML. Vous pouvez aussi, si vous navez pas accs un
programme de cration daide au format HTML, utiliser un outil de conception de pages
Web pour crer les chiers HTML. Microsoft fournit une version de son programme de
conception de pages Web, FrontPage Express, avec Internet Explorer. FrontPage
Express peut aussi tre tlcharg partir du site Web de Microsoft.
Il existe des ouvrages complets qui expliquent comment crer des pages HTML, notamment les lments de pages Web et daide, tels que les liens hypertexte et les graphiques
incorpors.
>
:
646
Laide RTF
Les sections suivantes expliquent comment crer et lier le chier des sujets daide
votre application en utilisant la mthode traditionnelle WinHelp. Vous devez non seulement
rdiger le chier des sujets daide, mais aussi crer un projet daide que vous compilez
ensuite pour donner un systme daide li votre application. Le texte insrer dans
le chier des sujets daide doit tre au format RTF (Rich Text Format), que lapplication peut utiliser pour incorporer des sauts hypertexte de sujet en sujet lorsque cest
ncessaire.
ce
Astu
Info
Un saut hypertexte est un lien vers un autre sujet dans le systme daide.
Vous devez avoir accs un traitement de texte capable de crer des chiers
RTF et qui supporte les notes de bas de page. Microsoft Word est certainement loutil le plus rpandu pour la cration de chiers daide.
Souvenez-vous quune bonne raison pour crer des chiers daide WinHelp est quils
seront accessibles par tous les utilisateurs de votre application. Tous les exemplaires de
Windows sont fournis avec un systme daide qui sappelle la visionneuse de chier
daide (Windows Help Viewer), et qui est capable de grer les chiers source RTF
WinHelp compils comme cest dcrit ici. Cette visionneuse est, par contre, incapable
de lire les chiers daide HTML ; il faut pour cela un navigateur Web.
ition
Dfin
La compilation effectue sur les chiers daide na pas de rapport avec la compilation de
lapplication. Dans la leon de demain, vous apprendrez comment compiler vos applications an de les distribuer. Pour que votre application, compile ou pas, accde un
chier daide, il faut que ce dernier soit compil en un chier avec lextension standard
.HLP.
647
<
:
Partie III
Ajouter un soulignement double toutes les phrases de saut hypertexte. Elles safcheront en vert dans la fentre daide de lutilisateur. Avec Word, il faut slectionner
le mot ou la phrase, slectionner Police dans le menu Format, puis choisir Double
dans la liste droulante Soulignement. Vous pouvez aussi utiliser la combinaison de
touches Ctrl-Alt-U, ou personnaliser la barre doutils et ajouter licne de double
soulignement.
Faire suivre le texte du saut hypertexte dune balise nomme chane de contexte, qui
contient le sujet de destination du saut et qui est formate en texte masqu. Ninsrez
aucun espace entre le saut hypertexte et la chane de contexte. Assurez-vous que
vous ne formatez que la chane de contexte en texte masqu (attention aux espaces,
aux ponctuations ou aux marques de paragraphes). Pour masquer le texte, slectionnez Format, Police, et cliquez sur la case Masqu. Vous pouvez aussi utiliser la
combinaison de touches Ctrl-Maj-U ou personnaliser la barre doutils.
ition
Dfin
>
:
Une chane de contexte est une chane de caractres qui suit un saut
hypertexte afch dans le texte quand lutilisateur demande une aide
contextuelle.
Sparer la page du sujet qui contient le saut hypertexte de la page de destination par un
saut de page. Vous pouvez ajouter un saut de page dans le menu Insertion, en
slectionnant Saut, puis Saut de page (ou appuyer sur Ctrl-Entre).
648
pouvez aussi appuyer sur Ctrl-U ou ajouter une icne en personnalisant la barre
doutils.
Symbole
Description
Utilis pour se connecter un sujet lors dune recherche par mots cls.
De nombreux sujets daide sont lis leurs pages de destination par les trois
symboles de bas de page. En dautres termes, lutilisateur peut sauter de sujet
en sujet, les titres des sujets apparaissent dans la zone de texte Rechercher du
systme daide ; il peut aussi rechercher les sujets laide de mots cls.
Il est beaucoup plus simple de montrer un exemple que de dcrire un chier daide.
La section suivante illustre donc les diffrentes manires de congurer les sauts hypertexte et les destinations.
ce
Astu
649
<
:
Partie III
Info
Cet exemple utilise Microsoft Word pour la cration des chiers daide. Vous
pourrez avoir utiliser un autre traitement de texte, suivant le contenu de
votre machine.
Texte
soulign
Texte
masqu
Texte double
soulign
Saut de
page
>
:
650
Titre du
sujet
ntion
Atte
ID de contexte
d'aide
Nutilisez pas le symbole de note de bas de page K dans la fentre douverture de laide.
Les paragraphes suivants vous montreront que le document RTF contient un type dID
de contexte diffrent de celui quattend Visual Basic. Vous devrez par consquent faire
correspondre les valeurs textuelles dID de contexte des valeurs numriques pour
quune application puisse utiliser laide contextuelle.
651
<
:
Partie III
Les sauts hypertexte daide restants doivent maintenant avoir des pages daides correspondantes, avec leurs notes de bas de page pour pouvoir tre connectes lcran
douverture. Le premier sujet daide crer est la dnition surgissante du terme MDI.
La page qui suit lcran douverture doit contenir les informations suivantes :
la dnition de MDI.
La note de bas de page de la Figure 20.5 complte la connexion entre cette page et le
lien correspondant de la page douverture en ajoutant un ID de contexte la
dnition.
Figure 20.5
La dnition surgira
grce lappel par
soulignement simple.
Titre de la
dfinition
Info
ID de contexte
d'aide
La Figure 20.6, enn, montre la premire partie des sujets des sauts hypertexte restants
de laide. La note de bas de page # connecte les sujets de saut hypertexte de la page
douverture aux pages suivantes.
>
:
652
Figure 20.6
Les pages suivantes
sont maintenant lies
la page douverture
de laide.
ce
Astu
Toutes ces pages de sujets peuvent contenir des liens vers des pages supplmentaires (et entre elles) et aussi des dnitions surgissantes.
Ds que vous avez achev le chier daide RTF, enregistrez-le. Slectionnez bien le
format Texte mis en forme (RTF) lors de lenregistrement. Vous devez maintenant crer
le chier de projet daide en utilisant encore un autre type de chier Texte ASCII.
Word peut enregistrer dans ce format ; vous pouvez mme utiliser le Bloc-notes MDI
pour crer ce chier. Le chier de projet suivant a t utilis pour le chier daide
dcrit :
[OPTIONS]
contents=HID_CONTENTS
title=Aide du bloc-notes MDI
[FILES]
MDINote.rtf
653
<
:
Partie III
>
:
654
655
<
:
Partie III
Figure 20.8
Connectez le chier
daide votre projet.
Si vous proposez une aide contextuelle, vous devez indiquer au moteur daide quelle
page doit safcher quand lutilisateur slectionne laide. Vous devez, pour cela, modier le chier de projet de laide et faire correspondre aux ID de contexte textuels des ID
de contexte numriques.
Info
>
:
656
Vous devez modier nouveau le chier de projet et faire correspondre des nombres
aux ID de contexte textuels. Pour cela, ajoutez une section [MAP] au chier de projet. Si
on considre le chier daide MDINote.rtf et le chier de projet associ dcrit plus tt,
voici une modication possible :
[OPTIONS]
contents=HID_CONTENTS
title=Aide du bloc-notes MDI
[FILES]
MDINote.rtf
[MAP]
HID_CONTENTS 1
MDI_DEF 2
CREATE_FILES 3
EDIT_TEXT 4
SEARCH_TEXT 5
CHANGE_OPTIONS 6
MANAGE_WINDOWS 7
Assurez-vous quil ny a pas deux numros dID de contexte identiques. La correspondance peut partir de 1, mais de nombreux programmeurs Visual Basic rservent des
sries de nombres pour reprsenter diffrents types de sujets daide. Par exemple, tous les
boutons de commande pourront avoir des numros compris entre 1 000 et 1 050. Les
numros nont pas tre en squence. Recompilez le projet pour incorporer la nouvelle
carte des informations dans le chier daide.
ce
Astu
Si vous manipulez Help Workshop, et que vous lisiez les crans daide pour
vous familiariser avec son fonctionnement, vous apprendrez comment la
fonction Map rend la mise en correspondance des ID de contexte uniques
plus rapide que leur modication par un diteur de texte.
Vous devez localiser tous les contrles et les feuilles auxquels vous voulez ajouter une
aide contextuelle. Par exemple, dans le Bloc-notes MDI, vous pouvez afcher la feuille
frmFind (qui supporte les options de recherche) et modier la proprit HelpContextID
du bouton de commande Find 5. Si vous vous limitez cette manipulation, les utilisateurs verront lcran douverture de laide quand ils appuieront sur F1 dans lapplication,
mais si le bouton Find est activ, ils verront alors la page Rechercher. Bien sr, vous
devrez ajouter des afchages daide contextuelle tous les autres contrles et mme
certaines feuilles, au bnce de lutilisateur.
657
<
:
Partie III
Info
ce
Astu
Le Listing 20.1 montre le code dafchage du sujet daide fourni par un ID de contexte
particulier. Vous pouvez incorporer ce type de code dans un bouton de commande ou
une option de menu pour proposer des sujets daide particuliers de votre chier daide.
Listing 20.1 : Vous pouvez afcher une aide contextuelle
>
:
Vrier que la feuille supporte laide "Quest-ce que cest ?" en paramtrant les
proprits WhatsThisButton et WhatsThisHelp True.
658
Laide "Quest-ce que cest ?" de lapplication Bloc-notes MDI (si vous avez suivi les
sections prcdentes et cr un chier daide avec des pages utilisables) ne demande
que lexcution de ces tapes :
1. Ouvrez la fentre de projet et double-cliquez sur la feuille frmFind pour afcher la
bote de dialogue Find.
2. Assignez la valeur True aux proprits WhatsThisButton et WhatsThisHelp. Si vous
afchez ensuite cette feuille en excutant lapplication, vous verrez le bouton
"Quest-ce que cest ?"en forme de point dinterrogation sur la feuille.
3. Rptez cette assignation pour les deux autres feuilles de lapplication.
4. Recherchez dans la section [MAP] du chier de projet daide les numros dID de
contexte et assignez-les aux diverses options du menu (utilisez le Crateur de menus)
et aux objets feuilles qui peuvent ncessiter une description. Mme si le chier daide
est loin dtre achev, plusieurs des pages daide fonctionnent bien avec les objets, en
particulier les lments de la barre de menus.
En rsum
Ce chapitre vous a expliqu comment incorporer laide vos applications. Plusieurs
formes daides sont disponibles sous Visual Basic. En utilisant laide HTML ou le
moteur daide WinHelp de Windows, vous pouvez crer un systme complet de sauts
hypertexte avec des pages interconnectes et des dnitions surgissantes. Les utilisateurs peuvent obtenir des pages daide contextuelles particulires en appuyant sur F1.
Le contrle Botes de dialogues communes vous assiste dans la fourniture de laide, et
permet aux utilisateurs de recevoir de laide en appuyant sur un bouton.
Lajout daide contextuelle permet aux utilisateurs de trouver laide dont ils ont besoin.
Vous pouvez assigner une aide contextuelle diffrents objets pour quun texte particulier safche quand lobjet est slectionn et que lutilisateur appuie sur la touche F1.
La caractristique daide contextuelle vite aux utilisateurs davoir rechercher dans
lindex chaque fois quils ont besoin daide.
Deux fonctions daide simples qui peuvent tre ajoutes rapidement sont les info-bulles
et laide "Quest-ce que cest ?". Les info-bulles sont trs simples et ne demandent que
lajout du texte afcher dans la fentre Proprits. Avant de pouvoir assigner une aide
"Quest-ce que cest ?", vous devez crer un chier daide complet et assigner les divers
ID de contexte numriques aux objets.
Le chapitre suivant conclut votre formation de 21 jours en vous montrant comment tester,
dboguer et distribuer votre application.
659
<
:
Partie III
Questions-rponses
Q Pourquoi ne puis-je pas crer les chiers daide une fois que mon application
est acheve ?
R Vous devez pouvoir le faire. Cest ce que vous avez fait aujourdhui avec lapplication Bloc-notes MDI. Cependant, vous saisissez mieux les tenants et les aboutissants
de votre application au moment o vous la crez. Vous proposerez donc une
meilleure aide si vous crez les info-bulles, les aides "Quest-ce que cest ?" et les
chiers daide pendant la ralisation de votre projet. Vous pouvez laisser le traitement
de texte ouvert dans une seconde fentre et y basculer (en utilisant la combinaison de
touches Alt-Tab) lorsque vous voulez ajouter des lments.
Q Pourquoi lajout daide dans les chiers est-il si lourd ?
R La lourdeur vient du fait que vous devez garantir la connexion de tous les liens
hypertexte au bon sujet, que tous les sujets qui doivent tre traits le sont bien, et que
vous utilisez un format correct dans le chier daide RTF. Bien sr, le compilateur
daide reprera les chiers daide mal formats, et vous pourrez les dboguer. En
fait, au cours de llaboration et du test de lapplication, vous pouvez compiler aussi
le chier daide pour quil reste en phase. La cration incrmentielle dun chier
daide rend le processus gnral un peu moins lourd.
Il existe de nombreux outils de cration daide, et vous pouvez les utiliser pour
ajouter de laide aux programmes Visual Basic en vitant la lourdeur de la cration
des chiers RTF ou HTML. Nutilisez laide HTML que si vous tes certain que vos
utilisateurs disposent dun navigateur Internet compatible pour lafcher.
Lutilisation de ces programmes visuels de conception daide rendra beaucoup plus
souple la cration de vos chiers daide. En outre, vous viterez nombre des erreurs
de saisie commises naturellement avec lapproche RTF. Ces programmes vous
permettent aussi de crer des diagrammes daide qui montrent comment se connectent les sauts hypertexte et rduisent donc la quantit de programmation RTF que
vous devez effectuer pour crer le chier daide.
Q Pourquoi ne pas utiliser ces outils et sauter ce chapitre ?
R Visual Basic supporte laide en ligne dcrite dans cette leon, mais aussi beaucoup
dautres comme laide HTML. Vous pouvez utiliser des outils dautres fournisseurs
pour faciliter la cration de laide et, si vous dveloppez de nombreuses applications,
vous les tudierez srement de plus prs. Cependant, vous avez commenc avec
Visual Basic et il contient tous les outils ncessaires, part lditeur RTF, pour crer
le support daide dcrit aujourdhui. De plus, tous les utilisateurs ne disposent pas
de navigateur Web pour afcher laide HTML ; elle nest donc pas destine aux
>
:
660
applications universelles, sauf exiger linstallation du navigateur pour que votre application fonctionne. En crant des chiers daide par la mthode " lancienne"
tudie aujourdhui, vous en avez appris beaucoup sur le mode de fonctionnement
du systme daide et vous pouvez apprcier la complexit dun systme hypertexte.
Une bonne partie de la lourdeur ne vient cependant pas de cette approche par chier
RTF, mais de la conception mme du systme daide. Plus il sera complet et
complexe, mieux les utilisateurs apprcieront votre application. Mais des systmes
daide aussi complexes ne sont pas vidents crer, cest pourquoi il est utile de
crer laide en mme temps que lapplication pour vous assurer que vous lui donnez
laide quelle mrite.
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.
Quiz
1. Quel format de chier devez-vous utiliser pour crer le chier daide en ligne ?
2. Comment les sauts hypertexte peuvent-ils amliorer un systme daide ?
3. Quel est le symbole personnalis de note de bas de page utilis pour crer des dnitions surgissantes lies au texte soulign de la page daide ?
4. Citez quelques caractristiques du chier de projet daide.
5. Une fois un chier daide compil, comment pouvez-vous lattacher une application pour quil safche quand lutilisateur appuie sur F1 ?
6. Comment connectez-vous laide contextuelle aux sujets du chier daide ?
7. Laide contextuelle utilise les ID de contexte textuelles du chier daide. Vrai ou
faux ?
661
<
:
Partie III
8. Quelle est la diffrence entre laide "Quest-ce que cest ?" et les info-bulles ?
9. Comment ajouter le bouton "Quest-ce que cest ?" aux feuilles ?
10. Vous pouvez proposer laide "Quest-ce que cest ?" sur les feuilles comme sur les
objets de feuilles (indice : vriez les proprits de la feuille). Vrai ou faux ?
Exercice
Ajoutez une aide "Quest-ce que cest ?" tous les objets du Bloc-notes MDI. Cette
tche peut sembler lourde (elle lest un peu), mais vous arriverez vite matriser le
travail sur les aides "Quest-ce que cest ?", les ID de contexte et les pages daide.
>
:
662
Chapitre
21
Distribution
de vos applications
La leon daujourdhui montre comment tester, dboguer et distribuer vos applications
Visual Basic. Une application nest jamais acheve ; vous pouvez toujours y ajouter
dautres caractristiques et, trs souvent, des erreurs apparaissent bien aprs que vous
pensez les avoir toutes extirpes. La maintenance sur le long terme fait donc partie intgrante du processus de programmation. Tout au long des leons prcdentes, ce didacticiel a propos des astuces pour vous aider mieux documenter votre code et rduire
les problmes de maintenance.
Une des meilleures manires de le faire est de dboguer et de tester minutieusement vos
applications avant de les distribuer. Cette leon dcrit quelques outils de dbogage fournis par Visual Basic, comme des procdures de test quil peut tre utile de faire subir
vos applications avant de les distribuer.
Nous voici la n de ce cycle de 21 jours. Une fois cette leon termine, considrezvous comme laurat de lUniversit Visual Basic 6 avec un diplme en Techniques de
programmation et, plus important, prenez rang comme conseiller Visual Basic. Vous
devrez alors pratiquer le dveloppement autant que vous le pouvez pour affter les
comptences acquises au cours de ces leons.
663
Partie III
comment utiliser le mode pas pas du dbogueur pour localiser des parties spciques du programme durant lexcution ;
Dbogage et tests
Toutes les applications ont besoin dtre testes. Trop de bogues peuvent sintroduire
durant les tapes de programmation. Lorsque vous testez une application, vous lui faites
passer une batterie de cas. Pendant les tests, entrez des valeurs extrmes et alatoires
dans tous les contrles de saisie utilisateur pour vous assurer que lapplication peut
grer des valeurs en dehors de la plage classique. Vous trouverez presque toujours des
bogues durant la phase de test.
Le dbogage se droule en trois tapes :
1. Dterminer les bogues problmes et leur emplacement.
2. Corriger les bogues.
3. Tester nouveau lapplication pour sassurer que les bogues sont limines.
Les bogues vont du lger, comme une erreur dorthographe ou dalignement de texte, au
grave, par exemple, une application qui termine la session Windows et cause une perte
des donnes. Pour lutilisateur, une bogue est tout ce qui ne correspond pas aux rsultats
attendus ou qui empche lapplication de sexcuter.
Les programmeurs ont faire face de nombreux problmes dans leur recherche des
bogues. Il vous appartient de dcider du moment o vous pensez avoir trouv toutes les
bogues quil vous tait possible de dtecter. Vous devez tester et tester encore pour
garantir que les bogues ont t limines et ne se produisent plus. Une planication
attentive avant, pendant et aprs le processus de codage aide rduire le temps pass
dboguer les applications.
>
:
664
ce
Astu
Il est prfrable de dvelopper et de tester vos applications dans lenvironnement de dveloppement de Visual Basic, qui contient des outils de dbogage
aidant pister et reprer les erreurs. Ce nest quune fois satisfait du
rsultat des tests que vous pouvez compiler et distribuer vos applications aux
utilisateurs.
Si, lors de lexcution dune application, vous voyez un message de ce type avant que la
premire feuille safche lcran, vous avez peut-tre fait une erreur de syntaxe dans
votre code. Le message derreur indique rarement Erreur de syntaxe, mais si elle sest
produite la suite dune erreur dorthographe ou de grammaire, cest bien le cas.
ition
Dfin
665
<
:
Partie III
Remarquez que Visual Basic ne sest pas content, la Figure 21.1, de signaler lerreur,
mais quil en a aussi indiqu lemplacement dans la fentre de code. Mme si cette
dernire est ferme lors de lexcution du programme, Visual Basic met lerreur en
surbrillance. Le problme ici est une instruction End incorrecte. Aprs avoir corrig
lerreur de syntaxe, vous pouvez cliquer sur Excuter dans la barre doutils pour reprendre
lexcution partir de lerreur corrige.
Si la case Vrication automatique de la syntaxe est coche dans longlet Editeur de la
bote de dialogue Options (slectionne par Outils, Options), Visual Basic vrie les
erreurs de syntaxe pendant que vous saisissez les instructions dans la fentre de code.
Certains programmeurs prfrent cependant avoir plus de libert au moment de la
conception pour pouvoir parpiller ici et l des instructions partielles quils compltent
plus tard. Mais ce code incomplet peut conduire des erreurs si vous ntes pas attentif :
vous pouvez oublier de corriger une instruction. Il y a pourtant des moments o il est
souhaitable de complter plus tard les trous, par exemple sil faut dabord vrier avec
lutilisateur une rponse une question de conception.
Si vous dsactivez la vrication automatique de la syntaxe, Visual Basic ne vrie plus
les erreurs de programmation, telle quune parenthse manquante, tant que vous
nexcutez pas le programme. De toutes faons, Visual Basic localise ce type derreur
par un message (voir Figure 21.1), mais loption Vrication automatique de la syntaxe
vous laisse le choix du moment o vous voulez tre prvenu.
Des erreurs plus complexes apparaissent lors de lexcution de lapplication. Une erreur
de syntaxe est facile dtecter, Visual Basic le faisant pour vous. Une erreur dexcution est plus difcile reprer et corriger. Voyez lerreur de la Figure 21.2, qui met en
cause la logique du programme. Il ny a pas de message derreur, mais dans le champ o
le nom doit safcher, on trouve une adresse. A lvidence, un champ dadresse a t
charg la place dun champ nom. Visual Basic ne sait pas que cest anormal, car il
se contente de suivre les ordres du programmeur, mme sil en rsulte des erreurs de
logique.
Une erreur de logique repre demande larrt du programme. Visual Basic ne sait pas
la reconnatre et interrompre lexcution comme il le fait avec les erreurs de syntaxe)
Vous devez ensuite localiser le problme.
Pour cela, vous devez rechercher dans le code de votre programme lendroit o cette
erreur de logique peut se situer, puis la corriger. Si le problme concerne lapparence
dune feuille ou dun contrle lcran, vous devez rechercher toutes les rfrences
cet objet. LExplorateur dobjets peut souvent vous aider trouver le code particulier
attach un objet.
>
:
666
Figure 21.2
Visual Basic ne peut
pas reprer des
erreurs de logique.
C'est une
erreur de
logique
Visual Basic peut dtecter certaines erreurs de logique si elles rsultent dune impossibilit. Par exemple, la Figure 21.3 montre ce qui se passe si un programme demande
Visual Basic de diviser un nombre par zro. Cette opration ntant pas mathmatiquement nie, Visual Basic est incapable de faire ce calcul, mme sil ny a pas derreur de
syntaxe. Il interrompt alors lexcution et afche une description de lerreur dans une
bote de message.
Figure 21.3
Certaines erreurs
de logique demandent
Visual Basic
deffectuer quelque
chose dimpossible.
Ds que Visual Basic ralise que le programme demande une tche impossible, il afche
la fentre de code et signale lendroit approximatif o la division par zro sest produite.
Vous pouvez cliquer sur Aide dans la bote de dialogue pour avoir une aide supplmentaire concernant le message. Cliquez sur Fin pour terminer lexcution ou sur Dbogage
pour entrer dans le mode dbogage de Visual Basic.
667
<
:
Partie III
ce
Astu
Le dbogueur
Lenvironnement de dveloppement de Visual Basic comprend un outil de dbogage qui
permet deffectuer les tches suivantes.
Ajouter une variable espion qui interrompt lexcution du programme quand elle
reoit une valeur ou une plage de valeurs particulire.
Sauter des instructions que vous ne voulez pas excuter durant un test.
Utiliser la fentre des sorties de lobjet Debug pour imprimer des valeurs durant
lexcution dun programme. La fentre de dbogage permet de capturer des sorties,
comme des valeurs de variables, sans dranger la fentre feuille normale.
Vous pouvez entrer dans le mode dbogage et avoir accs toutes les fonctions du
dbogueur (situes surtout dans le menu Dbogage) quand vous :
appuyez sur Ctrl-Break pour interrompre lexcution du programme ;
recevez une bote de message derreur lexcution ;
atteignez lexcution un point darrt positionn ;
cliquez sur une instruction du programme, puis partir du menu Dbogage, choisissez Excuter jusquau curseur pour excuter normalement le programme.
Visual Basic linterrompt et entre en mode dbogage ds que lexcution atteint le
curseur.
>
:
668
Le feu ne fonctionne peut-tre pas, car plus dune couleur est afche en mme temps.
Vous pouvez consulter les valeurs en cours des proprits Visible des trois signaux
possibles (imgGreen, imgYellow et imgRed) pour vous assurer quun seul est True lorsque
la procdure dmarre.
669
<
:
Partie III
Voir le contenu dun contrle (ou mme dune variable) na jamais t aussi simple.
Comme le montre la Figure 21.4, tout ce que vous avez faire est de positionner le
pointeur de la souris dessus.
Figure 21.4
Visual Basic afche
toutes les valeurs
de contrles et de
variables quand le
programme sarrte
avec le dbogueur.
En vriant les trois valeurs et ne trouvant quune seule True, vous dterminez que le
problme ne rside pas dans la procdure ChangeSignal(). Vous devrez rechercher plus
avant dans le code pour voir o les signaux ont t mlangs (cest une supposition pour
notre exemple). En arrtant lexcution diffrents endroits et en analysant les variables
et les contrles, vous pouvez dterminer si les valeurs sont ce quelles devraient tre.
>
:
670
Figure 21.5
Utilisez la bote
de dialogue Pile
des appels pour suivre
les procdures
du programme qui
sont excutes.
Info
ition
Dfin
Pour afcher une des procdures de la bote de dialogue Pile des appels, double-cliquez
sur lentre correspondante. Vous ne voyez pas alors uniquement des instructions, mais
aussi des valeurs actives, car lapplication est toujours en tat darrt. Vous pouvez donc
lire les valeurs de tous les contrles, les variables, et les constantes nommes dans les
diverses procdures.
671
<
:
Partie III
Description
Info
ce
Astu
Vous pouvez naturellement, tout point darrt, cliquer sur Continuer pour
que lexcution se poursuive de manire normale. Si des points darrts sont
positionns plus loin, lexcution sy arrte. Sinon, le programme se
comporte normalement, comme sil navait jamais t interrompu.
Vous pouvez arrter le mode Dbogage tout moment en cliquant sur Fin
dans la barre doutils de Visual Basic ou en slectionnant Fin dans le menu
Excution.
>
:
672
analyser la prochaine excution, vous pouvez ajouter un point darrt en cliquant sur
Basculer le point darrt dans la barre doutils Dbogage sur linstruction surligne.
Vous pouvez positionner plusieurs points darrt sur dautres lignes partout dans le code
en cliquant sur ce bouton. Quand vous atteignez un point darrt (signal par un
surlignement rouge) positionn dans une session prcdente, mais dont vous navez plus
besoin, cliquez nouveau sur Basculer le point darrt sur cette ligne pour le supprimer.
Vous pouvez aussi cliquer sur la gauche dune instruction pour ajouter ou supprimer un
point darrt.
ntion
Atte
Vous ne pouvez positionner les points darrts que sur les lignes excutables.
Il est impossible de positionner des points darrts sur les instructions de
dclaration de types de variables utilisateur ou de commentaires.
Fentre de dbogage
A tout point darrt, vous pouvez afcher la fentre de dbogage pour travailler en
dehors de lenvironnement du programme. La fentre de dbogage est souvent nomme
fentre Excution. Quand vous cliquez sur le bouton correspondant dans la barre
doutils Dbogage, elle souvre en bas de votre fentre de code (dans sa position
range), ou elle peut otter sur lcran.
ition
Dfin
Vous pouvez taper toute instruction Visual Basic dans la fentre Excution et voir le
rsultat immdiatement. Une des mthodes de dbogage les plus courantes est Print,
qui imprime les valeurs des variables et les proprits de contrles. Print envoie les
sorties vers diffrents objets (pas uniquement vers une imprimante ou une feuille), dont
la fentre Excution. La Figure 21.6 montre la valeur dun objet et illustre le fait que les
valeurs avec lesquelles vous travaillez sont des valeurs actives, congures par la partie
de lapplication excute jusquau point darrt. Vous pouvez aussi imprimer le rsultat
dune expression ou mme modier la valeur dune variable en cours dexcution. Dans ce
cas, le reste du programme utilise cette nouvelle valeur la place de la valeur assigne
lorigine par le code. Vous pouvez ainsi observer chaud le rsultat.
673
<
:
Partie III
Figure 21.6
Utilisation de la fentre Excution pour
imprimer des valeurs
et modier les rsultats.
Valeur de
contrle
ce
Astu
Modification de la
valeur du contrle
Fentre Excution
>
:
674
Figure 21.7
La fentre Variables
locales montre toutes
les variables, locales
et globales, de la
procdure en cours.
Info
Fentre Espions
Au cours du processus de dbogage, vous pouvez constater quune bogue ne se produit
que si une variable a une certaine valeur. Le problme peut parfois ne pas pouvoir tre
pist jusqu une instruction unique, vous devrez donc espionner une variable ou une
expression sur toute la procdure. Cest la raison dtre de la fentre Espions, dans
laquelle vous pouvez entrer des valeurs de variables ou dexpressions. Vous pouvez
congurer dans la fentre des valeurs espionner au moment de la conception ou de
675
<
:
Partie III
lexcution en cliquant sur Fentre Espions dans la barre doutils Dbogage. Utilisez
lune de ces deux mthodes pour ajouter des valeurs la fentre Espions :
Cliquez avec le bouton droit sur la fentre Espions (qui doit tre afche en cliquant
sur son bouton dans la barre doutils Dbogage), puis choisissez Ajouter un espion
pour afcher la bote de dialogue.
Figure 21.8
Ajouter des valeurs
espionner dans
la fentre Ajouter
un espion.
Quand vous ajoutez une expression espionner, le contexte indique Visual Basic la
porte de lespion (o il doit le surveiller). Visual Basic peut espionner une procdure,
une feuille, un module ou tout le projet.
La zone Type despion vous permet de prciser la manire dont vous voulez que Visual
Basic ragisse la valeur espionne. Il peut afcher les donnes de lexpression et
arrter lexcution si une valeur est atteinte ou chaque changement. Lors dexcutions
ultrieures, Visual Basic actualise la fentre Espions en fonction des valeurs espionnes.
ce
Astu
Visual Basic comprend une fentre Espion express, qui permet dajouter des
valeurs espionner la vole sur un point darrt. Slectionnez la variable,
lexpression ou la proprit de contrle, puis cliquez sur Espion express dans
la barre doutils Dbogage. Vous pouvez aussi ajouter lexpression la fentre
Espion classique en cliquant sur Ajouter.
De nombreux programmeurs trouvent plus facile dutiliser lEspion express
sur un point darrt que de tenter de collecter toutes les valeurs espionner
au moment de la conception avec la bote de dialogue Ajouter un espion.
>
:
676
La distribution dune application compile est bien plus sre que celle des
sources. Si vous distribuez le code source (le projet et les chiers apparents), toute personne disposant de Visual Basic peut modier votre travail.
De plus, la plupart des utilisateurs ne pourront mme pas lutiliser, car ils
ne disposeront pas de Visual Basic pour charger et excuter le programme.
Un chier compil est donc ncessaire pour permettre tous dutiliser
lapplication.
Une application compile sexcute beaucoup plus vite que dans lenvironnement de
dveloppement de Visual Basic. Vous voulez que votre application sexcute avec
rapidit et souplesse sans que lutilisateur ait faire plus que le ncessaire ; le chier
compil simplie lexcution de lapplication.
Avant de compiler lapplication, assurez-vous de lavoir dbogue autant quil est possible. Vous ne pouvez pas dboguer une application compile avec le dbogueur de Visual
Basic, car elle sexcute hors de lenvironnement de dveloppement.
Une fois que vous pensez que votre programme sexcute aussi bien que possible, choisissez Fichier, Crer. Visual Basic afche la bote de dialogue Crer le projet (voir
677
<
:
Partie III
Avant de cliquer sur OK pour lancer la compilation, cliquez sur Options pour afcher la
bote de dialogue Proprits du projet (voir Figure 21.10). Vous pouvez aussi y accder en
choisissant Proprits dans le menu Projet. Elle vous permet de spcier des informations
de version dans lapplication compile, toujours utiles, surtout si vous prvoyez de diffuser
plusieurs versions de votre application. Les numros de versions et les informations de
descriptions restent enregistrs dans le code source du projet, ce qui vous permet de grer
les diffrentes volutions.
Figure 21.10
Conguration
des options du projet
compil dans la bote
de dialogue
Proprits du projet.
>
:
678
Info
Si vous slectionnez des options dans la fentre qui safche quand vous
cliquez sur Optimisations avances, vous perdrez lavantage de certains
contrles lexcution, mais vous gagnerez en rapidit.
Quand vous cliquez sur OK, Visual Basic ferme la fentre des proprits et compile le
programme. Si aucune erreur de compilation ne se produit, Visual Basic cre le chier
.EXE (vous verrez ltat de la compilation dans le coin suprieur droit). Vous pouvez
quitter Visual Basic et excuter lapplication en slectionnant loption Excuter du menu
Dmarrage et en localisant le chier .EXE. Licne de feuille que vous avez slectionne
safche dans la Barre des tches quand vous excutez le programme.
679
<
:
Partie III
La dtermination de la meilleure organisation des disquettes dinstallation, la cration des divers disques dinstallation et le dcoupage des chiers importants sur
plusieurs disquettes. Lassistant indique lavance le nombre de disquettes
ncessaires linstallation.
La copie de lapplication compile sur un disque dur pour que vous puissiez linstaller
sur un rseau ou sur un graveur de CD-ROM.
La conguration de lapplication pour sa distribution sur lInternet vers les utilisateurs dInternet Explorer.
Lassistant gnre une liste des diffrents chiers ncessaires linstallation. Un chier
Setup.exe unique nest pas la seule chose fournir dans la routine dinstallation. Une
application Visual Basic exige souvent des chiers DLL et OCX, qui doivent rsider sur
le support dinstallation (disquette ou disque) choisi avec le chier de lapplication
compile et le programme Setup.exe.
Avant de pouvoir excuter lassistant Empaquetage et dploiement, vous devez charger
votre projet, dbogu et compil. Lassistant le compilera une dernire fois au cas o
vous auriez fait des modications de dernire minute depuis la dernire compilation.
Lassistant ne fait pas partie de lenvironnement de dveloppement Visual Basic. Vous
devez le slectionner dans le menu Complments, Gestionnaire de complments. Une
fois charg, vous pouvez le lancer. La Figure 21.12 montre la fentre douverture.
La premire option de lassistant (certainement celle que vous choisirez la plupart du
temps) cre une routine Setup.exe standard que lutilisateur peut installer. Lassistant
peut prparer linstallation sur un disque dur, des disquettes, un graveur de CD-ROM ou
dans des chiers CAB spciaux que vous pouvez transmettre sur lInternet pour une
distribution en ligne. La seconde option envoie la routine dinstallation vers un serveur
Internet pour une installation distance de lapplication. Lassistant cre un chier
script qui dcrit la routine dinstallation. Lors de sessions ultrieures, vous pouvez
modier un script dj cr ou le recrer partir du projet dorigine. La troisime option
vous permet de grer les scripts dinstallation.
La premire option gnre la forme la plus courante de routine dinstallation, valable
pour la plupart des applications. Aprs avoir cliqu sur le bouton, vous verrez la fentre de la Figure 21.13. A moins que votre application nexige des chiers de contrles
>
:
680
Figure 21.13
Dtermination du type
de produit crer.
ce
Astu
Pour installer un contrle ActiveX, slectionnez loption Fichier de dpendances an que lassistant puisse collecter les bons chiers dans lordre o
lapplication en a besoin.
681
<
:
Partie III
Cliquez sur Suivant pour afcher la bote de dialogue Dossier dempaquetage, qui
demande des informations de distribution. Lassistant doit savoir o assembler les
chiers dinstallation. Choisissez un rpertoire vide. Ainsi, vous saurez, quand lassistant
en a ni, que tous les chiers de ce dossier sont ceux quil a gnrs.
Lorsque vous cliquez sur Suivant, lassistant scrute votre projet pour dterminer les
chiers de programmes ncessaires votre application. Si votre application contient
des contrles de donnes, il ne peut pas savoir quels pilotes de base de donnes sont
requis. Vous verrez dans ce cas la bote de dialogue de la Figure 21.14. Copiez le
pilote requis dans la fentre de gauche.
Figure 21.14
Vous pourrez avoir
slectionner
les chiers daccs
aux donnes
manuellement
si votre application
lexige.
ntion
Atte
La bote de dialogue peut diffrer selon le type daccs aux donnes (ADO,
DAO, etc.) utilis par votre application.
Aprs que vous avez cliqu sur Suivant, lassistant collecte tous les chiers de lapplication spcis et afche la bote de dialogue illustre la Figure 21.15. Vriez que tous
les chiers ncessaires votre application y sont lists. Vous aurez ventuellement
ajouter (en cliquant sur Ajouter) dautres chiers, par exemple des chiers LisezMoi.txt
ou un chier de base de donnes, pour que la routine dinstallation les enregistre avec
lapplication dans le produit dinstallation.
>
:
682
Figure 21.15
Parcourez les chiers
pour vous assurer
que lassistant a bien
rassembl tous les
chiers ncessaires
au projet.
ntion
Atte
Soyez certains davoir les bons droits daccs tout contrle ActiveX que
vous distribuez avec votre application. Il se peut quune licence ne vous
autorise pas distribuer les contrles ActiveX que vous navez pas crs.
Consultez votre fournisseur de contrles ActiveX pour connatre les rgles
de distribution.
683
<
:
Partie III
Figure 21.16
Vous pouvez
dterminer la manire
dont lapplication
se prsentera dans
le menu Dmarrage
de lutilisateur.
Info
Cliquez sur Suivant pour slectionner tous les chiers que vous voulez dsigner comme
partags. Un chier peut tre partag non seulement par les utilisateurs (comme un
chier de base de donnes auquel lapplication a accs), mais aussi par dautres
programmes de lordinateur, comme ce peut tre le cas de contrles ActiveX contenus
dans votre projet. Dsignez les chiers partags en cochant la case correspondante.
Aprs avoir cliqu sur Suivant, vous verrez lcran de n de lassistant qui vous
demande le nom donner au script dinstallation. Crer un chier script vous vitera
davoir rpondre la longue liste des demandes de lassistant subie jusquici la
prochaine fois que vous crerez la routine dinstallation. De plus, vous pouvez modier
ce script sans avoir repasser par tous les crans dinstallation si quelque chose change
dans le processus dinstallation, par exemple la suppression dun chier partag.
Une fois que vous cliquez sur Terminer, lassistant cre le script dinstallation, la routine
dinstallation, puis la place dans un ou plusieurs chiers, suivant les options choisies.
Quand tout est termin, les chiers dinstallation sont sur votre machine, prts tre
distribus.
>
:
684
Lassistant Empaquetage et dploiement cre les chiers dinstallation lendroit spci lors du traitement. Vous y trouverez le chier Setup.exe, le chier Setup.lst (qui
contient la liste de tous les chiers lis linstallation) et, ventuellement, dautres
chiers dont lextension se termine par le caractre soulign (_). Ces chiers sont
compresss ; la routine dinstallation les dcompresse sur la machine de destination.
La mthode la plus simple pour tester la routine dinstallation gnre consiste choisir
Excuter partir du menu Dmarrage et de trouver le chier du programme Setup.exe.
Cliquez sur OK pour lancer linstallation. Une installation classique sexcutera.
Le programme analyse la machine de destination pour sassurer quil ny a pas de
programme en excution qui peut entrer en conit avec un chier installer. La
Figure 21.17 montre le dialogue davertissement afch si lutilisateur excute le
programme dinstallation pendant que dautres programmes utilisent certains des
chiers partags de la routine.
Figure 21.17
Lancement
du processus
dinstallation.
685
<
:
Partie III
Info
Dsinstaller lapplication
Lassistant Empaquetage et dploiement ne se contente pas de crer la routine dinstallation, il gnre aussi une routine de dsinstallation, connecte licne Ajout/Suppression de programmes du Panneau de conguration, qui permet lutilisateur de
dsinstaller lapplication tout moment. Pour supprimer lapplication du systme, il
suft de suivre ces tapes :
1. A partir du menu Dmarrage, slectionnez Paramtres, puis Panneau de conguration.
2. Double-cliquez sur licne Ajout/Suppression de programmes.
3. Slectionnez lapplication dans la liste des applications installes. Aprs avoir vri que lutilisateur souhaite supprimer lapplication, la routine prend la main et
supprime le programme et tous les chiers qui lui sont lis.
Les informations de dsinstallation sont enregistres dans le mme rpertoire que
lapplication. Le chier des instructions de suppression se nomme ST6UNST.LOG et il
contient tous les dtails ncessaires pour que lutilitaire systme Ajout/Suppression de
programmes puisse faire son ofce. Tous les chiers ne seront pas supprims, en particulier les chiers partags par dautres programmes. Avant de supprimer ces chiers
potentiellement ncessaires (comme les contrles ActiveX), lutilitaire de suppression
afche une bote de dialogue davertissement qui laisse lutilisateur le soin de dcider
sil faut ou non les supprimer.
En rsum
La leon daujourdhui a expliqu comment utiliser les puissants outils de dbogage de
Visual Basic. Apprendre comment dboguer une application devient rentable quand
vous avez pister des bogues. Si les outils de dbogage de Visual Basic ne peuvent pas
dtecter les erreurs de logique, le dbogueur simplie leur recherche. Vous pouvez
suivre la trace lexcution dun programme, positionner des points darrt et retrouver
le droulement de lexcution dun programme depuis le dbut.
Un des aspects les plus puissants du dbogueur est son interaction avec le programme
durant une session de points darrts. Quand votre programme atteint un point darrt,
toutes les valeurs initialises et calcules jusqu cet instant sont toujours actives. Vous
pouvez donc consulter les variables pour voir si leurs valeurs intermdiaires sont celles
>
:
686
que vous attendez. Vous pouvez aussi changer la valeur dune variable ou dun contrle
au milieu de lexcution du programme et en voir les consquences sur la suite.
Une fois votre application dbogue, vous tes prt la distribuer. La distribution des
applications met en uvre plus quune simple compilation. Vous devez prendre en
compte la routine dinstallation et vous assurer que les utilisateurs auront tous les
chiers lis lapplication.
Questions-rponses
Q Puis-je dtecter toutes les erreurs de mon application lors de la rdaction du
code si je coche la case Vrication automatique de la syntaxe ?
R Lorsque vous tapez votre programme, cette option coche permettra certainement de
dtecter de nombreuses erreurs. Mais elle ne repre que les erreurs de syntaxe. Vous
pouvez encore faire des erreurs dexcution, comme des divisions par zro. La fentre de code ne peut pas dtecter ces erreurs.
Q Quelles sont les erreurs les plus simples dtecter ?
R Les erreurs de syntaxe sont les plus faciles reprer. Non seulement elles sont faciles
reprer, mais en plus Visual Basic le fait votre place. Si vous avez activ loption
Vrication automatique de la syntaxe, Visual Basic dtectera toutes les erreurs la
rdaction ou, dans le cas contraire, la premire excution. Les erreurs de logique sont
les plus difciles reprer, car Visual Basic na aucune ide dune anomalie. Vousmme ne ralisez pas toujours quil y a un problme au premier abord. Par exemple, si
un total de balance gnrale se trompe dun franc ou deux chaque jour, lutilisateur peut
ne pas remarquer lerreur pendant un certain temps, ce qui risque entre-temps daffecter
dautres donnes. Cest pourquoi il faut tester compltement son application.
Q Comment puis-je tester mon application avant de la distribuer ?
R La rponse dpend de la complexit de lapplication. Si elle gnre des dtails
cruciaux utiliss dans une prise de dcision, comme un compte-rendu de paye ou de
comptabilit, une des meilleures manires de la tester consiste effectuer un test en
parallle. Cest--dire, excuter votre application en parallle au systme actuel, que
ce soit un systme manuel ou une application informatique ancienne que vous remplacez. Comparez vos rsultats au systme en cours et faites faire la mme chose vos
utilisateurs. Ce nest quaprs avoir excut plusieurs cycles du systme en parallle
(ce qui peut prendre un mois ou deux dans le cas dune comptabilit), que vous aurez
la conance ncessaire pour remplacer le systme en cours par votre application.
687
<
:
Partie III
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.
Quiz
1. Quest-ce quune erreur de syntaxe ?
2. Quelle est la diffrence entre une erreur de syntaxe et une erreur de logique ?
3. Vrai ou faux. Certaines erreurs lexcution peuvent entraner larrt de lexcution
du programme.
4. Vrai ou faux. Certaines erreurs de syntaxe peuvent entraner larrt de lexcution
du programme.
5. Comment pouvez-vous analyser les variables pendant lexcution dun programme ?
6. Comment le mode pas pas peut-il vous aider dboguer un programme ?
7. Vrai ou faux. Vous pouvez changer les valeurs des variables et des contrles pendant
lexcution de lapplication.
8. Quel est le plus rapide : un programme compil ou un programme excut dans
lenvironnement Visual Basic ?
9. Quels sont les outils fournis par Visual Basic permettant de crer une routine
dinstallation de votre application ?
10. Que se passe-t-il si votre routine dinstallation est plus volumineuse que le contenu
dune disquette, mais que vous devez la proposer sur ce support ?
Exercices
1. Quel type derreur contient linstruction suivante ?
If (a < b) Therefore
2. Vrai ou faux. La phrase suivante contient deux types derreurs (cette question
demande un peu de rexion) :
Cette phrase a deux erreurs.
>
:
688
Flicitations, vous avez termin votre formation de programmeur Visual Basic ! Vous
comprenez dsormais pratiquement tous les domaines du systme Visual Basic. Vous avez
les moyens de produire presque nimporte quel type dapplication.
Tout ce dont vous avez maintenant besoin est dacqurir de lexprience.
Avec ce didacticiel et les Projets bonus, vous avez appris quoi ressemblent les journes
dun programmeur Visual Basic. La programmation Visual Basic est trs gratiante. Naturellement, les emplois de programmeurs sont nombreux pourvoir dans ce monde de
haute technologie, mais la satisfaction tire de la programmation ne saurait se limiter
une simple amlioration des revenus. En programmant avec Visual Basic, vous avez non
seulement le pouvoir de crer tout type dapplications Windows dont vous pourriez avoir
besoin, mais en outre, cela vous amusera. Et, plus important, Visual Basic noublie jamais
ses racines ; il sera l pour vous aider dboguer, ajouter du style aux programmes que
vous crivez et crer des excutables compils que vous pouvez distribuer pour permettre
dautres de bncier du travail que vous avez effectu.
Dans cette partie, vous avez appris matriser les points suivants :
Crer vos propres modles de feuilles. Si Visual Basic fournit plusieurs modles
de feuilles, vous pouvez aussi crer les vtres et les ajouter la collection propose
(Chapitre 15).
689
Partie III
>
:
Contrles OLE. LOLE (incorporation et liaisons dobjets) est un concept qui date
presque des origines de Windows. Dautres outils, tels ActiveX, sont actuellement sous
les feux de la rampe, mais de nombreux programmeurs travaillent encore avec des
contrles OLE pour incorporer des objets leurs applications (Chapitre 16).
Objets prdnis. Visual Basic dnit de nombreux objets, tels que Screen, Printer et App. Lors de lexcution de votre application, vous pouvez utiliser ces objets
prdnis pour en apprendre plus sur lenvironnement de lapplication
(Chapitre 16).
Objets externes. Vous avez un aperu des exigences pour accder aux objets qui
sont en dehors de lenvironnement Visual Basic, comme les valeurs dune feuille de
calcul Excel, partir de votre application Visual Basic.
Crer vos propres contrles ActiveX. Vous ntes pas oblig de vous limiter aux
contrles ActiveX fournis avec Visual Basic ou crs par dautres. Vous pouvez
crire les vtres et les utiliser dans vos projets (Chapitre 17).
Programmer des jeux de donnes. Aprs avoir appris quelques concepts simples,
vous comprenez ce qui est ncessaire pour grer une application de base de donnes
complte sous une interface Visual Basic (Chapitre 18).
Accs Internet. Ajoutez un navigateur Web dans vos applications (Chapitre 19).
Ajouter de laide. Donnez vos utilisateurs les accs laide dont ils ont besoin en
installant une base de donnes daide complte dans votre application (Chapitre 20).
Options daide. Visual Basic propose plusieurs moyens dajouter de laide vos
applications (Chapitre 20).
690
Aide par info-bulles. A une petite chelle, les info-bulles peuvent tre utiles pour
lutilisateur qui utilise les barres doutils et les contrles de votre application
(Chapitre 20).
Distribution du code. Vous pouvez simplier ou compliquer la vie de vos utilisateurs. Utilisez les outils de Visual Basic pour lempaquetage de vos applications en
une application distribuable, installable et blinde (Chapitre 21).
691
<
:
Chapitre
22
Tableaux
multidimensionnels
Au Chapitre 10, nous avons dj expliqu comment dclarer et utiliser les tableaux, qui
contiennent des listes de valeurs. Si vous devez garder la trace de plusieurs lments, vous
pouvez les mettre dans des variables diffrentes ou les enregistrer dans un tableau sous un
nom unique. Lavantage du tableau est de permettre de parcourir les variables laide
dune instruction de boucle, telle que For.
Visual Basic supporte plusieurs types de tableaux. Vous pouvez dclarer un tableau de
nimporte quel type de donnes pour contenir une liste de variables. Vous pouvez aussi
dclarer un groupe de contrles qui fonctionne comme un tableau de variables, et offre
lavantage de disposer de plusieurs objets de feuille sous le mme nom et avec un ensemble de proprits identiques. Chaque contrle du groupe na cependant pas obligatoirement les mmes valeurs de proprits. Vous pouvez parcourir un groupe de contrles
aussi simplement quun tableau de variables lorsque vous voulez travailler sur les contrles.
Cette leon supplmentaire fait avancer dun cran le concept de variables. Les tableaux
tudis jusquici taient des tableaux une dimension, nayant quun indice. Dans cette
leon, vous allez apprendre comment tendre ce concept la gnration de tableaux,
dits tableaux multidimensionnels. Ils sont souvent appels tables, et permettent denregistrer les valeurs sous forme de lignes et de colonnes. Le nombre de dimensions peut
dpasser deux pour crer des zones de stockage de donnes utiles.
693
Partie III
Une fois que vous aurez appris les tableaux plusieurs dimensions, vous tudierez le
contrle grille. Il contient des fonctionnalits permettant de prsenter efcacement les
donnes en deux dimensions ; le tableau deux dimensions tant le plus souvent utilis, le
contrle grille est alors pratique.
Vous apprendrez aujourdhui :
les limites que pose Visual Basic sur les tableaux multidimensionnels ;
le contrle grille ;
la proprit FormString ;
>
:
694
Noubliez pas que les tableaux sont stocks dans la mmoire de votre
ordinateur sans aucune notion de la direction, illustre la Figure 22.1.
Lide de direction unique fonctionne cependant bien pour dmontrer la
nature linaire dun groupe dlments de tableaux. Si vous ajoutez une
dimension, vous ajoutez aussi une ide de direction supplmentaire, comme
vous le verrez dans un moment lorsque nous parlerons des tableaux deux
dimensions.
Figure 22.1
Un tableau
une dimension a
une longueur
et une direction.
intArray
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
15
25
35
45
55
65
75
85
95
45
peut
apparatre
verticalement
55
65
75
85
95
Le reste de cette leon explique comment utiliser les tableaux plus dune dimension,
dits tableaux multidimensionnels. Ils sont aussi nomms tables ou matrices et se composent
de lignes et de colonnes.
ition
Dfin
Un tableau multidimensionnel a plus dun indice et, par l mme, plus dune
dimension. Le nombre de dimensions dpend du nombre de directions. Un
tableau une dimension a une direction, un tableau trois dimensions a
trois directions, comme un objet dans lespace a une largeur, une longueur
et une hauteur.
Supposons quune quipe de handball souhaite suivre les buts marqus par ses joueurs.
Lquipe a jou huit matches, et il y a dix joueurs dans lquipe. Le Tableau 22.1 montre
lenregistrement des buts de lquipe.
Remarquez-vous que ce tableau a deux dimensions ? Il a des lignes (premire dimension)
et des colonnes (deuxime dimension). On parle donc dune table deux dimensions de
dix lignes et huit colonnes. (On dsigne, en gnral, les lignes en premier.) Une table
deux dimensions a donc deux directions horizontale et verticale. Comme les tableaux
une dimension, lenregistrement en mmoire des tableaux deux dimensions nest pas
littralement organis de cette manire, mais le langage Visual Basic permet de manipuler les donnes comme si elles taient enregistres en lignes et en colonnes.
695
<
:
Partie III
Tableau 22.1 : Le tableau des buts dune quipe de handball fonctionne bien
sous forme de table
Joueur
Adams
Berryhill
Edwards
Grady
Howard
Powers
Smith
Townsend
Ulmer
Williams
Info
ition
Dfin
Dans le Tableau 22.1, chaque ligne correspond au nom du joueur et chaque colonne
est associe une partie, mais ces en-ttes ne font pas partie du tableau. Les donnes ne
comprennent que quatre-vingts valeurs (dix lignes par huit colonnes). Dans ce cas, ce
sont des entiers. Si le tableau se compose de noms, cest un tableau de chanes de
caractres, etc.
>
:
696
La raison dune telle insistance sur la manire dont les gens voient les dimensions est que votre travail de programmeur est simpli si vous visualisez
mentalement les donnes multidimensionnelles dans lespace avec leurs lignes
et leurs colonnes (et ventuellement plus).
Bien que Visual Basic vous permette de travailler jusqu soixante dimensions, il est
difcile den visualiser plus de trois. Vous pouvez cependant penser chaque dimension
qui suit la troisime comme une nouvelle occurrence. En dautres termes, vous pouvez
enregistrer une liste des buts dun joueur sur la saison dans un tableau. Les scores de
lquipe (voir Tableau 22.1) sont en deux dimensions. La ligue, compose des enregistrements de plusieurs quipes, reprsente un tableau trois dimensions. Chaque quipe
(la profondeur du tableau) a des lignes et des colonnes de donnes sur les buts. Sil y a
plus dune ligne, elles peuvent reprsenter une autre dimension.
Info
697
<
:
Partie III
Comme cest le cas des tableaux une dimension, la rservation effective est plus
simple que ce quen laisse penser le format. Pour dclarer les donnes de lquipe du
Tableau 22.1, par exemple, vous pouvez utiliser linstruction Dim suivante :
Dim intTeams(1 To 10, 1 To 8) As Integer
intTeams(1, 1)
intTeams(1, 2)
intTeams(1, 3)
intTeams(1, 7)
intTeams(1, 8)
intTeams(2, 1)
intTeams(2, 2)
intTeams(2, 3)
intTeams(2, 7)
intTeams(2, 8)
intTeams(3, 1)
intTeams(3, 2)
intTeams(3, 3)
intTeams(3, 7)
intTeams(3, 8)
intTeams(9, 1)
intTeams(9, 2)
intTeams(9, 3)
intTeams(9, 7)
intTeams(9, 8)
intTeams(10, 1)
intTeams(10, 2)
intTeams(10, 3)
intTeams(10, 7)
intTeams(10, 8)
Si vous avez suivre une ligue de quinze quipes, vous ajouterez un autre indice :
Dim intTeams(1 To 15, 1 To 10, 1 To 8) As Integer
Pensez un tableau trois dimensions comme un chiquier trois dimensions, avec des chiquiers empils les uns sur les autres. Une reprsentation
quatre dimensions serait plusieurs ensembles dchiquiers. La quatrime
dimension serait le numro correspondant chaque ensemble 3D dchiquiers.
Comment connatre lordre des indices, et savoir si lindice de droite reprsente des
colonnes ? Vous ne pouvez pas le savoir, car les indices peuvent reprsenter ce que vous
voulez. Cependant, la norme pour un tableau deux dimensions est de considrer
lindice de gauche comme la ligne et lindice de droite comme la colonne. En passant de
deux dimensions trois, lindice ajout est presque toujours le premier pour garantir
que les deux derniers reprsentent les lignes et les colonnes dune table. En gardant les
indices prsentant la table comme les deux derniers, vous aidez leur cohrence.
Linstruction suivante rserve assez de mmoire pour les programmes dune chane de
tlvision sur une semaine :
Dim strShows(1 To 7, 1 To 48) As String
>
:
698
Cette instruction rserve sept jours (les lignes) de programmes de trente minutes (les
jours faisant vingt-quatre heures, la table contient quarante-huit colonnes).
Comme vous le savez, tous les lments dune table doivent avoir le mme type de
donnes. Ici, cest une variable String.
Vous pouvez initialiser certains lments avec les instructions suivantes :
strShows(3, 12) = "Quand lhpital tourne"
strShows(1, 5) = "Le jeu des devinettes"
strShows(7, 20) = "Publireportage sur le Th glac aux framboises"
ara1 occupe deux cents emplacements mmoire de variables simple prcision, ara2
occupe cent emplacements double prcision, et ara3 occupe trente-six mille emplacements mmoire. Comme vous pouvez le voir, le nombre dlments augmente vite.
Soyez attentif ne pas rserver trop demplacements de tableaux pour ne pas puiser la
quantit de mmoire disponible.
En lisant des donnes tabulaires dans des tableaux multidimensionnels et en travaillant
sur les donnes dun tableau la place des tables de bases de donnes, vous pouvez
acclrer les temps dexcution du programme. Tout ce qui se passe en mmoire est plus
rapide que la lecture et lcriture disque chaque accs aux valeurs. Cependant,
lespace mmoire est plus rduit que lespace disque. Si vous travaillez sur des chiers
importants, vous devez renoncer lefcacit de la mmoire pour la capacit du disque.
1:
2:
3:
4:
5:
For intRow = 1 To 2
For intCol = 1 To 3
MsgBox("Ligne : " & intRow & ", Colonne : " & intCol)
Next intCol
Next intRow
699
<
:
Partie III
Si vous excutez le code du Listing 22.1, vous verrez les sorties suivantes dans les
botes de message :
Ligne
Ligne
Ligne
Ligne
Ligne
Ligne
:
:
:
:
:
:
1,
1,
1,
2,
2,
2,
Colonne
Colonne
Colonne
Colonne
Colonne
Colonne
:
:
:
:
:
:
1
2
3
1
2
3
Vous pouvez modier le code et utiliser des mthodes Print pour imprimer directement
sur la feuille la place de botes de message. Print est sans nul doute une bonne
mthode utiliser pour pratiquer la manipulation des indices de tableaux multidimensionnels, car elle permet de placer simplement de grandes quantits de sorties sur une
feuille. Par exemple, le Listing 22.2 utilise la mthode Print pour imprimer directement
sur une feuille. La Figure 22.3 montre ce quoi pourrait ressembler la feuille.
Listing 22.2 : Les boucles imbriques fournissent des indices pour parcourir
tout le tableau
1:
2:
3:
4:
5:
6:
For intRow = 1 To 2
For intCol = 1 To 3
Form1.Print "Row: " & intRow & ", Col: " & intCol
Next intCol
Form1.Print
Next intRow
Figure 22.3
Vous pouvez exprimenter
limpression des valeurs
de tableaux avec Print
pour consulter toutes
les sorties sur une mme
feuille.
ntion
Atte
>
:
700
Si vous avez imprimer les indices, par ordre de ligne, dun tableau de deux lignes et
trois colonnes dimensionn par linstruction Dim suivante, vous verriez les numros
dindices illustrs par les boucles imbriques du Listing 22.2.
Dim intTable(1 To 2, 1 To 3)
Remarquez quil y a autant dinstructions ForNext que dindices dans linstruction Dim
(deux !). La boucle extrieure reprsente le premier indice (lignes) et la boucle intrieure, le second (colonnes). Les boucles imbriques sont sans nul doute la manire la
plus courante de parcourir les lments dun tableau ; leur matrise est donc cruciale
pour programmer efcacement avec des tableaux multidimensionnels.
utiliser InputBox pour remplir les lments, un par un, partir dune bote de
message ;
lire les valeurs, une par une, partir dun disque ou dun chier de base de donnes ;
En rchissant cette liste, vous constaterez quon initialise les tables et tous les
tableaux multidimensionnels comme on le fait avec toute autre variable. Cette mthode,
cependant, vous permet de penser aux donnes sous une forme tabulaire, ce qui aide
acclrer la programmation et la maintenance.
La plupart des donnes de tableaux multidimensionnels proviennent de donnes de
feuilles ou plus souvent de chiers disques. Quelle quen soit la provenance, les
boucles For imbriques sont dexcellentes instructions de commande du parcours des
indices. Lexemple suivant illustre un peu mieux comment elles peuvent fonctionner
avec des tableaux multidimensionnels.
Supposons quune entreprise informatique vende deux tailles de disquettes : 3 1/2 et
5 1/4 pouces. Chaque disquette existe en quatre capacits : simple face, basse densit ;
double face, basse densit ; simple face, haute densit ; double face, haute densit. Cet
inventaire des disquettes se prte bien un tableau deux dimensions. Les prix de dtail
des disquettes sont les suivants :
701
<
:
Partie III
Simple face
Basse densit
Double face
Basse densit
Simple face
Haute densit
Double face
Haute densit
3 1/2
2,30
2,75
3,20
3,50
5 1/4
1,75
2,10
2,60
2,95
La procdure du Listing 22.3 enregistre le prix de chaque disque dans une table et
imprime les valeurs sur la feuille en utilisant des boucles For imbriques. Vous pouvez
insrer cette procdure dans un module standard ou une procdure vnementielle pour
en dclencher lexcution.
Listing 22.3 : Les lments dinventaire apparaissent souvent dans une table
>
:
702
Cette procdure gnre la sortie illustre la Figure 22.4, une fois la fentre redimensionne pour afcher toute la table. Bien que rduit, le tableau multidimensionnel de 2
par 4 montre comment vos donnes peuvent parfois bien sadapter un enregistrement
en tableau. Le code de lexemple peut paratre assez long pour une table qui ne
comprend que huit valeurs. Noubliez cependant pas que vous ninitialisez que rarement
les tableaux comme le font les lignes 6 13. Pour ce petit exemple, et comme introduction aux tableaux, les assignations sont peut-tre la meilleure manire de commencer.
Figure 22.4
Le prix des disquettes
safche sous forme
tabulaire.
ntion
Atte
Dans le Chapitre 10, vous avez tudi la fonction Array(), qui assigne un
ensemble de valeurs tout un tableau en une seule instruction. Nutilisez
pas la fonction Array() dans les tableaux multidimensionnels, car elle ne
fonctionne quavec les tableaux une dimension.
Le contrle grille
Le tableau deux dimensions le plus courant, la table, se prsente au mieux sous forme de
lignes et de colonnes. Le contrle grille propose une manire pratique dafcher les tables.
Les utilisateurs peuvent naviguer dans les valeurs en utilisant des barres de dlement, qui
sont automatiquement afches si le contrle nest pas aussi grand que la table.
703
<
:
Partie III
Figure 22.5
Le contrle grille permet
dafcher des donnes
tabulaires.
Contrle grille
Info
>
:
704
Figure 22.6
Le contrle grille
ne ressemble tout
dabord pas vraiment
une table lorsque
vous le placez
sur une feuille.
Info
ition
Dfin
Les lignes et les colonnes xes sont souvent dsignes comme les en-ttes de lignes et
de colonnes.
Figure 22.7
Les lignes et
les colonnes xes
offrent une place
pour les labels.
Colonne
fixe
Cellules
Ligne
fixe
Six lignes
Sept colonnes
705
<
:
Partie III
Une fois le contrle de grille de donnes rempli, les utilisateurs peuvent faire dler les
donnes et slectionner une ou plusieurs cellules de la grille. Par programmation, vous
pouvez mettre jour ou copier les valeurs des cellules slectionnes depuis ou vers
dautres cellules, variables ou contrles.
Info
>
:
Proprit
Description
AllowBigSelection
AllowUserResizing
Cols
(Personnalis)
FillStyle
FixedCols
706
Description
FixedRows
Indique le nombre de lignes xes (qui ne dlent pas) utilises pour les
en-ttes.
FocusRect
Info
FormatString
GridLines
GridLinesFixed
HighLight
RowHeightMin
707
<
:
Partie III
Description
Rows
SelectionMode
WordWrap
Figure 22.8
La bote de dialogue
Pages de proprits
permet de paramtrer
facilement les
proprits courantes
du contrle grille.
>
:
708
Tableau 22.3 : Votre code Visual Basic doit paramtrer plusieurs proprits
lexcution
Proprit
Description
CellAlignment
Col
ColAlignment
ColWidth
Row
SelEndCol
SelEndRow
SelStartCol
Text
Info
709
<
:
Partie III
Le contenu des cellules est paramtr ou lu par la proprit Text, mais cela ne veut pas
dire que les donnes doivent tre des chanes de caractres. Vous pouvez assigner des
valeurs numriques la proprit Text ; Visual Basic les convertira en chanes avant de
faire lassignation. De mme, vous pouvez assigner une cellule une variable numrique.
Visual Basic convertira le texte dans la cellule en nombre avant de faire lassignation. Si
la valeur ne peut pas tre convertie en nombre par Visual Basic, une erreur se produira.
Configurer le projet
La Figure 22.9 montre lcran correspondant lapplication que vous allez crer. Le
contrle grille afche les commissions sur les ventes pour des produits et des personnels de
vente particuliers. Le nom des vendeurs safche en en-tte de colonne et les noms de
produits sur la gauche de la grille..
Figure 22.9
Le contrle grille
permet une gestion
facile des commissions
de vente.
>
:
710
Toutes les donnes sont stockes dans un tableau deux dimensions et transfres dans le
contrle grille. Cette application ne charge pas le tableau initial partir du disque et ne
lenregistre pas la sortie. Lorigine des valeurs du tableau est une srie dinstructions
dassignations. Dans une vritable application, vous chargerez et enregistrerez le tableau
sur disque, probablement dans une base de donnes. Si cette application comprenait toutes
les entres/sorties disque, le projet serait trop tendu pour se concentrer efcacement sur
les tables et le contrle grille
Les points suivants mettent en vidence lutilit de cette application :
Les barres de dlement peuvent tre utilises pour augmenter ou diminuer les revenus
des ventes de tout vendeur sur nimporte quel produit.
La cellule en cours est la seule qui change quand lutilisateur augmente ou diminue
le pourcentage de commission, moins quil ait slectionn une plage de cellules,
auquel cas le pourcentage sera modi sur toute la plage.
La plupart des valeurs par dfaut des proprits du contrle grille fonctionneront
dans ce projet. Comme dhabitude, Microsoft a choisi les valeurs de proprits les
plus courantes comme valeurs par dfaut. Vous aurez paramtrer des valeurs de
proprits lexcution (comme le dcrit la section prcdente), mais la conception, il sufra de modier le nom, le nombre de colonnes et de ranges du contrle.
Une fois que vous aurez cr et excut cette application, vous aurez une meilleure notion
de lutilisation du contrle grille. Vous pourrez aussi voir comment adapter cet exemple
simpli une utilisation dans dautres applications.
Crez un nouveau projet et ajoutez les contrles et les valeurs de proprits lists au
Tableau 22.4.
Info
Une fois ces contrles placs et leurs valeurs paramtres, vous tes prt saisir le code.
Noubliez pas que les donnes dorigine rsideront dans un tableau dont le nombre de
lignes et de colonnes correspond, par choix de conception, celui du contrle grille.
Vous savez donc dj, au vu du Tableau 22.4 que la table qui alimentera le contrle
grille aura huit colonnes et vingt lignes.
711
<
:
Partie III
Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente
>
:
Proprit
Valeur
Feuille : Name
frmSales
Feuille : Caption
Feuille : Height
7920
Feuille : Width
9180
Label #1 Name
lblSales
Label #1 Alignment
Center
Label #1 Caption
Label #1 FontSize
18
Label #1 FontStyle
Gras
Label #1 Height
495
Label #1 Left
1200
Label #1 Top
1200
Label #1 Width
6015
Label #2 Name
lblInMin
Label #2 Alignment
Center
Label #2 Caption
1 %
Label #2 FontSize
Label #2 Height
255
Label #2 Left
960
Label #2 Top
5640
Label #2 Width
375
Label #3 Name
lblInMax
Label #3 Alignment
Center
Label #3 Caption
15 %
712
Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente (suite)
Proprit
Valeur
Label #3 FontSize
Label #3 Height
255
Label #3 Left
2880
Label #3 Top
5640
Label #3 Width
375
Label #4 Name
lblDeMin
Label #4 Alignment
Center
Label #4 Caption
1 %
Label #4 FontSize
Label #4 Height
255
Label #4 Left
5160
Label #4 Top
5640
Label #4 Width
375
Label #5 Name
lblDeMax
Label #5 Alignment
Center
Label #5 Caption
15 %
Label #5 FontSize
Label #5 Height
255
Label #5 Left
7080
Label #5 Top
5640
Label #5 Width
375
grdSales
flexFocusNone
3015
713
<
:
Partie III
Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente (suite)
>
:
Proprit
Valeur
1320
20
1800
5895
hscIncrease
1080
15
5280
2055
hscDecrease
5280
15
5280
2055
cmdIncrease
&Augmenter de 15 %
495
1320
6000
1575
cmdDecrease
&Diminuer de 15 %
495
714
Tableau 22.4 : Placez ces contrles et ces valeurs de proprits pour crer
la feuille de commissions de vente (suite)
Proprit
Valeur
5520
6000
1575
cmdExit
&Quitter
495
3720
6720
1215
Comprendre le code
Le Listing 22.4 contient le code dinitialisation des valeurs gnrales du programme.
Cest une procdure de commande qui, au chargement de la feuille, excute, par des
instructions Call, dautres sous-routines. La majeure partie du code soccupe de
linitialisation des en-ttes de la grille avec les noms des vendeurs en colonne et les
produits en lignes.
ce
Astu
ition
Dfin
715
<
:
Partie III
Vous pouvez dterminer dun coup dil ce que fait Form_Load() en regardant les routines appeles aux lignes 7 11. Si le code appel ne se trouvait pas dans des procdures
spares, mais incorpores dans Form_Load(), il serait beaucoup plus difcile de retrouver plus tard le code que vous voulez modier.
Le Listing 22.5 contient le code des trois premires procdures appeles : InitScroll(),
CenterCells() et SizeCells(). Comme toutes les sous-routines gnrales, ces procdures
doivent apparatre avant Form_Load(), pour quelles rsident dans le module (Gnral)
de la fentre de code.
Listing 22.5 : Les trois premires procdures appeles par Form_Load()
sont utilises pour congurer la grille
>
:
8:
hscIncrease.Value = 15
9:
hscDecrease.Value = 15
10: End Sub
11:
12: Private Sub CenterCells()
13:
Configure la justification des cellules
14:
en alignement centr. Assurez-vous de centrer
15:
les en-ttes de ligne et de colonne.
16:
17:
Dim Column As Integer
18:
716
19:
Commence par centrer les cellules den-ttes
20:
For Column = 0 To 7
21:
grdSales.Col = Column
configure la colonne courante
22:
Centre les cellules fixes de cette colonne
23:
grdSales.ColAlignment(Column) = flexAlignCenterCenter
24:
Next Column
25: End Sub
26:
27: Private Sub SizeCells()
28:
Specifie la largeur de chaque cellule
29:
Dim Column As Integer
30:
For Column = 0 To 7
31:
grdSales.ColWidth(Column) = 1100 En twips
32:
Next Column
33: End Sub
La procdure InitScrolls() nest pas vraiment ncessaire, car vous avez congur les
positions maximales dans la fentre Proprits lorsque vous avez plac les barres de
dlement dans la feuille. Cependant, comme cette application change la valeur maximale des barres de dlement la demande de lutilisateur, vous pouvez facilement en
restaurer les valeurs initiales partir du code sans avoir rechercher chaque fois la
proprit Max.
La procdure CenterCells() centre toutes les valeurs des cellules de la grille. La proprit
ColAlignment exige un numro de colonne centrer en indice, fourni en ligne 23. Enn, la
procdure SizeCells() la ligne 27 congure toutes les largeurs de colonnes 1 100 twips
en parcourant la grille et en appliquant la proprit ColWidth chaque colonne (ligne 31).
Le Listing 22.6 montre lennuyeux code dinitialisation de la grille. En fait, la majeure
partie initialise les titres de la grille, puis remplit une table de valeurs avant de les copier
dans la grille. Le tableau deux dimensions est une zone de stockage intermdiaire qui
nest pas vraiment utile dans cette application particulire. Cependant, en tudiant le
code, vous pourrez voir quel point il est ais dafcher les informations dun tableau
multidimensionnel avec un contrle grille.
Listing 22.6 : Vous devez initialiser les en-ttes de la grille et les cellules
de donnes
1: Private Sub Titles()
2: Remplissage des titres de colonnes
3: Habituellement, ces donnes proviennent dune table de base de donnes
4: grdSales.Row = 0 Tous les noms des vendeurs sont la ligne 0
5: grdSales.Col = 1
6: grdSales.Text = "Smith"
7: grdSales.Col = 2
8: grdSales.Text = "Johnson"
717
<
:
Partie III
Listing 22.6 : Vous devez initialiser les en-ttes de la grille et les cellules
de donnes (suite)
>
:
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:
718
grdSales.Col = 3
grdSales.Text = "Lake"
grdSales.Col = 4
grdSales.Text = "West"
grdSales.Col = 5
grdSales.Text = "Gates"
grdSales.Col = 6
grdSales.Text = "Kirk"
grdSales.Col = 7
grdSales.Text = "Taylor"
Maintenant, remplir les produits
grdSales.Col = 0 Tous les noms de produits sont la colonne 0
grdSales.Row = 1
grdSales.Text = "Gadget #1"
grdSales.Row = 2
grdSales.Text = "Gadget #2"
grdSales.Row = 3
grdSales.Text = "Tube long"
grdSales.Row = 4
grdSales.Text = "Tube court"
grdSales.Row = 5
grdSales.Text = "Rgle mtallique"
grdSales.Row = 5
grdSales.Text = "Rgle en bois"
grdSales.Row = 6
grdSales.Text = "Rgle en plastique"
grdSales.Row = 7
grdSales.Text = "Rgle en caoutchouc"
grdSales.Row = 8
grdSales.Text = "Panier"
grdSales.Row = 9
grdSales.Text = "Boulon 3C"
grdSales.Row = 10
grdSales.Text = "Boulon 5A"
grdSales.Row = 11
grdSales.Text = "Ecrou 3C"
grdSales.Row = 12
grdSales.Text = "Ecrou 5A"
grdSales.Row = 13
grdSales.Text = "Clou #12"
grdSales.Row = 14
grdSales.Text = "Clou #15"
grdSales.Row = 15
grdSales.Text = "Clou #16"
grdSales.Row = 16
grdSales.Text = "illet #4"
grdSales.Row = 17
grdSales.Text = "illet #6"
57:
grdSales.Row = 18
58:
grdSales.Text = "illet #8"
59:
grdSales.Row = 19
60:
grdSales.Text = "Joint"
61: End Sub
62:
63: Private Sub FillCells()
64:
Remplit les 160 cellules avec des valeurs
65:
calcules partir des valeurs de ligne et de colonne
66:
Mme si ces donnes nont aucun sens, elles permettent
67:
dinsrer rapidement des donnes dans le tableau et la grille.
68:
69:
Ces donnes proviennent normalement dune base de donnes.
70:
71:
Dclarer un tableau de 20 lignes et 7 colonnes qui
72:
correspond la grille sur la feuille. Les indices
73:
sont en base zro, car la grille les utilise aussi.
74:
Dim curData(19, 7) As Currency
75:
Dim Row As Integer
76:
Dim Column As Integer
77:
78:
Remplir la table de donnes
79:
For Row = 1 To 19
80:
For Column = 1 To 7
81:
curData(Row, Column) = ((Row + Column) / Row)
82:
Next Column
83:
Next Row
84:
Copier le contenu de la table dans la grille
85:
For Row = 1 To 19
86:
For Column = 1 To 7
87:
grdSales.Row = Row
88:
grdSales.Col = Column
89:
grdSales.Text = Format(curData(Row, Column), "###.00")
90:
Next Column
91:
Next Row
92: End Sub
La longue liste dassignations des lignes 4 60 ne sert qu placer les noms des vendeurs
et des produits dans les en-ttes de colonnes et de lignes de la grille. Lorsque vous
travaillez sur une grille, il ny a pas grand-chose dautre faire pour linitialisation des
en-ttes. Ces informations proviennent souvent dune base de donnes et vous chargerez
alors les en-ttes partir dune table de la base. Dans le cas de cette application simple,
les assignations sont ncessaires.
Les lignes 79 83 remplissent la table, dont le nombre de lignes et de colonnes correspond celui de la grille. Les donnes sont en fait un calcul ralis partir des numros
de lignes et de colonnes, qui ne sert qu placer des valeurs diffrentes dans les lments
du tableau. Ce dernier agit comme une zone de stockage temporaire pour les valeurs de
la grille et nest pas indispensable cette application. Il permet cependant dtudier
719
<
:
Partie III
Le reste du code soccupe de contrler les ractions de lapplication aux clics de lutilisateur sur les boutons de commande et les barres de dlement qui apparaissent sous la
grille. Ils contrlent les diverses augmentations et diminutions du prix des commissions.
Par exemple, si la commission dun produit dun vendeur particulier doit crotre ou
dcrotre, lutilisateur peut slectionner cette cellule et cliquer sur la barre de dlement
pour ne modier que celle-ci. De plus, les boutons de commande Augmenter de 15 % et
Diminuer de 15 % permettent de mettre en place une modication xe de 15 % de la
commission slectionne. Le Listing 22.7 montre le code qui permet ces modications.
Listing 22.7 : Les commissions sont affectes en fonction du contrle choisi
par lutilisateur
>
:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
720
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
SelStartCol = grdSales.ColSel
RowBeg = grdSales.Row
ColBeg = grdSales.Col
Parcourir toutes les cellules slectionnes
For SelRows = RowBeg To SelStartRow
For SelCols = ColBeg To SelStartCol
grdSales.Row = SelRows
grdSales.Col = SelCols
Augmenter la cellule du montant de la barre de dfilement
grdSales.Text = grdSales.Text + (hscIncrease.Value /
100 * grdSales.Text)
grdSales.Text = Format(grdSales.Text, "####.00")
Next SelCols
Next SelRows
Restaurer la slection en surbrillance
grdSales.Row = RowBeg
grdSales.Col = ColBeg
grdSales.RowSel = SelStartRow
grdSales.ColSel = SelStartCol
End If
End Sub
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45: Private Sub cmdDecrease_Click()
46:
Diminue les valeurs des cellules slectionnes
47:
en diminuant le pourcentage de la barre de dfilement
48:
Dim SelRows As Integer
49:
Dim SelCols As Integer
50:
Dim SelStartRow As Integer
51:
Dim SelStartCol As Integer
52:
Dim RowBeg As Integer
53:
Dim ColBeg As Integer
54:
55:
If (grdSales.HighLight) Then Si slectionn...
56:
Enregistrer les valeurs de cellules slectionnes
57:
SelStartRow = grdSales.RowSel
58:
SelStartCol = grdSales.ColSel
59:
RowBeg = grdSales.Row
60:
ColBeg = grdSales.Col
61:
Parcourir toutes les cellules slectionnes
62:
For SelRows = RowBeg To SelStartRow
63:
For SelCols = ColBeg To SelStartCol
64:
grdSales.Row = SelRows
65:
grdSales.Col = SelCols
66:
Diminuer la cellule du montant de la barre de dfilement
67:
grdSales.Text = grdSales.Text - (hscDecrease.Value /
100 * grdSales.Text)
68:
grdSales.Text = Format(grdSales.Text, "####.00")
69:
Next SelCols
70:
Next SelRows
71:
Restaurer la slection en surbrillance
72:
grdSales.Row = RowBeg
73:
grdSales.Col = ColBeg
721
<
:
Partie III
74:
grdSales.RowSel = SelStartRow
75:
grdSales.ColSel = SelStartCol
76:
End If
77: End Sub
78:
79: Private Sub cmdExit_Click()
80:
Terminer lapplication
81:
End
82: End Sub
Etant donnes les similitudes de ces deux grosses procdures, lanalyse se limitera
cmdIncrease_Click(). La ligne 21 sassure que lutilisateur a slectionn au moins une
cellule avant deffectuer laugmentation de la valeur des cellules. Dans le cas contraire,
rien ne se produit. Les lignes 23 26 enregistrent la zone rectangulaire de la slection.
Cette plage est dnie par le numro de ligne et de colonne de la cellule en cours (la
cellule en haut gauche de la slection), et du numro de ligne et de colonne de la n de
la slection.
Les lignes 28 et 29 utilisent une boucle For imbrique pour parcourir toutes les cellules
de la slection. Chaque cellule est augmente de la valeur de la barre de dlement, qui
dnit le pourcentage de modication des boutons de commande. Les lignes 38 41
restaurent la slection, car si vous changez les valeurs Row et Col de la grille, toute slection est efface ; les valeurs Row et Col dterminent la cellule active en remplaant la
zone slectionne. Les lignes 40 et 41 utilisent RowSel et ColSel pour remettre la slection
sa place dorigine.
>
:
722
Excuter lapplication
Maintenant que vous avez cr lapplication et ajout le code, vous pouvez excuter le
programme. Au premier abord, le sens des barres de dlement peut ne pas vous apparatre, ni la manire dont elles sont lies aux boutons de commande mais, aprs avoir
effectu les tches suivantes, vous apprendrez vite le fonctionnement du programme :
1. Cliquez sur la barre de dlement de gauche pour en diminuer la position (dplacement gauche). Remarquez que la proprit Caption du bouton de commande situ
sous la barre change.
2. Cliquez sur une cellule pour la slectionner dans la grille.
3. Cliquez sur le bouton de commande de droite pour voir la valeur de cette cellule
diminuer de 15 %.
4. Slectionnez une plage de cellules (voir Figure 22.10)
5. Cliquez sur le bouton de commande de gauche pour modier les cellules slectionnes de la valeur afche sur le bouton de commande. La slection reste afche
pour le cas o vous voudriez continuer augmenter les commissions de la plage de
cellules.
6. Slectionnez une autre plage et diminuez-en les valeurs.
7. Cliquez sur Quitter pour terminer le programme..
Figure 22.10
Quel que soit
le nombre de cellules
slectionnes, vous
pouvez augmenter ou
diminuer les valeurs
de la slection
en cliquant sur
un bouton.
723
<
:
Partie III
La proprit FormatString
Au lieu dutiliser la fonction interne Format() pour formater les donnes lorsque vous
les placez sur une grille, vous pouvez paramtrer le format dune cellule ou dune plage
de manire que toutes les donnes places ultrieurement soient formates de manire
conforme. La proprit FormatString du contrle grille demande une donne chane
dnissant lapparence du contenu de la cellule. Si FormatString est assez obscure au
dbut, une fois matrise, elle permet de formater les donnes de grille plus vite.
Info
Vous pouvez entrer une valeur FormatString dans la bote de dialogue Pages
de proprits qui safche quand vous cliquez sur la proprit (Personnalis) du contrle grille. Cliquez sur longlet Style et entrez la valeur dans la
zone de texte Format. Vous pouvez aussi assigner la proprit FormatString
directement, comme le montre cette section.
Le caractre < justie gauche le texte du segment, ^ le centre, et > le cadre droite.
Le texte qui suit un point-virgule (;) dnit les en-ttes de colonne 0, afchs
gauche de la ligne.
Le texte de len-tte de ligne le plus long dtermine la largeur des titres de la colonne 0.
Si la proprit FormatString dnit les lignes et les colonnes, comme les en-ttes et leur
largeur, vous devez toujours dimensionner le contrle grille dans la fentre feuille pour
que lutilisateur voie toutes les lignes et les colonnes. FormatString ne peut en aucun
cas redimensionner la grille.
Lexemple suivant gnre la grille illustre la Figure 22.11 :
Dim strCol As String
Dim strRow As String
Dfinit les en-ttes de colonne de la grille
>
:
724
Figure 22.11
Utilisez la proprit
FormatString pour
formater les en-ttes
de ligne et de colonne.
La grille est identique celle qui a t cre dans lapplication prcdente, la diffrence que les largeurs des colonnes de la grille de la Figure 22.11 sont les largeurs de
leur en-tte respectif.
ce
Astu
725
<
:
Partie III
ce
Astu
Supposons que vous voulez placer une image dans la cellule en haut gauche du
contrle grille. Cette cellule ne contient, en gnral, pas de texte den-tte. Le code
suivant permet de le faire :
Remarquez quil faut utiliser une instruction Set pour assigner limage la cellule.
Une instruction dassignation normale ne suft pas, car seul le chemin daccs
limage serait assign dans ce cas la cellule. La Figure 22.12 montre quoi cela peut
ressembler.
>
:
726
Figure 22.12
Les images peuvent
enjoliver un contrle
grille.
L'image ajoute
En rsum
Cette leon supplmentaire vous a expliqu comment congurer des tableaux multidimensionnels pour vous permettre de grer plus facilement les donnes. Le tableau
multidimensionnel le plus courant, la table deux dimensions, apparat dans de
nombreux types de situations o vous devez suivre des lignes et des colonnes de
donnes, lorsque vous avez, par exemple, grer un systme dinventaire des prix.
Visual Basic permet de suivre jusqu soixante dimensions de donnes, mais vous aurez
rarement grer plus de trois ou quatre dimensions.
Une manire simple de reprsenter les donnes de tableaux est le contrle grille. Il en
existe plusieurs types que vous trouverez dans la bote de dialogue Composants qui safche quand vous slectionnez loption de menu Projet, Composant. Le contrle FlexGrid
en est un exemple des plus classiques. Cette leon vous a expliqu comment le congurer
et le grer.
727
<
:
Partie III
Questions-rponses
Q Comment puis-je savoir ce que reprsentent les indices quand je dclare un
tableau quatre ou cinq dimensions ?
R Chaque indice peut reprsenter ce que vous souhaitez lui faire reprsenter. Par exemple, dans un tableau deux dimensions, le premier indice na pas indiquer des
lignes, ni le second des colonnes ; vous pouvez aussi bien les inverser. Ce nest que
lapproche la plus courante de dire que lindice de droite reprsente les colonnes,
lindice sa gauche des lignes, et lindice leur gauche des couches de tables
(comme dans un cube). Mais il est conseill de suivre ce standard. Si une autre
personne doit un jour faire de la maintenance sur votre code, vous lui simpliez le
travail en suivant les conventions dutilisation des valeurs de tableaux.
Mme si les gens ne visualisent pas clairement plus de trois dimensions, un
quatrime indice peut permettre de garder une trace du nombre de tableaux trois
dimensions rservs par les trois indices de droite. Un cinquime indice pourrait
alors reprsenter le nombre de groupes de tableaux trois dimensions, etc. Si vous
augmentez le nombre de dimensions au-del de trois, votre programmation nen
devient pas pour autant beaucoup plus difcile, mais se reprsenter chaque indice
peut ltre.
Q Aurai-je souvent utiliser un tableau de plus de trois ou quatre dimensions ?
R Rarement et peut-tre mme jamais.
Q Si je nutilise probablement jamais des tableaux multidimensionnels de plus de
trois ou quatre dimensions, pourquoi les tudier ?
R En fait, quand vous comprendrez les tableaux plusieurs dimensions (et que vous
dcouvrirez que lajout dune nouvelle dimension, en termes de stockage machine, ne
fait que vous donner des occurrences supplmentaires du tableau que les dimensions
prcdentes dclarent), vous naurez pas ajout tant de complexit que cela. Le fait
que vous nutilisiez que peu des tableaux de plus de quatre dimensions ne signie
pas quil ne faut pas apprendre combien il est simple dajouter une dimension.
Cependant, noubliez pas que chaque dimension multiplie dautant la quantit de
mmoire que vous utilisez. Ne dclarez pas un tableau trop important sans prendre
en compte la mmoire disponible sur la machine de destination. Certaines applications
de modlisation scientique et mathmatique exigent plusieurs dimensions. Si vous
programmez dans des domaines techniques, vous risquez davoir utiliser cinq
dimensions, ce qui sera moins probable si vous ncrivez que des applications de
gestion.
>
:
728
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.
Quiz
1. Vrai ou faux. Tous les lments dune ligne dun tableau multidimensionnel doivent
tre du mme type, mais les diffrentes lignes peuvent tre de type diffrent.
2. Etant donn la dclaration suivante dun tableau multidimensionnel, quel indice le
premier, le second ou le troisime spcie habituellement les lignes ?
Dim sngArray(8, 9, 10)
3. Etant donn le tableau dentiers suivant (nomm intAra), quelles valeurs reprsentent les lments suivants, en considrant quune instruction Option Base 1 est
prsente dans le programme ?
a. intAra(1, 1)
b. intAra(3, 2)
c. intAra(2, 3)
4
10
25
14
1
2
43
7
3
12
2
28
5
1
91
71
9
6
8
14
729
<
:
Partie III
7. A quoi servent les lignes et les colonnes xes dun contrle grille ?
8. Comment pouvez-vous assigner les cellules dune table aux cellules dun contrle
grille ?
9. Vrai ou faux. Pour assigner une image une cellule, vous pouvez utiliser la proprit
CellPicture la conception, comme vous le faites pour dautres contrles.
10. Quest-ce qui est le plus efcace ? Utiliser FormatString ou des instructions dassignation pour congurer les en-ttes de la grille.
Exercices
1. Calculez le nombre dlments que rservent les instructions suivantes :
Option Base 1
Dim intAra(4, 7) As Integer
2. Si vous omettez linstruction Option Base dans le module de dclaration de la procdure, calculez le nombre dlments rservs par linstruction suivante :
Dim intAra(4, 7) As Integer
3. Modiez lapplication de grille des vendeurs de cette leon pour que les valeurs de
la grille soient rcrites dans la table avant que le programme se termine. Mme si on
ne fait rien de cette table, cet exercice est une bonne manire de montrer la relation
univoque entre la table et la grille. Il fournit aussi un endroit o vous pourriez crire
ces valeurs dans une base de donnes si vous aviez besoin de sauvegarder les modications de commissions faites par lutilisateur.
>
:
730
Chapitre
23
LAPI Windows
Cette leon supplmentaire dcrit comment accder aux routines internes de Windows.
Si Visual Basic est capable de faire peu prs tout ce que vous voulez, certaines applications exigent des caractristiques qui ne peuvent tre obtenues quau prix dune programmation lourde. Cependant, vous pouvez utiliser dans votre application Visual Basic des
routines dj disponibles ailleurs dans Windows comme celles que vous pouvez crire
en C ou C++ et enregistrer dans des DLL.
En exploitant ces routines de Windows, vous pouvez tendre la puissance de Visual
Basic et lui faire effectuer certaines fonctions que seul Windows a rellement autorit
excuter. Cette leon dcrit de nombreuses routines utiles et la manire dy accder. Si
votre application doit grer un curseur de Windows, par exemple, il existe dj des
routines internes pour cela ; il peut donc tre plus simple dy faire appel depuis votre
application Visual Basic.
Vous apprendrez aujourdhui :
comment connecter Visual Basic aux routines de lAPI Windows avec linstruction
Declare ;
731
Partie III
comment interprter et utiliser les nouveaux types darguments quexigent les routines de lAPI Windows ;
comment crer des fonctions dappel des routines API les plus courantes pour que
votre application Visual Basic y accde plus facilement.
LAPI Windows
LAPI Windows est un ensemble de routines la disposition du programmeur Visual
Basic. Dune certaine manire, ces routines de lAPI fonctionnent comme les fonctions
internes de Visual Basic. Quand vous avez besoin dutiliser le code dune routine de
lAPI, votre programme Visual Basic lappelle. Quand lAPI Windows se termine, le
contrle revient votre programme pour lui permettre de continuer.
Pratiquement, tout ce que vous pouvez faire dans Windows est ralisable dans un
programme Visual Basic en appelant la routine de lAPI Windows adapte. Vous pouvez
mme dclencher une rinitialisation de la machine.
ition
Dfin
Toutes les routines de lAPI Windows sont enregistres dans des chiers particuliers
nomms DLL. Plusieurs milliers de routines de lAPI sont disponibles. Elles se situent dans
des chiers enregistrs dans les dossiers Windows et Windows\System. Les chiers DLL
sont installs avec Windows ; vous avez donc automatiquement accs ces bibliothques.
ition
Dfin
La plupart des DLL ont une extension de nom de chier .DLL ou .EXE. Tout
programme que vous crivez a accs aux DLL de Windows. Elles faisaient dj partie
des versions antrieures de Windows (avant Windows 95), mais leur nom ne comportait
pas "32", ce qui signale quelles sont compatibles 32 bits. Les versions antrieures
Windows 95 taient compatibles 16 bits, ce qui signie que les donnes transitaient
dans le systme 16 bits (soit deux octets) la fois. La programmation sous un environnement 32 bits procure une souplesse, une vitesse et une efcacit suprieures.
>
:
732
GDI32.DLL. Elle contient des fonctions qui contrlent les sorties lcran et sur
dautres priphriques.
ce
Astu
Ces trois chiers contiennent la majorit des routines, ou fonctions, de lAPI que vous
pouvez appeler depuis vos applications Visual Basic. Si vous parcourez les dossiers
Windows et Windows\System, vous verrez dautres DLL, par exemple COMDLG.DLL,
MAPI32.DLL, NETAPI32.DLL et WINMM.DLL. Chaque fois que Microsoft ajoute
des fonctionnalits au systme dexploitation, de nouvelles DLL apparaissent.
Les DLL ne sont pas uniquement des parties de Windows. Lorsque vous ajoutez de
nouvelles applications au systme, elles fournissent souvent leurs propres DLL. Au fur
et mesure des installations, de nombreux chiers DLL apparaissent dans la machine.
ntion
Atte
Les DLL vous donnent un pouvoir sur votre systme bien plus important que
celui que propose normalement Visual Basic. Quand vous utilisez une
fonction de lAPI Windows, vous travaillez au cur du systme dexploitation. Comme toujours, un pouvoir entrane une responsabilit. Lenvironnement et le dbogueur Visual Basic reconnaissent les fonctions internes
normales de Visual Basic, mais les fonctions de lAPI sont bien au-del de
leur porte. Vous risquez donc un crash du systme et la perte de tout votre
travail, simplement en excutant une application Visual Basic qui spcie un
argument incorrect dans un appel de fonction de lAPI Windows.
733
<
:
Partie III
ce
Astu
Enregistrez souvent votre projet si vous faites des appels aux fonctions de
lAPI. Ainsi, si vous appelez par erreur une fonction de lAPI qui entrane
un crash du systme, vous ne perdrez pas tout ce que vous avez fait.
La Figure 23.1 montre comment une routine API apparat dans votre programme Visual
Basic. Les routines API proviennent du systme dexploitation et sont distinctes de
Visual Basic.
Figure 23.1
Les routines API
demeurent
dans le systme
dexploitation.
Votre application VB
Vos procdures Feuilles
Vos fonctions propres
Vos sous-routines propres
Visual
Basic
Fonctions
internes
de VB
Windows
Fonction API
Fonction API
Fonction API
>
:
734
peut librer leurs ressources pour donner plus de mmoire et de temps processeur aux
nouvelles routines qui peuvent dmarrer.
Le grand avantage de ces liens dynamiques nest cependant pas une utilisation efcace
des ressources. Si Windows est modi, de nouvelles DLL remplacent les anciennes.
Vos applications sont donc mme de supporter les nouvelles caractristiques sans quil
soit besoin de recompiler chaque application qui utilise lAPI Windows. Par exemple, si
vous vous en souvenez, Windows 95 a modi la prsentation des fentres. Les icnes
dans le coin suprieur droit de la fentre sont diffrentes de ce quelles taient dans
Windows 3.11. Un programme Visual Basic qui appelle lAPI Windows pour afcher
une fentre fonctionne dans chaque environnement Windows. Sous Windows 3.11, il
afche les anciennes icnes et sous Windows 95, les nouvelles, alors que le programme
nest pas modi. Donc, dans la plupart des cas, un programme qui accde lAPI
Windows ne demande pas de modications lorsque vous changez de version
de Windows.
Info
ce
Astu
Windows nest pas compos dun seul gros programme. Cest en fait une
collection de nombreux programmes, dont certains rsident dans des chiers
DLL. Windows est sans nul doute le plus gros utilisateur des DLL.
Lutilisation des routines en DLL prsente lavantage de permettre
plusieurs programmes qui sexcutent sous Windows daccder aux mmes
routines des chiers DLL. De plus, tous les utilisateurs disposent des routines
de DLL standard : Windows tant ncessaire pour pouvoir excuter une
application Visual Basic, les DLL ncessaires seront donc disponibles.
Linstruction Declare
Lappel des routines de lAPI Windows ncessite une instruction spciale : Declare.
Les fonctions internes de Visual Basic nont pas besoin dinstruction Declare, car il sait
comment fonctionnent ses propres fonctions et il connat les arguments ncessaires
chacune. Mais, les routines API tant en dehors de la porte de Visual Basic, vous devez
utiliser Declare pour linformer sur la fonction de lAPI que vous appelez.
Linstruction Declare effectue les tches suivantes :
735
<
:
Partie III
Lemplacement de linstruction Declare a une incidence sur la manire dont votre application Visual Basic gre la fonction ; elle dtermine de quelles parties de lapplication
on peut appeler la fonction dcrite :
Si vous dclarez la routine de lAPI Windows dans la section de dclarations gnrales dun module ou dune feuille, elle sera la disposition de toute lapplication.
On dit quelle a une porte publique sur tous les modules de lapplication. Utilisez
le mot cl Public pour lindiquer.
Comme pour toute procdure, une routine de lAPI Windows peut tre une fonction ou
une sous-routine, selon quelle renvoie une valeur ou pas. Le format suivant dcrit la
version procdure de linstruction Declare :
Declare Sub procName Lib "libName" [Alias "alias"] [([[ByVal]
var1 [As dataType][,[ByVal] var2 [As dataType]] ... [,[ByVal]
varN [As dataType])]
Voici quelques exemples qui illustrent linstruction Declare (vous trouverez ces instructions dans le module gnral Module1 du projet exemple CallDlls.VBP fourni avec
Visual Basic) :
Declare Function GetWindowsDirectory Lib "kernel32" Alias
>
:
736
Vous remarquerez que certaines dclarations de DLL sont assez longues. Les fonctions
internes demandent diffrents nombres darguments, cest aussi le cas des dclarations
et des appels de DLL.
ntion
Atte
Le mot cl Alias est utilis dans une instruction Declare pour convertir certaines chanes comportant des caractres illgaux ou des noms de routines API non autoriss, en un
quivalent accept par Visual Basic, par exemple _lopen (nom dAPI correct, mais qui
est invalide en tant que nom de procdure Visual Basic).
Vous rencontrerez des types de donnes tranges que vous pouvez ne pas reconnatre.
Le Tableau 23.1 en dcrit certains et liste les donnes qui diffrent des types de Visual
Basic.
Le Tableau 23.1 ne contient que quelques types de donnes que vous trouverez dans les
instructions Declare de lAPI Windows. Etant donn ces routines API particulires et leurs
nombreux arguments, comment est-il possible de savoir laquelle utiliser ? La section
suivante vous explique comment utiliser un outil fourni avec Visual Basic pour grer les
routines API.
737
<
:
Partie III
Tableau 23.1 : Types de donnes particuliers utiliss par les routines API
Type de donnes
Description
ANY
ATOM
BOOL
Entier long. Toujours transmis par valeur et dcrit dans une dclaration de
routine API sous la forme ByVal argument% ou ByVal argument As
Long.
CHAR
COLOREF
DWORD
Entier long. Toujours transmis par valeur et dcrit dans une dclaration de
routine API sous la forme ByVal argument% ou ByVal argument As Long.
NULL
Entier long utilis pour les valeurs non initialises. Dcrit dans une
dclaration de routine API sous la forme ByVal argument% ou ByVal
argument As Long.
LPSTR, LPCSTR
STRUCTURE
ntion
Atte
>
:
738
Si une routine API exige un type de donnes String, vous devez transmettre
une chane dnie de longueur xe avec beaucoup de bourrage. Par exemple, doublez la longueur de la chane la plus longue que vous vous attendez
voir renvoye par la routine API, puis dclarez un argument chane de
longueur xe avec autant despaces avant de le transmettre la routine API.
Ne vous souciez pas de la longueur de la chane si elle nest pas modie
par la routine API.
La Visionneuse dAPI
Windows contient des milliers de routines API qui peuvent tre appeles. Connatre leur
format, mme dun petit nombre, est difcile. Cest pourquoi Visual Basic contient un
outil particulier, la Visionneuse dAPI, qui peut tre utilis pour obtenir de laide sur le
format des routines API.
ition
Dfin
La Visionneuse dAPI afche les procdures de lAPI et les groupe par sujet
pour que vous puissiez trouver la routine dont vous avez besoin.
La Visionneuse dAPI permet de retrouver les routines et les arguments API, puis de copier
et coller ces informations dans la fentre de code. Suivant votre installation de Visual Basic,
la Visionneuse dAPI peut se lancer de deux manires.
ce
Astu
Dans certains cas, la Visionneuse dAPI est installe dans le menu Dmarrage. Pour le
vrier, slectionnez Dmarrage, Programmes, Microsoft Visual Basic 6.0, Outils
Microsoft Visual Studio 6.0, Visionneuse dAPI. Si elle ne sy trouve pas, vous pourrez
peut-tre la lancer partir de lenvironnement Visual Basic. Pour cela, slectionnez
Complments, Gestionnaire de complments pour afcher la bote de dialogue correspondante. Double-cliquez sur la rubrique Visionneuse dAPI, si elle existe, pour lajouter
votre menu Complments. Vous pouvez dmarrer le programme en slectionnant
Complments, Visionneuse dAPI.
La Figure 23.2 montre la fentre de la Visionneuse dAPI qui safche.
ntion
Atte
Info
739
<
:
Partie III
Figure 23.2
La Visionneuse dAPI
permet de dterminer
plus facilement
le format des routines
API.
Comme la plupart des routines API qui vous intressent sont situes dans le chier
Win32api.txt, slectionnez Fichier, Charger le chier texte et slectionnez ce chier.
La Visionneuse dAPI peut convertir le chier texte en une base de donnes Access (avec
lextension .MDB) si vous slectionnez loption de menu Convertir le texte en base de
donnes (voir Figure 23.3). Une fois la conversion faite, le chier pourra tre charg ultrieurement partir de loption de menu Fichier, Charger le chier base de donnes.
La liste droulante du haut est nomme Type dAPI. Si vous louvrez, vous y trouverez
ces trois valeurs :
Constantes. Liste toutes les constantes nommes reconnues par le chier API
Windows charg.
Dclarations. Liste toutes les dclarations qui apparaissent dans le chier API charg.
Types. Liste tous les types de donnes reconnus par le chier API charg.
La zone de liste Elments disponibles contient toutes les routines de lAPI Windows du
chier charg et les types de valeur. Par exemple, an de trouver linstruction Declare
ncessaire pour la routine API GetWindowsDirectory, suivez ces tapes :
1. Slectionnez Dclarations dans la zone de liste Type dAPI. Une quantit de candidats
safchent dans la liste Elments disponibles.
>
:
740
Figure 23.3
La Visionneuse dAPI
peut enregistrer
les informations
sous-jacentes dans
une base de donnes
pour un accs plus
rapide.
Si largument transmis la fonction est positif, un bip est mis sur la carte son du
PC.
Si largument transmis la fonction est ngatif, un bip est mis sur le haut-parleur du
PC.
741
<
:
Partie III
Figure 23.4
La Visionneuse dAPI
afche linstruction
Declare requise
par linstruction
slectionne.
L'instruction
Declare de
la fonction
Info
Slectionnez toute la dclaration pour la coller dans votre fentre de code. Revenez dans
la fentre de code de lapplication Visual Basic. Insrez une ligne avant la procdure
vnementielle Click et collez la dclaration dans la section gnrale du module.
>
:
742
743
<
:
Partie III
1:
2:
3: Private Sub cmdDrive_Click()
4:
Dim lngDriveType As Long
5:
6:
Transmettre le nom du disque qui vous intresse
7:
la fonction GetDriveType()
8:
lngType = GetDriveType("c:\")
9:
10:
Utiliser la valeur renvoye pour dterminer
11:
le type de disque test
12:
Select Case lngType
13:
Case 2
14:
txtDrive.Text = "Disque amovible"
15:
Case 3
16:
txtDrive.Text = "Disque dur fixe"
17:
Case 4
18:
txtDrive.Text = "Disque distant (rseau)"
19:
Case Else
20:
txtDrive.Text = "Inconnu"
21:
End Select
22: End Sub
>
:
744
Figure 23.5
La routine API
a renvoy
des informations sur
votre unit de disque.
Supprimez toujours les chiers que vous stockez dans le dossier Temp lors
de lexcution de votre application. De nombreux utilisateurs suppriment
rgulirement les chiers du dossier Temp vieux de plus dun jour ou deux
pour le nettoyer et faire de la place. Il nest pas souhaitable que votre application soit de celles qui enregistrent leurs chiers dans Temp sans les
supprimer, car ces utilisateurs risquent de ne pas apprcier vos programmes
longtemps. Quant ceux qui ne pensent pas nettoyer leur dossier Temp (la
grande majorit, dont beaucoup ignorent mme lexistence), ils ne sauront
mme pas que leur espace disque diminue chaque fois que votre application
se termine. Cest du gchis.
Les tapes suivantes dcrivent comment crer une petite application qui vous permet
dexprimenter la recherche dinformations sur le dossier de Windows :
1. Crez une nouvelle application.
2. Placez les contrles du Tableau 23.2 dans la feuille. La Figure 23.6 montre le rsultat
que vous obtiendrez.
745
<
:
Partie III
Figure 23.6
Cette feuille afchera
les informations
sur les dossiers de
Windows.
>
:
746
Valeur de proprit
Feuille : Name
frmFolder
Feuille : Caption
Feuille : Height
4500
Feuille : Width
5790
Label #1 Name
lblTitle
Label #1 Alignment
2-Center
Label #1 BorderStyle
1-Fixed Single
Label #1 Caption
Label #1 FontSize
14
Label #1 FontStyle
Gras
Label #1 Height
855
Label #1 Left
1080
Label #1 Top
360
Label #1 Width
3375
Label #2 Name
lblWD
Label #2 Alignment
1-Right Justify
Label #2 Caption
Rpertoire Windows :
Label #2 Height
255
Label #2 Left
720
Label #2 Top
1680
Label #2 Width
1455
Label #3 Name
lblSD
Label #3 Alignment
1-Right Justify
Label #3 Caption
Rpertoire System :
Label #3 Height
255
Label #3 Left
720
Label #3 Top
2280
747
<
:
Partie III
>
:
Proprit de contrle
Valeur de proprit
Label #3 Width
1455
Label #4 Name
lblTD
Label #4 Alignment
1-Right Justify
Label #4 Caption
Rpertoire Temp :
Label #4 Height
255
Label #4 Left
720
Label #4 Top
2880
Label #4 Width
1455
Label #5 Name
lblWinD
Label #5 Alignment
0-Left Justify
Label #5 BorderStyle
1-Fixed Single
Label #5 Height
255
Label #5 Left
2400
Label #5 Top
1680
Label #5 Width
2295
Label #6 Name
lblWinS
Label #6 Alignment
0-Left Justify
Label #6 BorderStyle
1-Fixed Single
Label #6 Height
255
Label #6 Left
2400
Label #6 Top
2280
Label #6 Width
2295
Label #7 Name
lblWinT
Label #7 Alignment
0-Left Justify
Label #7 BorderStyle
1-Fixed Single
Label #7 Height
255
748
Valeur de proprit
Label #7 Left
2400
Label #7 Top
2880
Label #7 Width
2295
cmdExit
&Quitter
2040
3480
1215
Figure 23.7
Les informations
sur les rpertoires
dpendent de
la conguration
de la machine de
lutilisateur.
Listing 23.3 : Les fonctions de lAPI qui recherchent les dossiers demandent un
peu plus de travail que les routines API dj vues
749
<
:
Partie III
Listing 23.3 : Les fonctions de lAPI qui recherchent les dossiers demandent
un peu plus de travail que les routines API dj vues (suite)
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
As String) As Long
Private Sub Form_Load()
Initialise les labels des dossiers systme au chargement
Dclare une chane fixe assez longue pour contenir les informations
Dim strFolder As String * 255
Dim intLength As Integer
Le code que vous devez utiliser pour rechercher les noms des dossiers est intressant,
car il demande plus de travail que les prcdents appels dAPI que vous avez tudis.
Ces routines recherchent les informations de dossiers ncessaires, mais vous devez les
rcuprer dans une longue chane de caractres renvoye par la fonction.
La ligne 7 rserve de la place pour une chane de longueur xe de 255 caractres. Mme
si les systmes ne demandent pas tant de caractres pour les dossiers, il vaut mieux en
avoir trop que pas assez. La ligne 8 dclare ensuite une variable entire qui sera utilise
comme valeur de retour de chaque fonction. Cette valeur, stocke dans intLength
(ligne 12), contient le nombre de caractres effectifs du chemin de dossier dans la
chane. Selon les ordinateurs, la longueur du nom de chemin peut tre diffrente, en
fonction de lemplacement des dossiers. Une chane de 255 caractres laisse votre
application beaucoup de place pour contenir les chemins daccs de ces dossiers sur
nimporte quel PC, sauf dans le cas, trs rare o un de ces noms de rpertoires dpasse
255 caractres.
>
:
750
Lorsque le dossier est obtenu la ligne 12, remarquez que la fonction de lAPI GetWindowsDirectory() demande comme arguments une chane pour enregistrer le chemin
daccs et la longueur maximale de cette chane. Elle ne tentera donc pas de stocker plus
de 255 caractres dans la chane strFolder.
Une fois que la fonction revient, la ligne 13 rcupre cette partie gauche, qui contient le
nom de chemin. La valeur de retour de la fonction de lAPI dtermine le nombre de
caractres du chemin daccs dans la chane. Tous les caractres aprs ce nombre
contiennent des informations non signicatives, quil nest pas souhaitable dafcher.
La ligne 20 montre une anomalie qui se rencontre souvent dans les routines API. La fonction GetTempPath() est du mme type que GetWindowsDirectory() et GetSystemDirectory(), pourtant la position de ses arguments est inverse. Faites toujours trs attention
aux instructions Declare quand vous travaillez sur des routines API pour ne pas confondre
les arguments par inadvertance.
Info
En rsum
Cette leon supplmentaire a expliqu comment utiliser les routines de lAPI Windows.
Windows est en fait un regroupement de bibliothques de liens dynamiques qui contiennent des milliers de routines auxquelles on peut accder depuis un programme Visual
Basic. Vous nutiliserez pas toutes les procdures disponibles dans lAPI, mais certaines
sont pratiques lorsque vous devez travailler sur des informations du systme ou effectuer
une fonction apparente, par exemple lire des donnes de la base de registres ou rinitialiser la machine de lutilisateur.
La matrise de lAPI Windows demande du temps, et nombre de programmeurs nen
connaissent pas toutes les procdures beaucoup sont ncessaires au bon fonctionnement du systme dexploitation, mais nont aucune utilit pour les applications que
lutilisateur excute. Cependant, en ayant accs ces procdures de lAPI Windows
751
<
:
Partie III
(fonctions et sous-routines) vous pouvez piocher dans un assortiment riche qui informe
ou aide grer le systme de lutilisateur.
Lutilisation de lAPI Windows est assez lourde. Cependant, Visual Basic comprend
un outil, la Visionneuse dAPI. Vous pouvez lutiliser pour consulter toutes les routines
existant dans lAPI Windows et rcuprer linstruction de dclaration correspondante,
que vous pouvez coller directement dans votre propre code. Une fois colle avec
linstruction Declare, la routine de lAPI Windows peut tre appele dans votre
programme Visual Basic. Windows rendra la fonction disponible au moment de
lexcution.
Questions-rponses
Q Pourquoi les dclarations des routines de lAPI Windows et lappel des procdures semblent si complexes ?
R La complexit vient de la connexion entre Visual Basic et la routine elle-mme.
Les routines API nont pas t crites en fonction de Visual Basic. Elles ont t
conues et crites lorigine pour tre utilises avec le langage C, qui se sert dun
ensemble de types de donnes lgrement diffrent de celui de Visual Basic, et qui
appelle aussi les routines dune manire diffrente. La dclaration est la manire de
faire comprendre Visual Basic des routines qui ne font pas partie de son environnement.
Q Quels sont les autres exemples de routines API que je peux vouloir tudier ?
R Les routines sont bien trop nombreuses pour tre mentionnes. Cependant, la liste
suivante, mme si elle est loin dtre exhaustive, vous donne un point de dpart pour
savoir ce qui est votre disposition :
rechercher les valeurs de la base de registres ;
dterminer les ressources systme libres et utilises, comme lespace mmoire ou
disque ;
accder la version de Windows qui sexcute ;
travailler sur une fentre ;
graphiques de bas niveau ;
grer les valeurs dans un chier INI (les chiers INI taient utiliss par les
versions de Windows avant Windows 95 pour enregistrer des informations
systme et sont encore utiliss par certains programmes).
>
:
752
Trouver une routine relve parfois de la devinette. En gnral, si vous trouvez une
routine API que vous pensez utile, recherchez dans laide en ligne de Visual Basic
pour voir si elle rpond vos besoins. Vous ne pouvez toujours pas dduire laction
dune routine partir de son nom. Par exemple, pour lire et crire une valeur dans un
chier INI, vous utilisez les fonctions Visual Basic GetSetting() et SaveSetting().
Q Comment puis-je dcouvrir quelles routines de lAPI Windows sont
disponibles ?
R Il existe plusieurs sources, que ce soit le systme daide en ligne de Visual Basic, le
site Web de Microsoft ou encore divers ouvrages traitant de la programmation Visual
Basic.
Q Existe-t-il un moyen de simplier lutilisation des routines API ?
R Si vous utilisez souvent une ou plusieurs routines API, vous pouvez simplier
quelque peu leur utilisation. Au lieu de lancer la Visionneuse dAPI chaque fois que
votre application doit utiliser une routine API pour coller linstruction Declare, puis
appeler la routine, vous pouvez ajouter les routines API que vous utilisez
rgulirement dans un module de code standard avec une extension de chier .BAS.
Le module contiendra toutes les instructions Declare des routines API que vous
voulez utiliser. Vous pouvez aussi crire une fonction ou une sous-routine Visual
Basic qui appelle la routine API. Utilisez une liste darguments qui correspond, en
type de donnes, ceux de la routine API. Une telle procdure permet denrober,
autour de la routine de lAPI Windows, une procdure Visual Basic qui en respecte
les conventions dappel et les arguments.
Ensuite, lorsquune application Visual Basic a besoin de faire appel lune ou
lautre de ces routines, il suft dajouter le module votre application. Cette
dernire na alors plus qu appeler la fonction denrobage Visual Basic pour excuter la routine API. En dautres termes, pour votre application, une routine API est
appele et revient comme toutes les autres procdures Visual Basic que vous crivez.
Une fois que votre bibliothque Visual Basic des routines API est correctement
dbogue, vous disposez dune mthode plus sre dappel des procdures API dont
vous avez le plus besoin.
Atelier
Latelier propose une srie de questions qui vous aident renforcer votre comprhension des lments traits, ainsi que des exercices qui vous permettent de mettre en
pratique ce que vous avez appris. Essayez de comprendre les questions et les exercices
avant de passer la leon suivante. Les rponses se situent lAnnexe A.
753
<
:
Partie III
Quiz
1. Quelle est la signication dAPI ?
2. Etant donn la riche collection des fonctions internes de Visual Basic, pourquoi
pouvez-vous avoir besoin dappeler une routine de lAPI Windows ?
3. Pourquoi les DLL utilises par vos applications Visual Basic naugmentent pas la
taille de ces dernires ?
4. Pourquoi les noms des DLL standards ont-ils chang avec les versions de
Windows ?
5. Quel outil vous permet de consulter plus facilement le format des routines API ?
6. Quelle est linstruction qui permet de dclarer les routines de lAPI Windows ?
7. Vrai ou faux. Les routines de lAPI Windows ont une apparence et un mcanisme
dappel uniforme.
8. Que fait linstruction Declare ?
9. Quel qualiant, Public ou Private, est ncessaire pour une procdure de lAPI
Windows dclare dans un module de feuille ?
10. Quel est le but dune procdure denrobage ?
Exercice
1. Quel chier, GDI32.DLL ou KERNEL32.DLL, contient la fonction de lAPI
GetSystemTime() ? Comment pouvez-vous le savoir de toute routine API que vous
rencontrez ?
>
:
754
Partie
IV
Annexes
A Solutions aux exercices . . . . . . . . . . . . . . . . . . . .
757
789
791
755
A
Solutions aux exercices
Chapitre 1
Quiz
1. Visual Basic est fond sur le langage BASIC.
2. Visual Basic est un environnement visuel et exploite un langage simple, driv du
BASIC. Mais il permet de crer de puissantes applications Windows.
3. La nature visuelle de Visual Basic prime sur le langage de programmation
plusieurs gards. Linterface visuelle donne vos programmes leur "visage" particulier et interagit avec lutilisateur. Le langage de programmation travaille en coulisses
pour connecter lensemble des lments visuels.
4. Une fentre de feuille peut tre la fentre dapplication, mais une mme application
peut contenir plusieurs fentres de feuilles. La fentre de feuille est ce voit lutilisateur quand il excute le programme.
5. Un bogue est une erreur dans le programme. Le dbogage est le processus de correction des bogues.
6. Les programmes crits en langage compil sexcutent beaucoup plus rapidement
que les programmes crits en langage interprt.
7. Les programmes crits en langage interprt sont plus faciles dboguer que les
programmes crits en langage compil.
757
Partie IV - Annexes
Exercice
Lancez lassistant Cration dapplications et rpondez Oui lorsquil demande si vous
souhaitez ajouter un accs Internet votre application. Lors de lexcution, vous slectionnerez Afchage, Navigateur Web pour ouvrir la fentre navigateur. (Vous devez naturellement disposer dune connexion Internet.)
Chapitre 2
Quiz
1. Une barre doutils est un ensemble de commandes accessibles par simples boutons.
La Bote outils est la fentre qui contient les contrles que vous pouvez placer sur
la feuille.
2. MSDN.
3. Faux. La fentre Feuilles peut contenir autant de feuilles que lapplication lexige.
Toutefois, une seule feuille peut tre slectionne la fois.
4. Lorsque vous le placez sur la feuille aprs avoir slectionn un outil, le pointeur
che de la souris se transforme en pointeur cruciforme qui permet de dessiner le
contrle.
5. Visual Basic place automatiquement le contrle au centre de la feuille. Vous pouvez
ensuite le dplaer et le dimensionner.
6. Faux. Cest dans la fentre Proprits que lon dnit les proprits de contrles (on
peut galement le faire dans le code).
7. La fentre Proprits afche les proprits de lobjet slectionn.
>
:
758
8. En cliquant sur les points de suspension, par exemple la proprit Font, vous
afchez une bote de dialogue qui facilite le rglage de la proprit.
9. Caption.
10. Les noms par dfaut ne sont pas trs explicites. Attribuer au contrle un nom plus
parlant, notamment laide de prxes spciques, cela permet de deviner sa fonction daprs le seul nom, ce qui est pratique lorsquun projet contient de nombreux
contrles.
Exercices
Pour ajouter un arrire-plan bleu, double-cliquez sur la proprit BackColor de la feuille.
(La desription donne en bas de la fentre Proprits indique la fonction de la proprit
slectionne.) Une zone de liste safche, qui contient deux onglets. A longlet Palette,
vous pouvez choisir nimporte quelle couleur darrire-plan. Longlet Systme propose les
couleurs Windows plus conventionnelles. A longlet Palette, slectionnez un ton de bleu.
Ajouez un bouton de commande quelque part sur la feuille, par exemple dans le coin
infrieur droit. Changez sa proprit Name en cmdExit. Changez sa proprit Caption en
Quitter. Pour ajouter la ligne de code requise, double-cliquez sur le bouton de
commande. Tapez End au milieu de la procdure. Excutez le programme. Le nouveau
bouton de commande apparat sur fond bleu. Une fois limage afche, vous pouvez
quitter le programme en cliquant sur Quitter.
Chapitre 3
Quiz
1. Une touche de raccourci est une combinaison de touche, par exemple Alt-R, par
laquelle lutilisateur peut slectionner le contrle.
2. Faux. Les vnements concernent uniquement les contrles.
3. Lvnement Cancel permet lutilisateur de slectionner le bouton de commande
en appuyant sur la touche Echap.
4. Le contrle qui a le focus est entour dun cadre en pointill.
5. En appuyant sur Tab ou Maj-Tab (et sur la ches dans certaines applications).
6. TabIndex.
759
<
:
Partie IV - Annexes
7. les parenthses indiquent que LoadPicture () est une sorte de procdure. LoadPicture () est la procdure qui avait permis dafcher limage, au Chapitre prcdent. LoadPicture () est une fonction interne : elle ne ncessite pas de code, car le
code rside dj dans le langage de programmation Visual Basic. Les fonctions
internes ont ceci de pratique quelle vous pargne de saisir les codes appels servir
souvent. Vous dcouvrirez ces fonctions internes au Chapitre 5.
8. Faux. Visual Basic gnre souvent une procdure vnementielle Click, mais pas
toujours. Visual Basic insre la premire et la dernire ligne de la procdure vnementielle la plus probable pour le contrle. Dans le cas dune zone de texte, par
exemple, ce sera la procdure vnementielle Change.
9. Vrai.
10. La proprit PasswordChar permet de masquer ce que tape lutilisateur. Les regards
indiscrets, ainsi, ne peuvent attraper par-dessus lpaule un mot de passe ou autre
information sensible.
Exercices
1. 1: Private Sub frmMyApp_Load ()
2. Les lignes 1 et 5 indiquent que la procdure est une fonction. Les procdures vnementielles sont des sous-routines. Remplacez Function par Sub pour rsoudre le
problme.
3. Les trois zones de texte doivent avoir des proprits Style diffrentes pour les trois
barres de dlement. La proprit Text doit tre dnie lors de la cration. Vous ne
pouvez spcier plusieurs lignes dans Text. Un mot ou une phrase sufront.
Dnissez comme &Quitter la proprit Caption du bouton de commande.
Chapitre 4
Quiz
1. Le Crateur de menus.
2. Vrai.
3. Click (cest dailleurs le seul).
>
:
760
4. Un raccourci clavier est une combinaison de touches (Ctrl-B, Alt-A, etc.) permettant
dexcuter une commande.
5. Les raccourcis clavier permettent de slectionner rapidement les options de menu.
6. Click.
7. Faux. Le Crateur de menus ne sert qu concevoir la structure du menu, non le code.
8. Une coche safche gauche de loption de menu.
9. Vrai, par dfaut. Cest dans le code que vous spciez le contraire.
10. Ce sont des commentaires, qui dcrivent le programme en langage clair. Le Projet
bonus 1, situ la n du Chapitre 4, vous en dira plus.
Exercices
1. Le Crateur de menus contient une srie de boutons gurant des ches. Lorsquon
clique sur la che-droite, des points de suspension sinsrent, et llment
slectionn descend dun cran dans la hierarchie du menu : option de menu, sousmenu, etc.
2. Manuel doit comprendre que cest lui de spcier, dans le code, quune option de
menu doit tre dsactive. Les options de menu ne sont pas toujours mutuellement
exclusives, comme elles ltaient dans ce chapitre. Cest au programmeur de dnir
le comportement des coches.
3. Ouvrez la fentre Code et cliquez sur chaque option de menu dans la aprtie infrieure de la fentre. Slectionnez des raccourcis clavier dans la liste fournie par le
Crateur de menus. A lexcution du programme, les raccourcis clavier apparatront
vis--vis des options de menu correspondantes. Appuyez sur lune des combinaisons
de touche pour faire un essai.
Chapitre 5
Quiz
1. Les dclarations de variables et autres donnes.
2. Une variable locale peut tre partage par plusieurs procdures, comme vous allez le
dcouvrir dans les chapitres venir.
3. Vrai.
761
<
:
Partie IV - Annexes
4. Faux. Une variable peut prendre successivement plusieurs valeurs lors de lexcution du programme.
5. Lun effectue une division classique, lautre une division entire.
6. Un oprateur surcharg est un oprateur qui peut effectuer des oprations diffrentes
selon le contexte.
7. Lesperluette (&). Le signe plus (+) doit tre de prfrence rserv aux additions.
8. Variant.
9. Faux. Les prxes ne sont pas obligatoires, mais facilitent la documentation du
code.
10. Vous pouvez spcier linstruction Option Explicit au dbut de la section de dclarations ou cochez loption correspondante dans la bote de dialogue Options. La
bote de dialogue sapplique globalement, alors que linstruction Option Explicit
ne concerne que son propre module de code.
Exercices
1. Vous pensez que la variable abc provoquera une erreur ? Bien vu, mais ce nest pas
a. A moins que vous ne spciez autre chose, Visual Basic traite a priori toutes les
variables comme de type Variant. La variable abc sera donc dclare comme
Variant.
2. Visual Basic calcule la division avant laddition, mais pour obtenir la moyenne,
Marie doit procder ainsi : sngAvg = (sngGrade1 + sngGrade2 + sngGrade3) / 3
3. a. 5.
b. 6.
c. 5.
d. 5.
e. 7.
4. a. a = (3 + 3) / (4 + 4)
b. x = (a b) * (a 2) ^ 2
c. f = a ^ (1/2) / b ^ (1/2)
5. Les esperluettes concatnent les chanes de sorte que Visual Basic traite les multiples lignes comme un seul littral.
>
:
762
Chapitre 6
Quiz
1. Or.
2. Loprateur conditionnel compare deux valeurs. Loprateur logique combine deux
expressions conditionelles.
3. Une srie dinstructions appeles se rpter plusieurs fois.
4. Aprs cette affectation, la variable de type Integer contiendra 10 units de moins
quavant.
5. Cette boucle ne sexcutera jamais, car intN est dnie comme gale zro.
6. Si Exit For ntait pas inclus dans une instruction If, la boucle For ne sexcuterait
quune seule fois, puisque Exit For provoquerait larrt de la boucle ds la premire
itration.
7. Faux. Le bloc If block sexcute si la condition est satisfaite, le bloc Else si elle ne
lest pas.
8. Vrai. Si, au commencement de la boucle, la valeur nale est dj plus grande que la
valeur initiale, la boucle ne sexcutera jamais.
9. Pour excuter une boucle plusieurs fois.
10. Selon son rsultat, une instruction de dcision peut nexcuter le code quune seule
fois. Une instruction de boucle excute son code plusieurs fois.
Exercices
1. If (a = b) And (b = c) Then Le corps de linstruction suit.
2. La boucle du pauvre Momo na pas de n, parce que la variable de contrle ne
change jamais de valeur lintrieur de la boucle.
3. Dans la ralit, lhorloge dun stade de foot neffectue pas un dcompte, mais
lexemple illustre le fonctionnement des boucles imbriques :
1:
2:
3:
4:
5:
For Qtr = 1 to 2
For Minutes = 45 to 0 Step -1
Mi-temps.
Next Minutes
Next Qtr
763
<
:
Partie IV - Annexes
1:
2:
3:
4:
5:
6:
7:
8:
Chapitre 7
Quiz
1. La fonction interne renvoie une nouvelle valeur fonde sur la valeur de largument
qui lui est pass.
2. Vrai.
3. Empty.
4. Faux. Les trois tableaux dcrivent un mme argument de la fonction MsgBox(),
reprsent dans le chapitre par intStyle.
5. Le nom du projet.
6. Lutilisateur peut cocher autant de cases cocher que ncessaire, mais il ne peut
slectionner quun seul bouton doption la fois.
7. Vrai. Il faut pour cela que leurs valeurs soient False au premier chargement de la
feuille (par exemple, dans la procdure vnementielle Form_Load()).
8. Respectivement, les valeurs 0 et 1 de la proprit Value.
9. Respectivement, les valeurs True et False de la proprit Value.
10. An que lutilisateur puisse en slectionner plusieurs la fois, rpartis en catgories
diffrentes.
>
:
764
Exercices
1. On vrie si InputBox() renvoie une chane vide ("").
2. strAns = MsgBox("You are out of paper", vbExclamation + _
vbDefaultButton2 + vbAbortRetryIgnore, "For Printer")
3. Voici la procdure vnementielle :
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
4. Les procdures vnementielles pour les boutons doption seront des procdures
vnementielles Click. Click est lvnement qui se produit lorsque lutilisateur
slectionne lun des boutons doption. Vous navez pas dslectionner les autres,
Visual Basic sen charge automatiquement.
Chapitre 8
Quiz
1. Les variables publiques.
2. Les variables locales.
3. Vrai. Les arguments sont toujours passs par rfrence si vous ne spciez pas ByVal.
765
<
:
Partie IV - Annexes
Exercices
1. Voici le Listing 8.1 rcrit :
>
:
766
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
19:
Dans le chapitre, ce code tait une sous-routine.
20:
Calcul de la taxe de vente
21:
3,5 % du total.
22:
curSalesTax = (curTotal * .03) + (curTotal * .005)
23:
24:
Dduction du pourcentage dabattement.
25:
curSalesTax = curSalesTax - (sngRateDisc * curTotal)
26:
27:
Dfinit la valeur renvoye.
28:
SalesTax = curSalesTax
29:
30:
Une fois termine, la procdure revient
31:
la procdure appelante.
32: End Function
Chapitre 9
Quiz
1. Il faut ajouter le contrle depuis la bote de dialogue Composants.
2. Ouvrir, Enregistrer, Police, Couleur, Imprimer et Aide Windows.
3. Le contrle Common Dialog permet de gnrer six botes de dialogue standards.
4. Le contrle Common Dialog ne devient visible pour lutilisateur que lorsquon lui
applique lune de ses mthodes Show. La bote de dialogue commune correspondante
safche alors au milieu de lcran.
5. Vrai.
6. La proprit Filter dtermine les types de chiers qui pourront safcher.
7. La proprit Flags dnit les divers paramtres dune bote de dialogue commune,
avant quelle ne safche.
8. Vrai.
9. Faux. La bote de dialogue Imprimer ne requiert pas de valeurs Flags prdnies
pour safcher. Cependant, on rgle en gnral certaines proprits, telles que
DialogTitle, avant lafchage.
10. Faux. La mthode doit tre plus prcise : ShowFont, ShowPrinter, etc.
767
<
:
Partie IV - Annexes
Exercices
1. Voici le Listing 9.2 modi :
1:
Prsuppose que CancelError vaut True.
2:
On Error Goto dbErrHandler
3:
Dfinit les valeurs Flags.
4:
CdbFont.Flags = cdlCFBoth Or cdlCFEffects
5:
CdbFont.ShowFont Affiche la bote de dialogue Police.
6: Dfinit les proprits du label qui
7: refltera les choix de lutilisateur.
8:
LblMessage.Font.Name = CdbFont.FontName
9:
LblMessage.Font.Size = CdbFont.FontSize
10: LblMessage.Font.Bold = CdbFont.FontBold
11: LblMessage.Font.Italic = CdbFont.FontItalic
12: LblMessage.Font.Underline = CdbFont.FontUnderline
13: LblMessage.FontStrikethru = CdbFont.FontStrikethru
14: LblMessage.ForeColor = CdbFont.Color
15: Exit Sub
16:
17: dbErrHandler:
18: Lutilisateur a cliqu sur Annuler.
19: Exit Sub Pas de modification.
2. Voici la procdure :
>
:
768
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
Chapitre 10
Quiz
1. MouseDown et MouseUp rpondent des boutons spciques et indiquent, par les arguments quils passent leurs procdures, lequel des deux boutons de souris a servi.
Click, DblClick et MouseMove ne tiennent pas compte du bouton qui a servi.
2. Par largument intButton.
3. Il suft daffecter le chemin daccs dune icne la proprit DragIcon du contrle.
4. En crivant un code qui ignore certains vnements timer et ne rponde quune fois
que le laps de temps voulu sest coul.
5. On peut initialiser le contrle lors de la cration en ajoutant les lments dans la
proprit List, ou lors de lexcution (pratique la plus courante) en passant par
la mthode AddItem.
6. La proprit Value du contrle de liste spcie lindice de llment slectionn.
7. On peut supprimer les lments un un avec la mthode RemoveItem, ou les supprimer tous dun coup avec la mthode Clear.
8. Pour que la procdure vnementielle puisse tenir compte du nouvel lment, il faut
que le focus se dplace.
9. En dnissant la proprit Sorted comme True.
10. 23 lments.
Exercices
1. Ajoutez votre feuille une zone de liste, que vous initialiserez avec le code suivant
(aux prnoms prs, naturellement) dans la procdure vnementielle Form_Load():
Private Sub Form_Load()
lstFamily.AddItem ("Josette")
lstFamily.AddItem ("Paulette")
lstFamily.AddItem ("Mauricette")
lstFamily.AddItem ("Idulphe")
lstFamily.AddItem ("Tertullien")
lstFamily.AddItem ("Yolande")
lstFamily.AddItem ("Bruno")
lstFamily.AddItem ("Elvis")
769
<
:
Partie IV - Annexes
lstFamily.AddItem ("Marie-Chantal")
lstFamily.AddItem ("Casimir")
End Sub
Chapitre 11
Quiz
1. Lorsque lvnement Resize se produit, vous pouvez ajuster la position des contrles aux nouvelles dimensions de la feuille.
2. La proprit ScaleMode dtermine les units de mesures qui seront employes pour
les coordonnes CurrentX et CurrentY.
3. Le premier indice est 0.
4. Faux. Les applications SDI peuvent supporter plusieurs feuilles, condition que ces
feuilles ne contiennent pas chacune un jeu de donnes diffrent.
5. Une application MDI peut contenir plusieurs fentres de feuilles, chacune contenant
un jeu de donnes diffrent.
6. En haut.
7. ImageList.
8. Le contrle ImageList ne fait que contenir les icnes des boutons. Il napparat pas
lexcution.
9. Spc() insre dans une ligne de sortie un nombre xe despaces, tandis que Tab()
positionne le curseur texte sur un colonne spcique.
10. En utilisant la mthode Print toute seule.
>
:
770
Exercices
1. (Aucune rponse ncessaire.)
2. Les deux sorties Print safchent sur une seule ligne, cause du point-virgule :
Ligne 1Ligne 2
3. (Aucune rponse ncessaire.)
4. Votre procdure vnementielle Click devrait contenir une instruction For comme
celle-ci :
For intCtr = 1 To 100
5. Voici le code :
Commence zro.
intCount = 0
Passe par chaque feuille.
For intCtr = 1 to Forms.Count
Ajoute le nombre de contrles sur chaque feuille.
intCount = intCount + Forms(intCtr).Count
Next intCtr
Chapitre 12
Quiz
1. Tous.
2. FreeFile().
3. Visual Basic lcrase.
4. Visual Basic crira la n du chier squentiel la prochaine instruction de sortie
chier.
5. linstruction ouvre un chier squentiel et permet aux instructions de sorties subsquentes dcrire la n du chier.
6. Le chiers squentiels doivent tre en mesure de localiser chaque numro denregistrement. Pour que ce calucl fonctionne, les enregistrements doivent tre de longueur
identique.
771
<
:
Partie IV - Annexes
Exercices
1. Mauricette essaie sans doute de supprimer le dossier Factures qui contient encore
des chiers. La commande RmDir ne sapplique quaux dossiers vides.
2. La procdure suivante remplit le tableau (lignes 10 14) et crit ces lments dans
le chier ouvert (lignes 21 23) :
>
:
772
3. Commencez par reproduire la feuille de la Figure 12.1. Pour chacune des trois zones
de liste, vous devez crire une procdure vnementielle Change qui mette jour les
deux autres. Voici un exemple :
Private Sub Direct_Change()
filFile.ListIndex = 0
End If
End Sub
dirList.Path = drvList.Drive
End Sub
Chapitre 13
Quiz
1. En interrogeant la valeur Printers.Count.
2. Vrai.
3. ScaleMode.
4. Par la mthode NewPage.
5. Is TypeOf.
6. Vrai.
7. Faux. KillDoc ne peut annuler que les sorties imprimante de lapplication.
8. Me.
9. A la rsolution de lcran.
10. True.
773
<
:
Partie IV - Annexes
Exercices
1. Printer.Print Tab(32); "Votre nom"
2. Yolande doit comprendre que Windows supporte de multiples polices et tailles de
police. Ses calculs quant la largeur et la n de la page doivent tenir compte du
corps de la police utilise.
3. Voici le Listing 13.2 modi :
1:
2:
3:
4:
5:
8:
Parcourt les imprimantes.
9:
For Each prnPrntr In Printers
10:
If prnPrntr.ColorMode = vbPRCMColor Then
11:
Dfinit limprimante couleur comme imprimante par
dfaut.
12:
Set Printer = prnPrntr
13:
blnIsColor = True
14:
Exit For Laisse tomber.
15:
End If
16:
Next
Parcourt les imprimantes si ncessaire.
17:
18:
blnIsColor reste False si aucune imprimante couleur
19:
nest trouve, et devient True dans le cas contraire.
20:
Dfinit en consquence la valeur renvoye par la
fonction.
21:
IsColor = blnIsColor
22: End Function
Chapitre 14
Quiz
1. Le contrle Shape.
2. Le contrle Shape (qui dessine galement des rectangles).
3. PSet et Ligne.
4. Vrai.
>
:
774
5. Loption F.
6. Parce que les boutons ne sont pas tous ncessaires.
7. Mode renvoie ltat du priphrique du contrle multimdia.
8. En rduisant la valeur de la proprit UpdateInterval.
9. Cest le contrle PictureBox qui recevra la sortie vido.
10. Cest le code qui dnit ainsi le contexte de priphrique.
Exercices
1. Voici quoi devrait ressembler votre code :
775
<
:
Partie IV - Annexes
>
:
776
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:
End Select
88: End Sub
89:
90: Private Sub mnuFileExit_Click()
91:
End
92: End Sub
Chapitre 15
Quiz
1. Les modles de feuilles vous permettent dajouter des feuilles standards vos applications et dacclrer le dveloppement de vos programmes.
2. Vous pouvez ajouter les modles de feuilles partir de lassistant Cration dapplications, de loption de menu Projet, Ajouter une feuille, ou en cliquant avec le bouton
droit dans la fentre Projet et en slectionnant Ajouter, Feuille dans le menu contextuel.
3. Ajoutez simplement la mthode Show la feuille bote de dialogue A propos de lorsque
lutilisateur slectionne Aide, A propos de dans le menu de votre application.
4. Faux. La bote de dialogue A propos de contient dj le code ncessaire lafchage
des Infos systme.
5. Un cran daccueil ne doit rester lcran quun temps limit au dmarrage du
programme.
6. La bote de dialogue Astuce du jour reste lcran tant que lutilisateur le dsire,
alors que lcran daccueil napparat que brivement titre dintroduction. De plus,
lcran dAstuce du jour continue afcher des astuces supplmentaires quand
lutilisateur clique sur le bouton Astuce suivante. Lutilisateur peut dsactiver un
cran Astuce du jour pour quil ne safche plus au dmarrage de lapplication, alors
que lcran daccueil safche systmatiquement au dmarrage.
7. Lentre SaveSetting, utiliser conjointement la bote de dialogue Astuce du jour
spcie si lutilisateur souhaite la voir ou pas.
777
<
:
Partie IV - Annexes
Exercices
1. Le texte du chapitre dcrit comment faire cette modication.
2. La rponse de ce projet est dj contenue dans lindice donn par la question. Le
plus compliqu est de crer lensemble des astuces laide du Bloc-notes.
Chapitre 16
Quiz
1. Lorsque vous liez un objet OLE, ce dernier reste avec son application parente. Lorsque vous incorporez un objet, votre application en obtient une copie : si lobjet incorpor est modi dans son application parente, la modication napparatra pas dans
votre application.
2. Lincorporation occupe le plus despace disque car une copie de lobjet doit se trouver dans votre application.
3. Faux. Vous devez crire le code denregistrement et de chargement des modications effectues sur lobjet OLE.
4. La mthode SaveToFile enregistre un objet sur le disque.
5. La mthode ReadFromFile charge des objets depuis le disque.
6. Linstruction If TypeOf et la fonction TypeOf() testent la classe des objets.
7. Faux. Les objets systme sont dj globaux ; vous navez pas les transmettre entre
procdures.
8. Les fonctions, les constantes nommes, les fonctions internes, les procdures et les
classes apparaissent souvent dans la liste des Membres.
>
:
778
9. Visual Basic regroupe tous les membres et les classes suivant leur usage et non pas
alphabtiquement dans la liste des Membres.
10. Faux. Une des caractristiques les plus gratiantes de lExplorateur dobjets est sa
capacit trouver les objets de vos applications.
Exercices
1. La clause With npargne aucun effort de programmation lorsquil ny a que deux
proprits congurer.
2. Suivez les instructions de cette leon pour ajouter un objet WordPad une application (mais ajoutez la place lobjet Paintbrush). Vous devez utiliser le code denregistrement et de chargement des donnes OLE illustr dans la leon pour pouvoir
enregistrer vos dessins. Si cet exercice ne demande que peu en matire de rponse,
vous pourrez acqurir, en le ralisant, une bonne exprience de lutilisation dobjets
OLE dans dautres applications.
Chapitre 17
Quiz
1. LAutomatisation est le processus demprunt des fonctionnalits dune autre application pour crer lobjet de donne de cette dernire.
2. Une autre instance de Word sera dmarre et beaucoup de ressources du systme
seront utilises par les deux processus redondants.
3. Vous ne pouvez pas enregistrer des applications dans des variables ; vous devez donc
crer une rfrence une application laide de la commande Set.
4. Si vous droutez une erreur laide de linstruction On Error, vous pouvez dterminer lerreur survenue en testant la valeur de Err.Number.
5. Vous pouvez crer des contrles ActiveX en sous-classant des contrles uniques, des
agrgats de contrles ou en les crant de toutes pices.
6. Le contrle ActiveX le plus simple que vous pouvez crer est celui qui sous-classe
un contrle unique.
7. Vrai.
779
<
:
Partie IV - Annexes
8. Les blocs dnumrations sont utiliss pour dnir des listes de contantes numres.
9. Visual Basic utilise lextension .OCX pour les contrles ActiveX que vous crez.
10. Les contrles ActiveX exigent au moins une procdure Get et une procdure Let
pour que vous puissiez assigner et lire les valeurs de proprits.
Exercices
1. Aucune rponse nest ncessaire.
2. Vous devez dabord dclarer une variable pour contenir le texte dorigine. Vous
pourrez ensuite y enregistrer le texte avant de le convertir en majuscules ou en
minuscules. Vous pourriez crer une variable publique qui conserve sa valeur quand
la procdure de conversion de la casse se termine.
Etant donn que les variables locales sont prfrables, le choix dune variable publique
laisse beaucoup dsirer. Il existe plusieurs mthodes pour sauvegarder la valeur
dorigine de la zone de texte, mais la plus simple est sans doute de placer une zone de
texte masque dans la feuille (laissez la proprit Enabled True, mais mettez la
proprit Visible False). Ds que lutilisateur saisit du texte dans le contrle ActiveX, la proprit Text de ce dernier doit tre sauvegarde dans proprit Text de la
zone masque. Quand lutilisateur clique sur le bouton de commande Comme saisi, la
proprit Text du contrle ActiveX doit recevoir la valeur de la proprit Text du
contrle masqu. Indice : Assurez-vous que vous mettez bien jour la proprit Text
de la zone de texte masque chaque fois que lutilisateur tape une nouvelle valeur
dans le contrle ActiveX (comme le fait la procdure vnementielle Change).
Chapitre 18
Quiz
1. Le Gestionnaire de donnes vous permet danalyser des bases de donnes.
2. Une table est un chier de donnes qui se trouve dans une base de donnes.
3. Faux. Le nombre de colonnes naugmente pas sauf si vous augmentez le nombre de
champs de la base de donnes.
4. Vrai. Une table est une forme de jeu denregistrements recordset.
>
:
780
Exercices
1. Najoutez pas de contrle Data la feuille. Il vous suft dajouter des contrles de
zones de textes et de les lier au contrle Data dj prsent. Congurez le contrle
Data dans la proprit DataSource de chaque contrle TextBox et dnissez dans la
proprit DataField la colonne (champ) correspondante de la table.
2. Pour former une relation un--plusieurs, vous devez slectionner deux tables qui ont
au moins un champ commun. Quand vous slectionnez le type de feuille Principal/
secondaire, la fentre suivante vous donne la possibilit de slectionner la table
utiliser comme source denregistrements principale. Slectionnez la table Authors dans
la liste et envoyez le champ Author dans la liste de droite pour que seul le nom de
lauteur apparaisse dans lafchage principal de lenregistrement. Une fois que vous
avez cliqu sur Suivant, la fentre de source des enregistrements secondaires safche. Vous pouvez y slectionner la table Title Author. Envoyez le champ ISBN dans
la liste de droite et cliquez sur Suivant pour afcher la fentre illustre la Figure
A.1. Mettrez en surbrillance le champ Au_ID (le seul champ commun) pour connecter
les enregistrements. Lorsque vous excutez lapplication, le nom de lauteur safche
en haut de la feuille, et les codes ISBN de chaque ouvrage crits par lauteur suivent
dans la partie infrieure.
781
<
:
Partie IV - Annexes
Figure A.1
Vous devez indiquer lassistant comment lier les deux
ensembles de champs.
Chapitre 19
Quiz
1. Le navigateur Web gnr dans lapplication afchera la page Web lURL que
vous avez fourni lorsque lapplication se connecte lInternet.
2. Faux. Votre application contiendra un navigateur Web incorpor utilisable et ne
dpend pas de linstallation dun navigateur sur la machine de lutilisateur.
3. Vrai. Vous devez disposer de Internet Explorer 4 sur votre machine pour utiliser les
fonctions compltes de programmation Web de Visual Basic. Ce navigateur est fourni
avec Visual Basic (si vous ne lavez pas dj). Il nest pas ncessaire den faire votre
navigateur par dfaut, mais cest celui dont a besoin Visual Basic pour le dveloppement.
4. Lencapsulation, dans sa forme la plus lmentaire, dsigne lempaquetage du code
et des proprits pour quun objet puisse transporter ses comportements et descriptions propres.
5. Certains contrles de Visual Basic 6 fournissent un accs direct au service en ligne
Microsoft Network. Naturellement, si lutilisateur na pas lautorisation daccs Microsoft Network, les contrles ne lui permettront pas de se connecter.
>
:
782
6. Un intranet est une connexion interne de type Internet entre ordinateurs en rseau.
7. Un document ActiveX est une page Web qui contient une application Visual Basic
entirement fonctionnelle.
8. Java est un langage de programmation de type C++ qui permet dcrire de petits
programmes, dsigns sous le terme dapplets, qui voyagent avec la page Web et
sexcutent sur la machine de lutilisateur nal quand il afche la page Web qui les
contient.
9. Le langage VBScript fonctionne avec HTML pour charger les documents ActiveX.
10. Utilisez lassistant Migration de document ActiveX pour convertir des applications
existantes en documents ActiveX.
Exercices
1. Aprs avoir converti une application en un document ActiveX, vous pouvez ajouter
ces documents lapplication Classeur Ofce, qui nest rien dautre quun conteneur de contrles ActiveX. Tant que vous ne savez pas comment compiler un chier
EXE (il faut attendre le Chapitre 21), vous devrez faire vos tests avec le raccourci
Ofce en laissant Visual Basic en excution. Une fois la conversion en document
ActiveX effectue, dmarrez le programme Classeur Ofce, afchez le menu
Section, et cliquez sur Ajouter pour afcher la bote de dialogue Ajouter la slection.
Cherchez votre document ActiveX et double-cliquez dessus ; il safchera dans la
collection des outils. Dans un projet Ofce, vous pourrez donc intgrer des applications non Ofce avec les documents Ofce.
2. Avec les feuilles multiples, lassistant Migration devra crer plusieurs documents
ActiveX. Vous devez tester chacun sparment en lanant votre navigateur et en
slectionnant Fichier, Ouvrir pour chaque document ActiveX cr partir des
feuilles du projet.
Chapitre 20
Quiz
1. Vous devez utiliser des chiers RTF (Rich Text Format) pour le texte de laide et un
chier de projet HPJ, sauf si vous utilisez laide HTML, auquel cas le chier daide
aura pour extension CHM.
2. Lutilisateur peut passer dun sujet daide au suivant sans revenir un index.
783
<
:
Partie IV - Annexes
3. Ltiquette de note de bas de page K est utilise pour connecter laide aux sujets souligns.
4. Le chier de projet daide identie le chier de contenu, les ID de contexte des
pages daide et le texte de la barre de titre du moteur daide. Le compilateur daide
utilise le chier de projet durant la compilation du chier daide.
5. Utilisez la bote de dialogue Proprits de projet pour attacher laide la touche F1.
6. Utilisez les valeurs dID de contexte pour affecter des sujets daide particuliers aux
objets daide contextuelle.
7. Faux. Laide contextuelle utilise des ID de contexte numriques.
8. Les info-bulles surgissent quand lutilisateur laisse le curseur de la souris sur un
lment. Laide "Quest-ce que cest ?" ne safche que si elle est appele partir du
menu daide ou si lutilisateur clique sur le bouton "Quest-ce que cest ?" de la
barre doutils.
9. Paramtrez la proprit WhatsThisButton de la feuille True pour activer le bouton
"Quest-ce que cest ?" dans la barre de titre de la feuille.
10. Vrai.
Exercice
Dveloppez lexemple de cette leon. Lajout des autres sujets daide sera simple.
Suivez ces rgles :
1. Assurez-vous que la proprit ToolTips de chaque objet a une valeur.
2. Crez un message daide contextuelle pour chaque objet de la feuille.
3. Assignez des valeurs dID de contexte chaque sujet daide, dans le chier
projet.
4. Compilez le chier daide.
Chapitre 21
Quiz
1. Une erreur de syntaxe est une erreur dorthographe ou une mauvaise utilisation du
langage.
>
:
784
2. Lordinateur dtecte les erreurs de syntaxe, mais la correction des erreurs de logique
est la charge des personnes.
3. Vrai.
4. Faux. Sil reste une erreur de syntaxe dans lapplication, Visual Basic empche son
excution.
5. Le dbogueur Visual Basic vous permet darrter un programme tout endroit en
plaant un point darrt dans le code. Vous pouvez alors poser le curseur de la souris sur
une variable pour voir sa valeur lexcution ou placer la variable dans la fentre
Espions.
6. En excutant un programme ligne par ligne, vous pouvez analyser les variables et
contrler les valeurs votre rythme, et vrier votre logique et le droulement du
programme.
7. Vrai. Vous pouvez placer des instructions dassignation dans la fentre Excution.
8. Un programme Visual Basic compil sexcute bien plus rapidement que dans
lenvironnement Visual Basic.
9. Lassistant Empaquetage et dploiement cre les routines dinstallation de vos applications.
10. Lassistant Empaquetage et dploiement peut crer un ensemble de chiers pour une
installation sur plusieurs disques.
Exercices
1. Linstruction contient une erreur de syntaxe, car Therefore est utilis la place de
Then dans linstruction If de la premire ligne.
2. Vrai. La phrase a non seulement une erreur de syntaxe, mais elle prsente aussi une
erreur de logique. En effet, la phrase na quune erreur et pas deux. Sa logique est
donc incorrecte !
Chapitre 22
Quiz
1. Faux. Tous les lments dun tableau, quelle que soit sa dimension, doivent tre du
mme type de donnes.
785
<
:
Partie IV - Annexes
Exercices
1. 28 lments sont rservs.
2. 30 lments sont rservs (noubliez pas lindice zro).
3. Le meilleur endroit pour enregistrer les valeurs de la grille dans la table est sans
doute la procdure cmdExit_Click(), telle quillustre ci-dessous :
Private Sub cmdExit_Click()
For Row = 1 To 19
For Column = 1 To 7
grdSales.Row = Row
grdSales.Col = Column
Next Column
Next Row
Quitte le programme
End
End Sub
>
:
786
Chapitre 23
Quiz
1. API signie Application Programming Interface, soit Interface de programmation
dapplication.
2. Si Visual Basic comprend de nombreuses fonctions, il ne sait pas tout faire. Par
exemple, il ne comporte pas de fonction permettant de ramorcer le systme.
Les routines de lAPI Windows fournissent des fonctions systme auxquelles vous
pouvez accder depuis votre application Visual Basic.
3. Les DLL sont lies dynamiquement votre application au moment de lexcution, et
pas de la compilation. Ce qui signie que les ressources de la DLL ne sont pas mises
de ct par le systme dexploitation pendant toute la dure dexcution de votre
programme.
4. Quand Windows 95 est pass dans un environnement 32 bits, les noms de chiers des
DLL standards ont t modis. Pour distinguer les nouveaux chiers des anciens,
Microsoft a ajout 32 dans leur nom (par exemple, GDI32.DLL).
5. La Visionneuse dAPI est un outil que vous pouvez ajouter votre environnement
Visual Basic ( laide du menu Complments). Il permet de slectionner les routines
API dans des listes et den consulter la dclaration. Vous pouvez alors les copier et
les coller dans vos propres applications.
6. Linstruction Declare dclare les routines de lAPI Windows.
7. Faux. Il ny a pratiquement rien de normalis dans les routines de lAPI. Mme
parmi des familles de routines semblables, les listes darguments peuvent diffrer
considrablement, comme les types de donnes renvoys dans le cas des fonctions.
8. Linstruction Declare informe Visual Basic de lendroit o se trouve la routine
externe de lAPI Windows et de sa liste darguments. Visual Basic ne reconnat pas
ces routines externes car il contient son ensemble propre de fonctions internes, qui
sont diffrentes des procdures Windows. Linstruction Declare permet Visual
Basic de localiser et de se connecter correctement la routine API que vous avez
besoin dappeler depuis votre application.
9. Utilisez le qualiant Private quand vous dclarez des routines de lAPI Windows
depuis un module de feuille.
10. Une procdure denrobage est du code Visual Basic plac autour dun appel lAPI
Windows. Vous pouvez placer ces procdures dans un module de code rutilisable
quand une application Visual Basic a besoin des routines API. Au lieu de lancer la
787
<
:
Partie IV - Annexes
Exercice
La fonction GetSystemTime() est contenue dans le chier KERNEL32.DLL. Vous
pouvez le savoir en slectionnant la fonction dans la liste de la Visionneuse dAPI et
en consultant largument du nom de chier qui contient la fonction.
>
:
788
B
Prcdence des
oprateurs
Le Tableau B.1 liste lordre de prfrence des oprateurs. Il regroupe les oprateurs par
type dopration.
Tableau B.1 : Ordre des oprateurs dans Visual Basic
Arithmtiques
De comparaison
Logiques
Exponentielle (^)
Egalit (=)
Not
Ngation (-)
Diffrent de (<>)
And
Infrieur (<)
Or
Suprieur (>)
Xor
Eqv
Imp
Like, Is
789
C
Table des codes ASCII
Dec.
Hexa
ASCII
Dec.
Hexa
ASCII
00
null
31
1F
01
32
20
espace
02
33
21
03
34
22
"
04
35
23
05
36
24
06
37
25
07
38
26
&
08
39
27
'
09
40
28
10
0A
41
29
11
0B
42
2A
12
0C
43
2B
791
Partie IV - Annexes
>
:
792
Dec.
Hexa
ASCII
Dec.
Hexa
ASCII
13
0D
44
2C
14
0E
45
2D
15
0F
46
2E
16
10
47
2F
17
11
48
30
18
12
49
31
19
13
50
32
20
14
51
33
21
15
52
34
22
16
53
35
23
17
54
36
24
18
55
37
25
19
56
38
26
1A
57
39
27
1B
58
3A
28
1C
59
3B
29
1D
60
3C
<
30
1E
61
3D
62
3E
>
93
5D
63
3F
94
5E
64
40
95
5F
65
41
96
60
66
42
97
61
Dec.
Hexa
ASCII
Dec.
Hexa
ASCII
67
43
98
62
68
44
99
63
69
45
100
64
70
46
101
65
71
47
102
66
72
48
103
67
73
49
104
68
74
4A
105
69
75
4B
106
6A
76
4C
107
6B
77
4D
108
6C
78
4E
109
6D
79
4F
110
6E
80
50
111
6F
81
51
112
70
82
52
113
71
83
53
114
72
84
54
115
73
85
55
116
74
86
56
117
75
87
57
118
76
88
58
119
77
89
59
120
78
793
<
:
Partie IV - Annexes
>
:
794
Dec.
Hexa
ASCII
Dec.
Hexa
ASCII
90
5A
121
79
91
5B
122
7A
92
5C
123
7B
124
7C
155
9B
125
7D
156
9C
126
7E
157
9D
127
7F
158
9E
128
80
159
9F
129
81
160
A0
130
82
161
A1
131
83
162
A2
132
84
163
A3
133
85
164
A4
134
86
165
A5
135
87
166
A6
136
88
167
A7
137
89
168
A8
138
8A
169
A9
139
8B
170
AA
140
8C
171
AB
141
8D
172
AC
142
8E
173
AD
143
8F
174
AE
Dec.
Hexa
ASCII
Dec.
Hexa
ASCII
144
90
175
AF
145
91
176
B0
146
92
177
B1
147
93
178
B2
148
94
179
B3
149
95
180
B4
150
96
181
B5
151
97
182
B6
152
98
183
B7
153
99
184
B8
154
9A
185
B9
186
BA
217
D9
187
BB
218
DA
188
BC
219
DB
189
BD
220
DC
190
BE
221
DD
191
BF
222
DE
192
C0
223
DF
193
C1
224
E0
194
C2
225
E1
195
C3
226
E2
196
C4
227
E3
197
C5
228
E4
795
<
:
Partie IV - Annexes
>
:
796
Dec.
Hexa
ASCII
Dec.
Hexa
ASCII
198
C6
229
E5
199
C7
230
E6
200
C8
231
E7
201
C9
232
E8
202
CA
233
E9
203
CB
234
EA
204
CC
235
EB
205
CD
236
EC
206
CE
237
ED
207
CF
238
EE
208
D0
239
EF
209
D1
240
F0
210
D2
241
F1
211
D3
242
F2
212
D4
243
F3
213
D5
244
F4
214
D6
245
F5
215
D7
246
F6
216
D8
247
F7
248
F8
252
FC
249
F9
253
FD
250
FA
254
FE
251
FB
255
FF
Index
Symbols
= (argument nomm) 521
!, caractre de formatage de
chanes 263
, caractre de formatage de
nombres
%, caractre de formatage de
nombres 264
&, caractre de formatage de
chanes 263
&, oprateur 133
(Personnalis), proprit 283
*, joker 146
*, oprateur 133
+, oprateur 133
-, +, $, espace, caractres de
formatage de nombres 264
, oprateur 133
,, caractre de formatage de
nombres 264
., caractre de formatage de
nombres 264
/, caractre de formatage de
nombres 264
/, oprateur 133
<, caractre de formatage de
chanes 263
<, oprateur 144
<=, oprateur 144
<>, oprateur 144
<Code Non-Basic>, pile des appels 671
=, oprateur 144
>, caractre de formatage de
chanes 263
>, oprateur 144
Nombres
0, caractre de formatage de
nombres 264
A
A propos de
exemple de cration 575
modle de feuille 487
A propos, bote de dialogue 24
Abs(), fonction 240, 743
Accs fichiers 407
alatoire 392
Close, instruction 393
Get , instruction
Open, instruction 393
Put , instruction
Line Input , commande
Read 382
Read Write 382
Squentiel 385
Input , instruction
Print , instruction
Write , instruction
verrouillage
Lock Read 383
Lock Read Write 383
Lock Write 383
Shared 383
Write 382
Accs Internet 624
Accolades SendKeys 189
Activate, vnement 80, 348
Activation in-situ 506
ActiveX 35, 66, 274, 532
ADO 592
automatisation 536
Excel 536
contrles
ajout au projet 533
compiler 558
conception 542
dessins par
lutilisateur 544
exemple de cration
544
fichier excutable
534
implmenter 558
mthodes de test 559
sous-classs agrgs
544
sous-classs simples
544
tester 559
crer ses contrles 541
dans Netscape 533
documents ActiveX 626
797
Index
ActiveX (suite)
excution
lexcution 545
la conception 545
tlchargement de contrles
533
UserControl_Resize() 555
ActiveX Data Objects Voir
ADO
Add, mthode 520
AddItem, mthode 301, 307
Addition 133
AddNew, mthode 617
ADO 592
contrles 601
connexion aux
donnes 609
Data 593
DataCombo 593
DataList 593
Microsoft Jet 3.51
OLE DB Provider
610
mise jour des tables
615
parcours des donnes
613
ADO Voir aussi Contrles
ADO
Afficher la dfinition,
Explorateur dobjets 526
Aide
adapter une application
644
afficher dans lapplication
655
compiler 654
connexion lapplication
655
contextuelle 642
contrle Botes de dialogue communes 655
crer les sauts hypertexte
648
crer un fichier RTF 649
>
:
798
Index
Interface de contrles
ActiveX 547
Dfinition des attributs 551
dmarrage 548
Internet 620
Migration de document
ActiveX 628
conversion de
plusieurs feuilles 637
Rcapitulatif 631
types dapplications
converties 638
Astuce du jour 498
Afficher les astuces au
dmarrage (option) 498
Atn(), fonction 241
AutoActivate, proprit 509
Automatisation
ActiveX 536
in-situ 529
AutoRedraw, proprit 428
AutoSize, proprit 72
AutoTSize, proprit 542, 551
B
BackColor, proprit 276, 553
BackStyle, proprit 441
Barre donglets, contrle 496
Barres doutils 368
Dbogage 670
ImageList 369
Voir aussi Coolbars 372
Barres doutils Visual Basic 36
Dbogage 35
Editeur de code 35
Edition 35
Standard 35
Barres de dfilement 74, 467
Base de registres 499
Bases de donnes 578
assistant Cration dapplications 593
Classe 595
Code ADO 595
Contrle de donnes
ADO 595
Enregistrement
unique 594
Grille (feuille de donnes) 595
liens 595
MS Chart 595
MS HFlexGrid 595
Principale/secondaire 595
BIBLIO.MDB 582
champs 579
champs indexs 584
colonnes 579
compatibles ODBC 578
connexion Voir ODBCODBC
contrles avancs 592
contrles lis 587
dBase 578
donnes spares par des
virgules 578
dynaset 583
enregistrements 579
Feuilles de calculs Lotus
578
fichier squentiel 580
FoxPro 578
Gestionnaire de donnes
582
index 580
interrogation 580
jeu denregistrements 583
lignes 579
Microsoft Access 578
Microsoft Jet 3.51 OLE
DB Provider 610
NWIND.MDB 582
Paradox 578
pointeur denregistrement
591
recordset 583
799
<
:
Index
>
:
800
Boutons
Annuler 278
CancelError, proprit
279
MsgBox() 176
Boutons doption 73, 191
Boutons de commande 74
vnements 82
proprit Default 368
proprits 75
Boutons radio Voir boutons
doption
ByRef 737
ByRef, mot cl 235
Byte, type de donnes 121, 148
ByVal 737
ByVal, mot cl 235
C
C 11
C++ 11
CAB, fichiers 680
Calc.Vbp, projet 628
Call, instruction 228, 236, 715
CallDlls.VBP (projet exemple)
736
Canal de fichier 380
Cancel, proprit 75
CancelError, proprit 279
Caption, proprit 53, 76, 193
raccourcis clavier 190
Caractres de formatage
! 263
% 264
& 263
, 264
-, +, $, espace 264
. 264
/ 264
< 263
> 263
@ 263
\ 264
Index
\\ 264
0 264
Dates 265
E-, E+, e-, e+ 264
Case Voir Select Case
Casse 146, 188, 253
CBool(), fonction 248
CByte(), fonction 248
CCur(), fonction 248
CDate(), fonction 248
CDbl(), fonction 248
CDec(), fonction 248
CellPicture, proprit 726
Cellule de tableau 696
CenterCells(), procdure 716
Chanes 124
concatnation 133
de contexte (aide RTF)
648
Dclaration 130
Empty (mot cl) 125
Fonctions 250
Formatage 263
longueur fixe/variable 130
nulle 125
Champs 104
Champs (bases de donnes) 579
Change, vnement 81
ChangeSignal(), fonction 669
ChDir, commande 402
ChDrive, commande 402
CheckBox Voir Cases cocher
Chimes.wav (son) 569
chkLoadTipsAtStartup(), procdure 499, 504
CHM, extension de fichier 646
Choose(), fonction 241
Syntaxe 247
Chr(), fonction 251
CInt(), fonction 248
Circle, mthode 449
Cities, collection 520
Classes 543
Collection 520
ComboBox 524
proprits
Sorted 306
Style 306
Text 308
ComboBox, classe 524
COMDLG.DLL 733
Command, proprit 453
CommandButton, classe 513,
520
CommandButton, contrle Voir
Boutons de commande
Commandes
ChDir 402
ChDrive 402
Kill 402
lies aux fichiers 402
Line Input
MkDir 402
RmDir 402
Commentaires 18, 95
A COMPLETER 553
lignes commentes 553
Commissions sur les ventes
(exemple de contrle grille)
710
Common Dialog Voir Botes
de dialogue 271
Comparaisons 145
casse 146
conditionnelles 148
de chanes 145
If... Then 154
Select Case 157, 158
Compatibles 16 bits (DLL) 732
Compilation
application 677
code natif 679
icne de lapplication 679
informations de version
678
langages de programmation
10
nom dexcutable 678
Optimisations avances
(bouton) 679
801
<
:
Index
Complments
assistant Empaquetage et
dploiement 680
assistant Interface de
contrles ActiveX 547
assistant Migration de
document ActiveX 628
automatique dinstructions
59
charger au dmarrage 547
Gestionnaire de donnes
582
Visionneuse dAPI 739
Composants
bote de dialogue 534
Microsoft ADO Data Control 6.0 602
Microsoft Windows Common Controls 6.0 496
Compteur Voir For... Next
Concatnation 133
Condition 151
Conditionnels, oprateurs 144
ConnectionString, proprit
609
Connexion
modle de feuille 493
Connexion ODBC
modle de feuille 501
Connexion ouverte aux bases
de donnes Voir ODBCODBC
Const 554
Constantes 121
TIP_FILE 499
Constantes (Visionneuse
dAPI) 740
Constantes nommes 179
Flags 277, 281, 284
fonction LoadPicture()
437, 438
Mode 458
MsgBox() 177, 178, 180
ScaleMode 357
StartUpPosition 347
>
:
802
VarType() 244
vbInformation 554
vbWhite 554
Conteneur OLE 507
Contextuelle, aide 642
ControlBox, proprit 70
Contrle de donnes
Voir Contrle Data
Contrles
ActiveX 532
ajout au projet 533
compiler 558
conception 542
crer 541
dessins par
lutilisateur 544
exemple de cration
544
fichier excutable
534
implmenter 558
installation 681
mthodes de test 559
sous-classs agrgs
544
sous-classs simples
544
tester 559
ADO 592, 601
assistant Cration
dapplications 593
connexion aux donnes 609
Data 593
DataCombo 593
DataList 593
mise jour des tables
615
parcours des donnes
613
Barre donglets 496
Botes de dialogue
communes
Aide 655
CommandButton Voir
Boutons de commande
consulter le contenu
lexcution 670
Data 586, 588
configuration 587
utilisation avance
590
de bases de donnes
avancs 592
de transfert Internet 624
Frame Voir Frames
Gauge 532
grille 703
comprendre 704
enregistrer des images
726
en-ttes de lignes et
de colonnes 705
exemple dutilisation
710
lignes et colonnes
fixes 705
prparation 703
groupe 512
groupes 517, 569
Image 76, 436
ImageList 369, 372
insrables 66
Internet 622, 624
dencapsulation 624
Internet Explorer 625
intrinsques 66
Label Voir Labels
lis 587
Line 439
ListBox Voir Zones de liste
ListView 364
Microsoft Internet
Controls 625
Microsoft Internet
Transfer Control 6.0 625
Microsoft Winsock
Control 6.0 625
MSFlexGrid 703
MSMaskEdit 188
Index
Contrles (suite)
multimdia 450
Navigateur Web 622, 624
OCX 32 bits 532
OLE 507
OptionButton
Voir Boutons doption
passement 238
PictureBox 436, 462, 569
Shape 440
TextBox
amlioration par ActiveX 542
TextBox Voir Zones de
texte
TextSizeUL 543
Timer Voir Timer
Timer Voir Timer 310
Toolbar Voir Barres
doutils 368
TreeView 364
Winsock 624
Zone de liste Dossier 399
Zone de liste Fichier 399
Zone de liste Lecteur 399
Contrles dextension VBX
532
Contrles de fichiers 399
Controls, collection 517, 518
Conversion
chanes 250
types de donnes 241, 248
Coolbars 372
Image, proprit 373
page de proprits 374
Coordonnes
CurrentY/CurrentX 356
curseur texte 356
feuilles 346
imprimante 422
Move 300
ScaleMode 359
Copier-coller 294
Copies, proprit 288
Cos(), fonction 241
D
Data (contrle) 586, 588
configuration 587
utilisation avance 590
DatabaseName, proprit 588
DataField, proprit 589, 612
DataSource, proprit 588, 612
Date et heure 263
caractres de formatage
265
fonctions 256
fonctions de comparaison
258
Date, fonction 256
Date, type de donnes 124, 148
DateAdd(), fonction 258
Syntaxe 258
DateDiff(), fonction 258, 259
DatePart(), fonction 258
803
<
:
Index
Dsinstallation
de lapplication 686
ST6UNST.LOG 686
Dessin 435
contrles 438
Line 439
Shape 440
mthodes 445
Circle 449
Line 447
PSet 445
DeviceType, proprit 452
DHTML 627
applications Visual Basic
636
DialogTitle, proprit 276
Dim, instruction 127, 231, 316,
697
syntaxe 127, 130
Dir(), fonction 402
DisplayCurrentTip, mthode
499
Distribution
assistant Empaquetage et
dploiement 680
de lapplication 677
du code source 677
fichiers CAB 680
Division 133
par zro 667
DLL 630, 732
nature 734
Windows
COMDLG.DLL 733
GDI32.DLL 733
KERNEL32.DLL
733
MAPI32.DLL 733
NETAPI32.DLL 733
USER32.DLL 733
WINMM.DLL 733
Dll Document ActiveX, projet
627
DLL Runtime Visual Basic 679
Do, instruction Voir Do... Loop
>
:
804
Documentation 18, 94
Documents ActiveX 626
assistant de migration 628
Done, vnement 457
DoNextTip(), procdure 499
Donnes
noms de champs 580
Donnes (types de) 120??
Donnes, types de ??126
Dossiers
Windows 745
System 745
Temp 745
Drag, mthode 300
DragDrop, vnement 299
DragMode, proprit 299
DragOver, vnement 300
DVD 451
Dynamic Hypertext Markup
Language Voir DHTML
Dynamic Link Library
Voir DLL
Dynaset (bases de donnes) 583
E
E-, E+, e-, e+, caractres de formatage de nombres 264
E/S Voir Entres/sorties
Ecrans
Astuce du jour 498
daccueil 491
de prsentation 23
Editions de Visual Basic 13
Else, instruction Voir If... Then
ElseIf, instruction 155
Empaquetage et dploiement,
assistant 680
Empty, mot cl 125, 145, 183
Enabled, proprit 108
Encapsulation
dobjets 512
Internet 624
Index
clavier 184
Click 79, 80, 81, 185, 294,
296, 527, 574
DblClick 80, 81, 296
Deactivate 80, 348
Done 457
DragDrop 299
DragOver 300
feuilles 80
Form_Keypress() 493
Initialize 81
KeyDown 184, 186
KeyPress 184, 185
KeyUp 184, 187
Load 81, 302
MouseClick 551
MouseDown 296, 551
MouseMove 296
MouseUp 296
Paint 81
Resize 81, 348
Souris 294
StatusUpdate 453
Timer 312
Unload 81, 302
Voir aussi Procdures vnementielles
zones de texte 81
Excel 536
automatisation ActiveX
536
crer des feuilles de calcul
539
Exclusive, proprit 590
Exe Document ActiveX, projet
627
EXE standard 34
Excution
pas pas, dbogage 672
Excution (fentre de dbogage) 673
Exit Do, instruction 162
Exit Sub, instruction 235
Exit, instruction 154
Exp(), fonction 241
F
False
VarType() 244
Fentre Code
Listes Objet et Procdure
113
Fentre fille 366
Fentre parent 365
Fentres
Assistant Cration
dapplications
Connexion Internet
620
Bote outils
crer des onglets 535
805
<
:
Index
Feuilles (suite)
bote de dialogue
Connexion ODBC
501
bote de dialogue
Options 496
crer un nouveau
modle 502
cran Astuce du jour
498
cran daccueil 491
modifier 486
objet de dmarrage 492
parent 365
Print, instruction 425, 426
Print, mthode 353
PrintForm, mthode 427
proprits 70, 358
PSet 445
Resize 348
StartUpPosition 347
Unload 302
Fichiers
alatoires 392
binaire 510
CAB 680
canal 380
Close 384
commandes 402
contrles 399
CurDir() 402
de dpendances 681
Dir() 402
enregistrements 383
EOF() 414
FreeFile() 383
INI 752
Lecture/criture Voir
Accs fichiers 385
Mapi32.txt (API) 739
numros 383
Open 380
partags 684
>
:
806
ChangeSignal() 669
Choose() 241
Chr() 251
Chronomtriques 257
CInt() 248
CLng() 248
conversion 250
Cos() 241
CreateObject() 537
CSng() 248
CStr() 248, 250
CurDir() 402
CVar() 249
Date 256
Date et heure 256, 258
DateAdd() 258
DateDiff() 258, 259
DatePart() 258
DateSerial() 260
DateValue() 262
Day() 259, 262
Dclaration 236
Dir() 402
EOF() 414
Exp() 241
Fix() 239
Format() 263, 720
FreeFile() 383
GetObject() 537
GetText() 517
hscDecrease_Change()
722
hscIncrease_Change() 722
IIf() 241, 616
InputBox() 320
InputBox() Voir InputBox() 181
Int() 239
IsDate() 241
IsEmpty() 242
IsNull() 241, 242
IsNumeric() 241, 242
LCase() 254, 558
Left() 252
Len() 250
Index
Load_Tips() 499
LoadPicture() 173, 436,
726
LoadPicture()
Voir LoadPicture() 60
Log() 241
LTrim() 254
Mid() 252
Month() 259, 262
MsgBox() 495
MsgBox()
Voir MsgBox() 174
Now 256
Prives/publiques 236
PrReady() 431
ReverseIt() 254
Right() 252
RTrim() 254
Scientifiques 241
Sin() 241
Sous-chanes 252
Spc() 354, 386
Sqr() 240
Str() 250, 254
Tab() 355, 386
Tan() 241
Time 256
Timer 257
TimeSerial() 262
TimeValue() 262
Trim() 254
TypeOf() 513
UCase() 254, 558
Val() 250
VarType() 241
Weekday() 262
Year() 259, 262
Font, proprit 56, 193, 282,
424
FontBold, proprit 424
For Each, boucle 352, 517
For Each, instruction 352
For, instruction 163, 699
For... Next 163
Exit For 154
imbriques 165
Next Out 165
Step 163, 164
Voir aussi For Each 352
ForeColor, proprit 276
Form, classe 513
Form, objet 349
Form.Hide, mthode 346
Form.Show, mthode 346
Form_DragDrop(), procdure
vnementielle 299
Form_Keypress(), vnement
493
Form_Load(), procdure 489,
716
Form_Load(), procdure
vnementielle 192, 302, 346
Form_Resize(), procdure vnementielle 412
Form_Unload(), procdure vnementielle 346
Format(), fonction 263, 720
FormatString, proprit 724
Forms, collection 349, 491, 519
Forms,collection
Count,proprit 351
FORTRAN 8
Fournisseur de services Internet
620
Frames 192
FreeFile(), fonction 383
frmActiveX, feuille 559
FromPage, proprit 288
FrontPage Express
HTML 646
FTP 624
Function, mot cl 84
G
Gauge, contrle 532
GDI32.DLL 733
Gestionnaire de donnes 582
Get , instruction
H
HCW.EXE 654
Height, proprit 52, 56, 70
HelpContext, proprit 656
HelpContextID, proprit 646,
657
HelpFile, proprit 646, 656
Hritage (objets) 513
Hexadcimale, numrotation
103
807
<
:
Index
I
I/O Voir Entres/sorties
Icon, proprit 71, 679
Icnes
Barres doutils Voir ImageList 372
MsgBox() 180
Icnes:pointeur de la souris;
337
ID de contexte 650
conversion en numrique
656
If TypeOf, instruction 238, 424
If, instruction
Voir aussi If... Then
If... Then
And 152
Else 153
ElseIf 155
End If 151
imbriques 154, 155
Voir aussi IIf()
If... Then, instruction 176
>
:
808
Index
bases de donnes 580
Indices
collection Forms 349, 350
tableaux 314, 316, 319
zones de liste 305
Info Express, fentre 558
Info-bulles 36, 642
Infos systme 490
INI, extension de fichier 752
Initialize, vnement 81
InitScroll(), procdure 716
Input , instruction
Input/Output Voir Entres/
sorties 159
InputBox(), fonction 181, 320
syntaxe 182
In-situ
activation OLE 506
Inspection de donnes 241
Installation
contrle ActiveX 681
fichiers compresss 685
fichiers partags 684
Instance de classe 513
Instructions
Beep 153, 742
Call 228, 236, 715
Close 384
Declare 735
fonction API
format 736
procdure API
format 736
Dim 127, 231, 316, 697
Do Voir Do... Loop
Else Voir If... Then 153
ElseIf 155
End 93, 615, 638
End Function 84, 235
End If Voir If... Then
End Sub 235
Enum 554
Exit 154
Exit Do 162
Index
Interfaces
botes de dialogue
communes 275
de contrles ActiveX, assistant 547
Explorateur Windows 21
monodocument (SDI) 621
monoducument Voir SDI
multidocument Voir MDI
Internet 23
accs 624
applets Java 627
Application IIS 636
Applications DHTML 636
assistant Cration dapplications 620
client 636
contrles
dencapsulation 624
de transfert 624
Navigateur Web 622,
624
Winsock 624
contrles de la Bote
outils 622
DHTML 627
encapsulation 624
fournisseur de services
620
HTML 626
HTTP 621
Java 627
protocoles 620
FTP 624
Gopher 624
TCP 624
UDP 624
serveur 636
TCP/IP 620
URL 621
Internet Explorer 372, 620
contrles 625
Internet Information Server
Voir IIS
Interprts, langages 10
Interrogations
bases de donnes 580
Interval, proprit 312, 574
Intranet 620
InvisibleAtRunTime, proprit
543
IsDate(), fonction 241
IsEmpty(), fonction 242
IsNull(), fonction 241, 242
IsNumeric(), fonction 241, 242
Item, mthode 520
Itrations 163
J
Java 627
applets 627
Jeux denregistrements 583
Jokers 146, 285, 403
K
K, Symbole daide RTF 649
KERNEL32.DLL 733
KeyAscii, argument 185
KeyCode, argument 186
KeyDown, vnement 184, 186
KeyPress, vnement 184, 185
KeyPreview, proprit 184, 189
KeyUp, vnement 184, 187
Kill, commande 402
KillDoc, mthode 423
L
Labels 54, 71
proprit AutoSize 72
proprit WordWrap 72
Langages de programmation 1,
8
BASIC 812
C 11
C++ 11
compils 10
809
<
:
Index
Langages de programmation
(suite)
interprts 10
Pascal 11
Visual C++ 13
Visual J++ 13
Langages de scripts
HTML 633
VBScript 634
lblTipText, tiquette 498
LCase(), fonction 254, 558
LCase, proprit 542
Lecture/criture de fichiers
Voir Accs fichiers 385
Left(), fonction 252
Left, proprit 52, 56, 67, 70
Len(), fonction 250
Len, option 397
Let, instruction 132
Let, procdure 553
Liaison et incorporation dobjets Voir OLE
Li, contrle 587
Lien dynamique 734
Lignes (bases de donnes) 579
Lignes demballage 112
Like, oprateur 146
Line Input , commande
Line, contrle 439
BorderColor, proprit
440
BorderStyle, proprit 440
BorderWidth, proprit
440
Line, mthode 447
LisezMoi.txt, fichier 682
List, proprit 301
ListCount, proprit 305
ListIndex, proprit 304
ListView, contrle 364
Littraux 121
Load
vnement 302
Load, vnement 81
Load_Tips(), fonction 499
>
:
810
M
Main(), procdure 349
Maintenance 17
Maj (souris) 298
Aide
fichier de projet
section 657
MAP (section du fichier de projet daide) 657
MAPI32.DLL 733
Mapi32.txt 739
Mathmatiques, oprateurs 132
Matrices 695
MaxButton, proprit 71
MaxLength, proprit 73
MBASIC 9
MDI 21, 363, 644
assistant Cration dapplications 366
fentre fille 366
fentre parent 365
Index
RemoveItem 304
SaveToFile 510
SetFocus 495
Show 501
ShowColor 275, 412
ShowFont 275
ShowHelp 275, 656
ShowOpen 275, 413
ShowPrinter 275
ShowSave 275
Update 616, 617
Microsoft
site Web 533
Word 364
Word 97, HTML 646
Microsoft ADO Data Control
6.0 602
Microsoft Calendar Control 8.0
274
Microsoft Common Dialog
Control 6.0 274
Microsoft FlexGrid Control 6.0
703
Microsoft Help Workshop 654
Microsoft Jet 3.51 OLE DB
Provider 610
Microsoft Multimedia Control
6.0 451
Microsoft Network 626
Microsoft Office 14
Microsoft Office Professionnel
639
Microsoft Windows Common
Controls 6.0, composant 369,
496
Microsoft Windows Custom
Controls 6.0 369
Microsoft Windows Custom
Controls-3 6.0 372
Microsoft Winsock Control 6.0,
contrle 625
Mid(), fonction 252
Migration de document
ActiveX, assistant 628
MinButton, proprit 71
811
<
:
Index
N
Name, proprit 41, 53, 560
Navigateur Web 23
contrle Internet 622, 624
NETAPI32.DLL 733
Netscape, support ActiveX 533
New 518
NewPage, mthode 420
Next Out, instruction
Voir For... Next
Next, instruction On Error 538
Next, instruction Voir For...
Next
Nombres
entiers Voir Integer
formatage 264
Nombres dcimaux
Voir Decimal
Noms
dobjets 42
de variables 129
Not, oprateur 149
Notation scientifique 122
Notify, proprit 457
Now, fonction 256
NULL 125, 145, 243
Numros de fichiers 383
Numrotation hexadcimale
103
O
Object, type de donnes 124,
238, 512, 537
Objets 30
ADO 592
classes 513, 543
de dmarrage 492
Debug 353
encapsulation 512
externes
OLE
externes 506
>
:
812
Form 349
groupes 517
hritage 513
noms 42
OLE
enregistrer le contenu
510
permanent 507
Printer 353, 419
Printers 416
programmation 512
RDO 592
Screen 346
sous-classer 543
systme 514
App 489
App.Major 575
App.Minor 575
App.Revision 575
App.Title 575
Clipboard 516
Debug 674
Err 538
Err.Number 668
TypeOf 513
OCX, contrles 532
ODBC (Open Database
Connectivity) 483
OLE (Object Linking and Embedding) 349, 506
activation in-situ 506
automatisation in -situ 529
conteneur 507
contrle 507
document WordPad 509
eobjet
enregistrer le contenu, objet 510
fichier binaire 510
incorporation 506
liaison 506
objet permanent 507
objets externes 506
type dobjet 508
Index
Options
bote de dialogue,
vrification automatique
de la syntaxe 666
modle de feuille 496
OPTIONS (section du fichier
de projet daide) 653
Or, oprateur 149
Oriente objet, programmation
512
Outils
de conversion, Visual
Basic Java 635
Explorateur dobjets 522
pointeur 71
P
Pages de proprits 283
Paint, vnement 81
Panneau de configuration,
Ajout/Suppression de programmes 686
Parenthses
oprateurs 134
Pas pas 672
Pascal 11
Passement 233
contrles 238
Par rfrence/par valeur
235
PasswordChar, proprit 73,
89, 493
P-Code (compilation) 679
Personnaliser
proprits 358
types de donnes 394
Phase de cration/phase
dexcution 73
Picture, proprit 76, 174, 436
PictureBox, contrle 436, 462,
569
Picture, proprit 436
Stretch, proprit 437
Prives
fonctions 236
procdures 228
Procdure vnementielles 82
Procdures 59
CenterCells() 716
chkLoadTipsAtStartup()
499, 504
cmdAni_Click() 574
cmdApply_Click() 497
cmdDecrease_Click() 722
cmdIncrease_Click() 722
Dclaration 229
DoNextTip() 499
Form_Load() 489, 716
Gnrales/de classe 226
Get 553
InitScroll() 716
Let 553
LoadNewDoc() 368
Main() 349
mnuHelpAbout_Click()
574
passement darguments
233
prives/publiques 228
Property Get 360
Property Let 361
SizeCells() 716
StartSysInfo 490
tbsOptions_Click() 497
UserControl_Resize() 555
Procdures vnementielles 79
Click 185
Form_DragDrop() 299
Form_Load() 192, 302,
346
Form_Resize() 412
Form_Unload() 346
LostFocus() 309
Procotoles
Internet, HTTP 621
Professionnelle (dition Visual
Basic) 592, 627
813
<
:
Index
>
:
814
CellPicture 726
Command 453
ConnectionString 609
ControlBox 70
Copies 288
Count 351, 519
CurrentX 356, 422
CurrentY 356, 422
DatabaseName 588
DataField 589, 612
DataSource 588, 612
Default 76, 368
DeviceType 452
DialogTitle 276
DragMode 299
du projet, bote de
dialogue, connexion de
laide 655
Enabled 108
EOF 591, 614
Exclusive 590
Feuilles 358
FileName 286
Filename 462
Filter 285
FilterIndex 286
Flags 277, 281, 284
Font 56, 193, 282, 424
FontBold 424
ForeColor 276
FormatString 724
FromPage 288
GridLines 707
Height 52, 56, 70
HelpContext 656
HelpContextID 646, 657
HelpFile 646, 656
Icon 71, 679
Image 373
Imprimante 417
Imprimer 424
Interval 312, 574
InvisibleAtRunTime 543
KeyPreview 184, 189
LCase 542
Index
ULText 551
UpdateInterval 456
Value 190
Wait 457
WhatsThisButton 658
WhatsThisHelp 658
WhatsThisHelpID 658
Width 52, 56, 70
WindowState 71
WordWrap 72, 708
Protocoles
Internet 620
FTP 624
Gopher 624
TCP 624
TCP/IP 620
UDP 624
Protocoles Internet 620
Prototype, dfinition 17
PrReady(), fonction 431
PSet, mthode 445
Pseudocode Voir P-Code
Public 520
instruction 316, 697
mot cl 229, 231
Publiques
fonctions 236
procdures 228, 229
Puissance 133
Put , instruction
Q
QBasic 1
Quest-ce que cest ? 642
Qualifiants
ByRef 737
ByVal 737
Const 554
New 518
Private 520
Public 520
QuickBASIC 9
R
Raccourcis clavier, Caption,
proprit 190
RDO 592
Read Write, modes daccs 382
Read, modes daccs 382
ReadFromFile, mthode 511
Rcapitulatif, fentre 631
Recordset (bases de donnes)
583
RecordSource, proprit 588,
612
Redondance
With End With 513
Relationnelles, bases de donnes
581
Relations
plusieurs--plusieurs 598
un--plusieurs 595
un--un 598
Remove, mthode 520, 521
RemoveItem, mthode 304
Resize, vnement 81, 348
Resize, proprit 348
ReverseIt(), fonction 254
Rich Text Format Voir RTF
Right(), fonction 252
RmDir, commande 402
Routines
dinstallation, tester 685
du systme dexploitation
734
RTF 647
aide, crercrer un fichier
649
chane de contexte 648
crer laide 647
prparer le fichier des sujets daide 647
soulignement double 648
soulignement simple 648
S
Sauts hypertexte 647
cration RTF 648
SaveSetting() (API) 753
SaveSetting, instruction 499
SaveToFile, mthode 510
ScaleMode, proprit 356, 421
constantes nommes 357
Screen, objet 346
Scripts
assistant Empaquetage et
dploiement 680
ScrollBars, proprit 74
SDI 21
versus MDI 364
Voir aussi Interface monodocument
Sections de dclarations 119
Select Case, instruction 156,
176, 574
Case Else 156
SelLength, proprit 516
SelStart, proprit 516
SelText, proprit 516
SendKeys, instruction 188, 495
Serveur 636
Set Printer, instruction 417
Set, instruction 367
Set, instructionSet 537
SetFocus, mthode 495
Setup.exe, fichier dinstallation
685
Setup.lst, fichier dinstallation
685
Shape, contrle, 440
815
<
:
Index
Shape, contrlecontrle
BackStyle, proprit 441
BorderColor, proprit
441
BorderStyle, proprit 441
BorderWidth, proprit
441
Shared, mode de verrouillage
383
Shift, argument 186
Show, mthode 501
ShowColor, mthode 275, 412
ShowFont, mthode 275
ShowHelp, mthode 275, 656
ShowInTaskbar, proprit 71
ShowOpen, mthode 275, 413
ShowPrinter, mthodes 275
ShowSave, mthode 275
Sin(), fonction 241
Single, type de donnes 148
SizeCells(), procdure 716
SizeMode, proprit 509
Snapshot (bases de donnes)
583
Sons
Chimes.wav 569
Sorted, proprit 302, 306
Soulignement double (aide
RTF) 648
Soulignement simple (aide
RTF) 648
SourceSafe 47
Souris 294
Click, vnement 296
copier-coller 294
DblClick, vnement 296
Drag, mthode 300
DragDrop, vnement 299
DragMode, proprit 299
DragOver, vnement 300
Evnements 294
glisser-dposer 294, 299,
342
MouseDown, vnement
296
>
:
816
MouseMove, vnement
296
MousePointer, proprit,
constantes nommes 295
Move, mthode 300
pointeur 295
touches de contrles 298
Sous-chanes 252
Sous-classer 543
un contrle 546
Sous-routines 84
interrompre 235
Soustraction 133
Spc(), fonction 354, 386
SQL 612
Sqr(), fonction 240
ST6UNST.LOG, fichier de dsinstallation 686
Standard (dition Visual Basic)
586
StartSysInfo, procdure 490
StartUpPosition, proprit 71,
347
Constantes nommes 347
StatusUpdate, vnement 453
Step, instruction Voir For...
Next
Str(), fonction 250, 254
Stretch 437
Stretch, proprit 437
String, type de donnes 124,
148
Structure de programmes 226
Structured Query Language
Voir SQL
Style, proprit 76, 306
Sub, mot cl 84
Suffixes (types de donnes) 123
Support technique 45
Surchargs (oprateurs) 133,
145
Symboles de note de bas de
page (aide RTF) 648
System (dossier Windows) 745
Systme de numrotation
hexadcimal 103
T
Tab(), fonction 355, 386
TabIndex, proprit 77, 78
Table ASCII Voir ASCII
Tableaux 314
une dimension 694
Array(), fonction 319
boucles For 699
cellules 696
colonnes 695
dclaration 316
clause To 318
Dim, instruction 316
indices 314, 319
Option Base 1,
instruction 316
initialiser 701
lignes 695
multidimensionnels 694
dclaration 697
formats de dclaration
697
indices 695
nombre de dimensions 697
parallles 321
Public, instruction 316
recherche de donnes 322
types de donnes 317, 696
Tables 695
bases de donnes 580
TabStrip Voir Barre donglets
Tan(), fonction 241
tbsOptions_Click(), procdure
497
TCP 624
TCP/IP 620
Temp (dossier Windows) 745
Tests 664
en parallle 687
routine dinstallation 685
Index
U
UCase(), fonction 254, 558
UCase, proprit 542
UDP 624
ULText, proprit 551
Un--plusieurs, relation 595
Un--un, relation 598
Underscore 96, 128
Uniform Ressource Locator
Voir URL
Unload
vnement 302
Unload Me, instruction 493
Unload, vnement 81
Until, instruction
Voir Do... Loop 160
Update, mthode 616, 617
UpdateInterval, proprit 456
URL 621
User Datagram Protocol Voir
UDP
USER32.DLL 733
UserControl_Resize(), procdure 555
UserControl1 544
V
Val(), fonction 250
Valeur absolue 240
Valeur dindex Voir Indices
314
Valeur de renvoi 84
Value, proprit 190
Variables 126132
automatiques 367
compteur Voir For... Next
de contrles 238
dclaration 127
globales 230
emploi 495
locales 127, 230
modifier en cours
dexcution 673
noms 129
passes 233, 234
portes 230
prfixes 129
statiques 367
systme
AppPath 683
ProgramFiles 683
tableaux Voir Tableaux
314
Variables locales (fentre de
dbogage) 674
Variant, type de donnes 124,
148
VarType()
constantes nommes 244
fonction 241, 244
VBA 14
VBD, extension 631
vbInformation, constante
nomme 554
VBScript 633
vbWhite, constante nomme
554
VBX
contrles dextension 532
817
<
:
Index
Vrification automatique de la
syntaxe, option 666
Vido 460
contrle PictureBox 462
Visionneuse dAPI 739
constantes 740
dclarations 740
option Private 739
option Public 739
types 740
Visionneuses
de fichier daide 647
Visual Basic
compilation 677
complments
assistant Empaquetage et dploiement
680
assistant Interface de
contrles ActiveX
547
assistant Migration de
document ActiveX
628
charger au dmarrage
547
gestionnaire de
donnes 582
visionneuse dAPI
739
composants, Microsoft
ADO Data Control 6.0
602
conversion vers Java,
outils 635
Crateur de menus 488
dbogueur
utilisation 668
dimensions des tableaux
697
DLL Runtime 679
dition Entreprise 592
ditions
Entreprise 627
>
:
818
Professionnelle 592,
627
Standard 586
Visual Studio 592
exemples, Calc.Vbp 628
mots-cls
ByRef 737
ByVal 737
Const 554
Dim 697
New 518
Private 520
Public 520
programmation structure
715
Visual Basic eXtended
Voir VBX
Visual Basic for Applications
14
Visual C++ 13, 532
Visual J++ 13, 636
Visual Studio 13
Visual Studio (dition Visual
Basic) 592
W
Wait, proprit 457
Wav, fichiers 567
Weekday(), fonction 262
WhatsThisButton, proprit
658
WhatsThisHelp, proprit 658
WhatsThisHelpID, proprit
658
While, instruction Voir Do...
Loop
Width, proprit 52, 56, 70
Win32api.txt 739
Windows
API 732
Windows Help Viewer 647
Windows Paint 546
WindowState, proprit 71
WinHelp, aide 645
WINMM.DLL 733
Winsock, contrle Internet 624
With End With, instructions
513
WordPad 508
WordWrap, proprit 72, 708
World Wide Web 620
Write , instruction
Write, modes daccs 382
WYSIWYG 1
X
Xor, oprateur 149
Y
Year(), fonction 259, 262
Z
Zones de liste 73, 301, 327
AddItem, mthode 301
Clear, mthode 306
Dossier, contrle 399, 401
Fichier, contrle 399, 401
indices 305
Lecteur, contrle, contrle
399
Lecteur, contrlecontrle
400
List, proprit 301
ListCount, proprit 305
ListIndex, proprit 304
MultiSelect, proprit 327,
335
RemoveItem, mthode 304
simples 301
Sorted, proprit 302
Text, proprit 303
Voir aussi ComboBox 306
Zones de texte 72
vnements 81
proprits 73, 89
Microsoft
Visual Basic 6
Grce cet ouvrage, vous matriserez trs rapidement les techniques de programmation en
Visual Basic 6, des plus simples aux plus complexes. Un enseignement progressif et des exer-
Catgorie : Programmation
Configuration : Windows / Linux
ISBN : 978-2-7440-4082-5