Accueil‎ > ‎

interface-HTA

 
La question sur la manière de donner une interface au script VBS revient souvent ..
Le HTA (Html Application) est l'une des solutions.
Cet article va vous aider à débuter avec hta.

Table des matières

  1. I. C'est quoi le HTA ?
    1. I-A. Présentation
    2. I-B. Exécution d'une application HTA
    3.  I-C. Sécurité
    4. I-D. L'application "bonjour tout le monde"
      1.     =>Télécharger l'application 'Bonjour tout le monde'
  2. II. Le Tag HTA:APPLICATION
  3. III. Mettez des contrôles dans vos applications
    1. III-A. Ajout d'un bouton
      1.    => Télécharger les 'applications Bouton'
    2. III-B. Un champ de saisie (textbox)
    3. III-C. Boutons radio
    4. III-D. Les Checkbox
    5. III-E. Liste de choix (donnés fixes)
    6. III-F. Liste de choix de données dynamique
    7. III-G. Zone de saisie texte multilignes
    8. III-H. Sélection d'un fichier
    9. III-I. Télécharger l'application 'Controles'
    10. III-J. Utiliser un timer
      1. => Télécharger l'application Timer
  4. IV. Travailler sur les fichiers
    1. IV-A. Introduction au FileSystemObject dans un HTA
    2. IV-B. Un exemple d'utilisation
      1. => Télécharger l'application ScriptingRuntime
  5. V. Accéder à la base de registre
    1. V-A. Introduction : la base de registre en VBS
    2. V-B. Un exemple d'utilisation
      1. =>Télécharger l'application Accés au registre
  6. VI. Utiliser WMI
    1. VI-A. Introduction WMI
    2. VI-B. Exemple d'utilisation
      1. => Télécharger l'application exemple WMI
  7. VII. Utiliser un ActiveX et Appel à une "sous-vue" modale
    1. VII-A. Introduction
    2. VII-B. Exemple d'utilisation
      1. => La fenêtre principale
      2. => "Sous-vue"
      3. => Télécharger l'application exemple Appel "Sous-Vue" & ActiveX
  8. VIII. Mise en forme application
    1. VIII-A. Introduction
    2. VIII-B. Taille de l'application
    3. VIII-C. Couleur de fond
    4. VIII-D. Ligne horizontale
    5. VIII-E. Un cadre
    6.  => Télécharger l'application exemple Mise en forme



I. C'est quoi le HTA ?

I-A. Présentation

Une Application HTA est constituée d'un fichier texte, avec une extension .HTA. Sa structure est similaire à une page html standard, avec en supplément un tag HTA application :

<HTML>
	<HEAD> 
		<TITLE>Structure d'une application HTA</TITLE>
		<HTA:APPLICATION ID = 'AppBase'>
	</HEAD>
	<BODY>
		Une application HTA de BASE
	</BODY>
</HTML>

Introduction to HTML Applications (HTAs)

I-B. Exécution d'une application HTA

Les applications HTA sont disponibles sous Windows depuis l'arrivée d'Internet Explorer 4. Les fichiers avec l'extension .HTA sont associés à "Microsoft (R) HTML Application host", mshta.exe. Ils sont donc exécutables par un simple double-clic sur le fichier .HTA considéré.

I-C. Sécurité

Les Sécurités appliquées aux applications HTA sont un peu différentes de celles appliquées aux pages HTML. Ainsi, une application HTA a accès au système de fichiers (FileSystemObject) , à la base de registre, ainsi que à la technologie WMI.

I-D. L'application "bonjour tout le monde"

Pour ne pas échapper à la tradition de la première application "Hello World", voici un exemple de code, qui permet aussi de voir l'emplacement du code VBScript dans l'entête du fichier.

<HTML>
	<HEAD> 
		<TITLE>Application : Bonjour tout le monde</TITLE>
		<HTA:APPLICATION ID = 'AppBonjour'>
			<script language="VBScript">
			Sub Window_onLoad
				msgbox "Bonjour tout le monde",vbExclamation ,"interface-hta"
			End Sub
		</script>
	</HEAD>
	<BODY>
		B'jour tous.
	</BODY>
</HTML>

L'action événementielle "Window_OnLoad" est exécutée au démarrage de l'application.

Image non disponibleApplication 'Bonjour tout le monde'

Télécharger l'application 'Bonjour tout le monde'

BonjourLeMonde.hta

II. Le Tag HTA:APPLICATION

L'application hta est caractérisée grâce à un tag "HTA:APPLICATION" dont les attributs définissent l'apparence et le comportement.

Les propriétés de HTA:APPLICATION
  • ID : Chaîne de caractères, identifiant de l'application, permettant ensuite au script d'accéder à l'application.
  • APPLICATIONNAME : Nom de l'application
  • CAPTION : 'yes' ou 'no' : définit si la barre de titre est affichée ou pas.
  • ICON : Chemin complet du fichier icône (.ico) 32x32 associé à l'application. L'icône apparaît, l'icône apparaît dans la liste des tâches, la liste des application en cours ( ALT-TAB) , en haut à gauche de la fenêtre application...
  • VERSION : Version de l'application.
  • INNERBORDER : 'yes' ou 'no' : définit si la bordure intérieure "3D" de la fenêtre est affichée ou pas.
  • MAXIMIZEBUTTON : 'yes' ou 'no' : affichage du bouton d'agrandissement. Avec 'no' disparaît, ou passe en grisé si le bouton de réduction est présent
  • MINIMIZEBUTTON : 'yes' ou 'no' : affichage du bouton de réduction. Avec 'no', disparait ou passe en grisé si le bouton d'agrandissement est présent
  • CONTEXTMENU : 'yes' ou 'no' , affichage du menu contextuel (clic sur la fenêtre, du bouton droit de la souris)
  • NAVIGABLE : 'yes' ou 'no' , pour yes la navigation s'effectue dans la fenêtre courante, pour no : une nouvelle fenêtre est ouverte lors d'une action sur un lien.
  • SCROLL
    • 'yes' : Affichage des barres de défilement
    • 'no' : Les barres de défilement ne sont pas affichées
    • 'auto' : Les barres de défilement apparaissent automatiquement lorsque le contenu de la fenêtre le réclame.
  • SCROLLFLAT :'yes' ou 'no' : Définit l'aspect visuel des scrollbar , avec pour 'no' aspect 3D et pour 'yes' aspect "plat" (sous XP, le changement d'aspect n'est pas vraiment flagrant..)
  • SELECTION : 'yes' ou 'no' : à "yes" par défaut, autorise la sélection de texte ... dans l'application HTA.
  • SHOWINTASKBAR : 'yes' ou 'no' : définit si l'application apparaît ou pas dans la barre des tâches.
  • SINGLEINSTANCE : 'yes' ou 'no' : à 'yes' n'autorise qu'une seule instance de l'application HTA (pour que la limitation fonctionne il est nécessaire de renseigner l'attribut ApplicationName)
  • SYSMENU : 'yes' ou 'no' Définit l'affichage du menu système ( lors du clic sur icône en haut à gauche), à no, les boutons 'réduction' et 'agrandissement' de la fenêtre sont aussi masqués.
  • BORDER
    • 'thick' : Bord "épais" et fenêtre redimensionnable
    • 'thin' : Bord "fin" et fenêtre non-redimensionnable.
    • 'dialog' : Bord standard fenêtre de dialogue.
    • 'none' : fenêtre sans bords (et sans barre de titre).
  • BORDERSTYLE : (définit les bords de la fenêtres, difficile de voir les différences entre les diverses versions ..)
    • 'normal' : valeur par défaut, bordure standard
    • 'complex' : bord de la fenêtre avec effet 3D plus accentué.
    • 'raised' : bord de la fenêtre avec un effet 3D moins accentué.
    • 'static' : bord de la fenêtre effet 3D plutôt fin
    • 'sunken' : bord 3D épais
  • WindowState
    • 'normal' : Défaut, taille par défaut des fenêtres d'Internet explorer.
    • 'minimize' : Application minimisée, dans barre de tâches.
    • 'maximize' : Application "plein écran".

Je ne vais pas vous détailler ici l'utilisation de toutes ces propriétés. Je vous laisse les découvrir, sachant que les valeurs soulignées sont les valeurs utilisées par défaut pour la propriété considérée.

III. Mettez des contrôles dans vos applications

L'ajout de contrôles dans vos applications .HTA, s'effectue de la même manière que pour les pages HTML.

III-A. Ajout d'un bouton

Pour lier le bouton au script associé on peut utiliser la propriété "onClick" du bouton.

<HEAD>
<TITLE>Un Bouton</TITLE>
<HTA:APPLICATION
      APPLICATION="htaBouton"
  
 > 
 </HEAD>
 <script language="VBScript">
      Sub tstBouton
           MsgBox "Action sur le bouton",vbExclamation,"interface-hta"
      End Sub
 </SCRIPT>
 <BODY>
 <input type="button" value="Actionnez ce bouton" onClick="tstBouton">
 </BODY>
Image non disponible

Cependant, je préfère utiliser une autre façon pour lier le bouton au script, en créant un fonction événementielle associée au clic sur le bouton.

<head>
<title>Un 2' Bouton</title>
<HTA:APPLICATION
      APPLICATION="htaBouton"
  
 > 
 </head>
 <script language="VBScript">
      Sub tstBouton_OnClick
           MsgBox "Action sur le bouton",vbExclamation,"interface-hta"
      End Sub
 </script>
 <body>
 <input type="button" value="Actionnez ce bouton" name="tstBouton">
 </body>

Télécharger les 'applications Bouton'

boutons.zip

III-B. Un champ de saisie (textbox)

Pour disposer d'un champ de saisie, inspirez-vous de ce code :

Saisir votre nom : <INPUT TYPE="text" NAME="txtNom" SIZE="20" MAXLENGTH="30" VALUE="bbil">

avec txtNom comme nom du contrôle, donnant ensuite au code VBScript l'accès à la valeur saisie grâce à sa propriété .value:

 MsgBox "Votre Nom est : " & txtNom.value
Image non disponible

Dans le cas de saisie de mot de passe, il est possible de rendre invisible les caractères saisis en modifiant le type de "text" à "password"

<INPUT TYPE="password" NAME="txtMotDePasse" TITLE="Saisir votre mot de passe" SIZE="20" MAXLENGTH="30" VALUE="">

L'attribut TITLE permet de définir un Tooltiptext, chaîne de caractères qui apparaît dans la bulle d'information lorsque l'utilisateur passe le curseur de la souris sur le boutton.

III-C. Boutons radio

Le type radio permet de donner le choix entre plusieurs propositions (un seul choix possible) :

 Votre couleur préférée : <BR>
<INPUT TYPE="radio" NAME="optCouleur" VALUE="Bleu" CHECKED>Bleu<BR>
<INPUT TYPE="radio" NAME="optCouleur" VALUE="Rouge">Rouge<BR>
<INPUT TYPE="radio" NAME="optCouleur" VALUE="Vert">Vert<BR>
<BR>
Image non disponible

Ensuite l'on teste la propriété checked de chacun des éléments du groupe de case à cocher :

if optCouleur(0).Checked  then  msgbox "Couleur choisie : bleu"
if optCouleur(1).Checked  then  msgbox "Couleur choisie : Rouge"
if optCouleur(2).Checked  then  msgbox "Couleur choisie : Verte"

On peut aussi utiliser une bouche for, grâce à la propriété length qui renvoie le nombre de cases à option dans le groupe, et à la propriété value :

Dim stCouleur
Dim i 
for i = 0 to optCouleur.length -1
	if optCouleur(i).Checked then 
		stCouleur = optCouleur(i).value
		exit for
	end if
next

III-D. Les Checkbox

Les checkbox s'utilisent de la même manières que les radios bouton. La différence tient dans le fait que plusieurs cases peuvent être cochées simultanément.
Le code pour ajouter les chekbox à l'application :

<BR>
Vos moyens de transport préférés ? : <BR>
<INPUT TYPE="checkbox" NAME="chkTransport" VALUE="Vélo" CHECKED>Vélo<BR>
<INPUT TYPE="checkbox" NAME="chkTransport" VALUE="Voiture"CHECKED>Voiture<BR>
<INPUT TYPE="checkbox" NAME="chkTransport" VALUE="Marche">Marche a pied<BR>
<INPUT TYPE="checkbox" NAME="chkTransport" VALUE="train" >Train<BR>
<INPUT TYPE="checkbox" NAME="chkTransport" VALUE="bus">Bus
Image non disponible

Pour la partie VBScript, on utilise le même principe que pour les radios boutons:

For i = 0 to chkTransport.length - 1
	if chkTransport(i).checked then
		stTransport = stTransport & chkTransport(i).value & ", "
	end if
next

III-E. Liste de choix (donnés fixes)

<SELECT NAME="lstChaines" SIZE=4 onChange="ChoixChaine">
<OPTION VALUE="TF1">TF1
<OPTION VALUE="FR2">France 2
<OPTION VALUE="FR3" SELECTED>France 3
<OPTION VALUE="C+" >CANAL PLUS
</SELECT> 

Le paramètre facultatif SIZE permet de définir le nombre d'éléments de la liste visibles simultanément.

Image non disponible

La propriété : "MULTIPLE" permet d'autoriser les choix multiples dans la liste :

 Sports pratiqués : <BR>
 <SELECT NAME="lstSports" SIZE=4 MULTIPLE>
<OPTION VALUE="rugby">rugby
<OPTION VALUE="foot">foot
<OPTION VALUE="basket-ball" SELECTED>Basket
<OPTION VALUE="hand-ball" >Hand
</SELECT>
  <BR><BR>
Image non disponible

La propriété "Selected" permet d'extraire les éléments choisis de la liste

For i = 0 to lstSports.length - 1
	if lstSports(i).Selected then
		stSport = stSport & lstSports(i).value & " "
	end if
next

III-F. Liste de choix de données dynamique

Les éléments compris dans la liste de choix peuvent être définis à l'ouverture de l'application
Dans la partie "Body" du HTA l'on place la déclaration de la liste :

<SELECT NAME="lstDyn">
</SELECT>

Puis cette liste peut être renseignée par exemple à l'ouverture de l'application :

Sub Window_Onload 
'Liste box dynamique:
For i = 1 to 10
	Set oOption = Document.createElement("OPTION")
	oOption.Text = "Opt" & i
	oOption.Value = "Option " & i
	lstDyn.Add(oOption)
next
end sub

III-G. Zone de saisie texte multilignes

TEXTAREA permet de définir une zone de saisie :

Vos commentaires <BR>
<TEXTAREA NAME="txtCommentaires" ROWS="3" COLS="40" >
</TEXTAREA>
Image non disponible

Ses attributs facultatifs sont ROWS pour le nombre de lignes, COLS le nombre de colonnes.
Et READONLY pour un champ à afficher seulement.
L'attribut NAME est utilisé dans le code VBScript pour accéder aux données saisies:

Msgbox txtCommentaires.Value ,vbEclamation,"Vos commentaires"

III-H. Sélection d'un fichier

Le tag INPUT de type 'file' permet l'appel de la fenêtre de sélection d'un fichier :

<INPUT TYPE="file" NAME="inFichier" SIZE="30" onChange="choixfichier">
Image non disponible
Sub ChoixFichier
	msgbox inFichier.value
end sub

III-I. Télécharger l'application 'Controles'

controles.zip

III-J. Utiliser un timer

Il ne s'agit pas à proprement parler d'un contrôle, mais de la procédure SetInterval, qui permet de simuler le fonctionnement d'un timer tel qu'on le trouve dans VB6.
Initialisation du timer

MonTimer = window.setInterval ("MonScript", 500, "VBScript") 'Appel de MonScript toutes les 1/2 secondes

La variable "MonTimer" permet ensuite de Stopper le timer si nécessaire

window.ClearInterval MonTimer



Un exemple d'utilisation d'un timer :

<html>
	<HEAD> 
		<TITLE>Application : Test d'un timer</TITLE>
		<HTA:APPLICATION ID = 'AppTimer'>
	<script language="VBScript">
	    dim MonTimer
		Sub Window_onLoad
			tb1.width=1
			StartTimer
		End Sub
		Sub StartTimer
			bpTimer.setAttribute "disabled", true
			bpStop.setAttribute "disabled", false
			MonTimer = window.setInterval ("MonScript", 500, "VBScript") 'Appel de MonScript toutes les 1/2 secondes
		End sub
		sub MonScript
			tb1.width = tb1.width+10
			if tb1.Width > 600 then tb1.Width =1
		End Sub
		Sub bpStop_OnClick
			bpTimer.setAttribute "disabled", false
			bpStop.setAttribute "disabled", true
			window.ClearInterval MonTimer
		end sub
		</script>
	</HEAD>
	<BODY>
		</TABLE>
<TABLE id="tb1" bgColor=green
 height=10 width=0
 cellSpacing=0 cellPadding=0 border= 0>
 <TR><TD></TD></TR>
</TABLE><BR>
 <input type="button" value="Start Timer" name="bpTimer" OnClick="StartTimer" title="Relance le timer">
 <input type="button" value="Stop Timer" name="bpStop" title="Met fin au timer">
	</BODY>
</html>

Image non disponible

Télécharger l'application Timer

Timer.zip

IV. Travailler sur les fichiers

IV-A. Introduction au FileSystemObject dans un HTA

Les sécurités relatives au HTA vous permettent d'accéder à la bibliothèque "Scripting Runtime library". Fichiers : le FileSystemObject

IV-B. Un exemple d'utilisation

Le code suivant reprend l'exemple standard d'un mini-éditeur de texte :

<html>
	<HEAD> 
		<TITLE>Application : accès au fichier</TITLE>
		<HTA:APPLICATION ID = 'AppScripting'>
	<script language="VBScript">
Sub ChoixFichier 
Const ForReading = 1, ForWriting = 2 
Dim oFso, f
Dim stFichier
stfichier = inFichier.value
Set oFso = CreateObject("Scripting.FileSystemObject")
if oFSO.FileExists(stfichier) then
	Set f = oFso.OpenTextFile(stFichier, ForReading)
	txtFichier.value = f.ReadALL
	f.Close
 else
	msgbox "Fichier " & vbCrlf & stFichier & vbCrlf & "Inaccessible !",vbCritical,"interface-hta"
end if
  set f = Nothing
  set oFso = Nothing
end sub
' 
' Sauvegarde du fichier texte
'
Sub btSauver_OnClick
Const ForReading = 1, ForWriting = 2 
Dim oFso, f
Dim stFichier
stfichier = inFichier.value
Set oFso = CreateObject("Scripting.FileSystemObject")
  Set f = oFso.OpenTextFile(stFichier, ForWriting)
  f.write txtFichier.value
  f.close
  set f = Nothing
  set oFso = Nothing
end sub

	</script>
	</HEAD>
	<BODY>

  <INPUT TYPE="file" NAME="inFichier" SIZE="60" onChange="choixfichier">
  <input type="button" value="Sauver" name="btSauver" >
  <BR>
  <TEXTAREA NAME="txtFichier" ROWS="40" COLS="100" >
</TEXTAREA>
	
	</BODY>
</html>
Image non disponible

Télécharger l'application ScriptingRuntime

ScriptingRuntime.zip

V. Accéder à la base de registre

V-A. Introduction : la base de registre en VBS

Les sécurités des applications HTA permettent l'accès à l'objet Wshell et ses trois méthodes destinées à la gestion de la base de registre :

  1. RegWrite : pour écrire dans la base de registre
  2. RegRead : pour lire une entrée de la base de registre
  3. RegDelete : pour effacer une clef ou sa valeur de la base de registre

Pour plus d'informations, consultez la FAQ VBScript :
VBScript : Manipuler la base de registre

V-B. Un exemple d'utilisation

Pour cet exemple j'ai choisi de donner une interface à une Q/R de la FAQ :
Comment désactiver le gestionnaire des tâches ou la séquence de touches Ctrl-Alt-Suppr ?
Lors de la procédure "Windows_OnLoad" la valeur de la clé est lue et l'état des boutons radios est mis à jour, l'utilisation de la gestion d'erreur permet de traiter le cas ou la clé d'inhibition n'existe pas (par défaut à la première utilisation).

<html>
	<HEAD> 
		<TITLE>Application : accès au registre Windows</TITLE>
		<HTA:APPLICATION ID = 'AppRegistre'>
	<script language="VBScript">
	   '
	   ' A l'ouverture de l'application lecture de la valeur courante de la clef de registre concernée
	   '
	   		Const CLEGTACHE="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr"
		Dim WshShell 'variable globale WshShell

		Sub Window_onLoad
		   
		   dim stDisable
			stDisable = ""
			Set WshShell = CreateObject("WScript.Shell")
			On Error resume next ' Si la clef de registre n'existe pas l'on garde la valeur "".
			stDisable = WshShell.RegRead (CLEGTACHE)
			On Error Goto 0
			if stDisable = "" then optGtaches(0).Checked = true else optGTaches(1).checked = true
    	End Sub
		Sub btValider_OnClick
			dim stDisable
			if optGtaches(0).Checked then stDisable ="" else stDisable="1"
			 WshShell.RegWrite CLEGTACHE,stDisable
		end sub
	</script>
	</HEAD>
	<BODY>
Gestionnaire de tâches : <BR>
<INPUT TYPE="radio" NAME="optGTaches" VALUE="Actif" >Actif<BR>
<INPUT TYPE="radio" NAME="optGTaches" VALUE="Inactif">Inactif<BR>
<input type="button" value="Envoi" name="btValider" >
	</BODY>
</html>

Image non disponible

Télécharger l'application Accés au registre

AccesRegistre.zip

VI. Utiliser WMI

VI-A. Introduction WMI

Une application HTA peut-être utilisée pour exécuter des requêtes WMI
Voir la WMI : Windows Management Instrumentation

VI-B. Exemple d'utilisation

Un exemple d'utilisation : Lister les partages d'un ordinateur :

<html><HEAD> 
		<TITLE>Application : Partages</TITLE>
		<HTA:APPLICATION ID = 'AppWMIPartages'>
	<script language="VBScript">
Sub Window_onLoad

    Dim strObject
    Dim colShares
    Dim objWMIService, objShare

    Set objWMIService = GetObject( "winmgmts:" )
    Set colShares = objWMIService.ExecQuery( "Select * from Win32_Share" )
    For Each objShare In colShares
        Document.Write objShare.Name & " [" & objShare.Path & "]<BR/>"
    Next

End Sub
</script>
	</HEAD>
	<BODY>
		
	</BODY>
</html>

Image non disponible

Télécharger l'application exemple WMI

Wmi-partage.zip

VII. Utiliser un ActiveX et Appel à une "sous-vue" modale

VII-A. Introduction

Pour utiliser un activeX dans une page HTML (ou HTA), on a besoin de son CLSID. Celui du contrôle MonthView utilisé est : 232E456A-87C3-11D1-8BE3-0000F8754DA1
Le code d'affichage du contrôle Monthview devient :

<OBJECT	
   classid="clsid:232E456A-87C3-11D1-8BE3-0000F8754DA1"
   id=cntMonthView
   align=left
   hspace=10
   vspace=0
>
</object>

Il existe plusieurs méthodes pour trouver le ClassID de l'objet. Pour ma par j'utilise COMView . L'id (ici cntMonthView) permet d'accéder aux propriétés et méthodes de l'instance de l'objet créé sur la vue.
Appel d'une "sous-vue": Pour afficher une boite de dialogue modale, on utilise la fonction ShowModalDialog qui prend pour paramètres :

  • Name : Nom du fichier Hta à afficher
  • arguments : Les arguments transmis à la boite de dialogue et récupérables dans celle-ci grâce à la propriété window.dialogarguments
  • Paramètres : les paramètres de la 'sous-vue'
    • center : (yes ou no) centrée ou pas dans l'écran
    • dialogwidth : Largeur de la fenêtre (en pixels par défaut)
    • dialogheight : Hauteur de la fenêtre (en pixels par défaut)
    • dialogtop : Distance du haut de l'écran au coin supérieur gauche de la fenêtre (en pixels par défaut)
    • dialogleft : Distance de la gauche de l'écran au coin supérieur gauche de la fenêtre (en pixels par défaut)
    • resizable : (yes ou no) définit si la taille de la fenêtre est modifiable par l'utilisateur
    • scroll : (yes ou no) définit si des barres de défilement sont visibles ou pas

Voir : MSDN - showModalDialog Méthode

La propriété returnValue permet le transfert de résultat de la sous-vue modale à la vue principale.

window.returnValue = cntMonthView.Value

VII-B. Exemple d'utilisation

La fenêtre principale

<HTML>
<head>
<title>Appel sous vue</title>
<HTA:APPLICATION
      APPLICATION="htaAppSousVue"
  
 > 
 </head>
 <script language="VBScript">
      Sub txtDate_OnClick
	   dim maDate
           maDate = ShowModalDialog("SousVue.hta",txtDate.Value, "dialogWidth=245px; dialogHeight=310px") 
            if maDate > 0 then
				txtDate.value =maDate
			end if
      End Sub
	  
 </script>
 <body>
Saisir Date: <INPUT TYPE="text" NAME="txtDate" SIZE="20" MAXLENGTH="30" VALUE="12/10/2009"><BR>
</body>
</HTML>
Image non disponible

La "Sous-vue"

<html>
	<HEAD> 
		<TITLE>Saisie date</TITLE>
		<HTA:APPLICATION ID = 'AppDate'
		APPLICATIONNAME="SaisieDate"
		MAXIMIZEBUTTON="no"
		MINIMIZEBUTTON="no"
		CONTEXTMENU="no"
		SYSMENU="no"
		SCROLL="no"
		>
	<script language="VBScript">
		Sub Window_onLoad
			DateInitiale =  window.dialogArguments 
			cntMonthView.value = DateInitiale
			window.resizeTo 245,310
		End Sub
		Sub cntMonthView_DateClick(ByVal DateClicked )
		'		msgbox DateClicked
		end sub
'
' Sortie par bouton validez
'
		Sub  btValid_OnClick
			window.returnValue = cntMonthView.Value
			window.Close 
		end sub
'
' Sortie par bouton annulez
'
		Sub  btAnnule_OnClick
			window.returnValue = -1
			window.Close 
		end sub
		
</script>
	</HEAD>

	<BODY>

<OBJECT
   classid="clsid:232E456A-87C3-11D1-8BE3-0000F8754DA1"
   id=cntMonthView
   align=left
   hspace=10
   vspace=0
>
</object>

 <input  type="button" value="Validez" name="btValid" STYLE="position: absolute; top: 240px; left: 10px; width : 100px;" >
 <input type="button" value="Annulez" name="btAnnule" STYLE="position: absolute; top: 240px; left: 125px; width : 100px;" >
	</BODY>
</html>
Image non disponible

Télécharger l'application exemple Appel "Sous-Vue" & ActiveX

AppelSousVueActiveX.zip

VIII. Mise en forme application

VIII-A. Introduction

Pour la mise en forme d'une application HTA, l'on retrouve les mêmes fonctions que pour des pages HTML standard. Je vous conseille donc en cas de "manque" pour réviser/améliorer vos connaissances sur le HTML et les feuilles de styles .Css. la consultation d'articles sur le HTML et le CSS.
tutoriels et cours (X)HTML
Tutoriels CSS

Dans cette section, je présenterai seulement un échantillon des possibilités de mise en forme.

VIII-B. Taille de l'application

La taille et la position de l'application peuvent être définies par un appel aux procédures window.moveTo et window.resizeTo

Sub Window_onLoad
	window.moveTo(0,0);
	window.resizeTo(400,200)
End Sub

VIII-C. Couleur de fond

La balise BODY, grâce à ses attributs,permet de modifier l'aspect général de l'application:

<BODY bgcolor="#66CCCC">

La balise BODY

VIII-D. Ligne horizontale

La balise <"HR"> permet l'ajout d'un trait horizontal de séparation à la form.

VIII-E. Un cadre

Un cadre similaire à ce que l'on trouve dans les boîtes de dialogues standard avec la balise "fieldset"

<fieldset>
			<legend>Un Cadre :</legend>
		 &nbsp; <input type="button" value="Actionnez ce bouton" name="btAction" title="Affiche un messagebox"><BR>&nbsp;
		</fieldset>

Image non disponible

Télécharger l'application exemple Mise en forme

DiversMiseEnForme.zip

Comments