Soyez le premier à donner votre avis sur cette source.
Vue 7 890 fois - Téléchargée 381 fois
'Comment utiliser l'objet gestionFenetre : du plus simple au plus perfectioner 'déclaration : 'dim gFen as new gestionFenetre(fenetre principale du prog) 'ouverture de fenetre '1° ' gFen.affiche(truc) '2° ' gFen.affiche(truc, AddressOf MAJListe) '3° ' gFen.affiche(truc, New fonctionDeMiseAJourDeCetteFenetre(AddressOf MAJListe)) '4° ' gFen.affiche(truc, New fonctionDeMiseAJourDeCetteFenetre() {AddressOf MAJListe, AddressOf MAJListe}) '5° ' Dim f As fenetre ' f = New fenetre(truc, New fonctionDeMiseAJourDeCetteFenetre() {AddressOf MAJListe, AddressOf MAJListe}) ' f.add(AddressOf MAJListe) ' gFen.affiche(f) 'fermeture de fenetre 'gFen.fin() 'ferme et lance les méthodes 'gFen.fin(false) 'ferme mais refuse de lancer les méthodes 'cree un fonction délégate, en claire c'est un racourci vers une autre fonction lorsqu'on 'créé un objet o du type fonctionDeMiseAJourDeCetteFenetre on spécifie l'addresse d'une fonction f 'et en faisant o.invoke on execute la fonction f Public Delegate Sub fonctionDeMiseAJourDeCetteFenetre() 'classe permettant de géné des appelle de fenetre de façon bloquante Public Class gestionFenetre Protected fen As List(Of fenetre) 'crée un nnouvel objet de gestion des affichage des fenetre Public Sub New(ByRef mere As Windows.Forms.Form) fen = New List(Of fenetre) fen.Add(New fenetre(mere, AddressOf void)) End Sub 'on demande un objet/un delegate fonctionDeMiseAJourDeCetteFenetre dans le constructeur, mais on peut ne passer que le AddressOf maFonction 'puisque voyant que ce n'est pas le même type d'objet il tentera de créé un objet fonctionDeMiseAJourDeCetteFenetre avec AddressOf maFonction en 'paramètre. de cette façon l'écriture est simplifier : gfen.affiche(fen1,AddressOf maFonctionMAJ) Public Sub affiche(ByRef fenFille As Windows.Forms.Form, ByRef fonctionDeMiseAJours As fonctionDeMiseAJourDeCetteFenetre) Me.affiche(New fenetre(fenFille, fonctionDeMiseAJours)) End Sub 'on demande l'affichage d'une fenetre en informant qu'il faudra faire plusieurs fonctions après la fermeture de la fenetre Public Sub affiche(ByRef fenFille As Windows.Forms.Form, ByRef fonctionDeMiseAJours() As fonctionDeMiseAJourDeCetteFenetre) Me.affiche(New fenetre(fenFille, fonctionDeMiseAJours)) End Sub 'on ne veut que afficher la fonction, dans ce cas la fonction appeler sera void une fonction qui ne fait rien Public Sub affiche(ByRef fenFille As Windows.Forms.Form) Me.affiche(fenFille, New fonctionDeMiseAJourDeCetteFenetre(AddressOf void)) End Sub 'on affiche la form de l'objet passer et on ajout l'objet à la pile des fenetres affiché Public Sub affiche(ByRef mafenetre As fenetre) fen.Item(fen.Count - 1).getForm.Enabled = False fen.Add(mafenetre) mafenetre.getForm.Show() End Sub '-on redonne la main à l'avant dernière fenetre de la pile si c'est possible '-on ferme la fenetre qui est a la fin de la pile '-on appelle les fonction qui on été demander Public Sub fin(Optional ByVal appelleLesFonctionsEnFinDeFenetre As Boolean = True) If fen.Count > 1 Then fen.Item(fen.Count - 2).getForm.Enabled = True If fen.Count > 1 Then fen.Item(fen.Count - 2).getForm.Activate() fen.Item(fen.Count - 1).getForm.Dispose() If appelleLesFonctionsEnFinDeFenetre Then fen.Item(fen.Count - 1).Invoke() fen.RemoveAt(fen.Count - 1) End Sub 'fonction vide, on doit forcement avoir une fonction à lancer à la fermeture, si l'utilisateur n'en a pas mit alors on en met une 'et une qui n'a aucune incidence sur le programme Private Sub void() End Sub End Class Public Class fenetre Private fen As Windows.Forms.Form Private fcn As List(Of fonctionDeMiseAJourDeCetteFenetre) 'crée un objet fenetre avec une fenetre et plusieurs fonctions à lancer Public Sub New(ByRef maForm As Windows.Forms.Form, ByRef MesFcn() As fonctionDeMiseAJourDeCetteFenetre) fen = maForm fcn = New List(Of fonctionDeMiseAJourDeCetteFenetre) For i As Integer = 0 To MesFcn.Length - 1 fcn.Add(MesFcn(i)) Next End Sub 'crée un objet fenetre avec une fenetre et une fonction à lancer Public Sub New(ByRef maForm As Windows.Forms.Form, ByRef MesFcn As fonctionDeMiseAJourDeCetteFenetre) fen = maForm fcn = New List(Of fonctionDeMiseAJourDeCetteFenetre) fcn.Add(MesFcn) End Sub 'ajoute à l'objet fenetre une fonction à lancer Public Sub add(ByRef MaFcn As fonctionDeMiseAJourDeCetteFenetre) fcn.Add(MaFcn) End Sub 'geteur de fenetre Public Function getForm() As Windows.Forms.Form Return fen End Function 'appelle les fonction de cette objet Public Sub Invoke() For i As Integer = 0 To fcn.Count - 1 fcn.Item(i).Invoke() Next End Sub End Class
27 avril 2006 à 07:57
Bon courage.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.