Appel d'une Form dans une DLL en VB 2008

guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 - 16 févr. 2010 à 16:54
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 - 17 févr. 2010 à 15:00
Bonjour à toutes et tous,

Je cherche à créer une DLL avec des Forms.

Sauf que je n'arrive pas à ouvrir cette form !

Comment dois-je faire ?

Par avance merci

Olivier

8 réponses

guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
17 févr. 2010 à 13:55
Voici ce que j'ai actuellement :

Côté EXE :
Public Class CWMainForm
Public TestDll As Object
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TestDll = New VH_v100.Class1 ' NomProjet.NomClass
TestDll.Afficher()

End Sub
End Class

Côté DLL :
Public Class Class1

Public Sub Afficher()
Dim MaForm As MainForm
MaForm.Visible = True
End Sub
End Class

Et cela ne fonctionne pas !
J'ai essayé avec tes lignes de code ... Idem !

Merci d'avance

Olivier
1
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
16 févr. 2010 à 17:52
salut,

quel est ton code actuel? message d'erreur?
sois précis stp
et pense à nous détailler l'architecture de ton (tes) projets

[hr]
0
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
17 févr. 2010 à 09:40
Bonjour PCPT,

Actuellement, j'ai un projet (.exe) qui fait appel à une DLL dans laquelle il n'y a aucune Form. Cependant pour des besoins spécifiques au projet, je suis obligé de mettre des Forms dans celle-ci.

Le problème, c'est qu'un Me.visible = True ne fonctionne pas ni tout autre forme d'appel pour afficher la Form.

Je ne sais pas comment faire !

Si tu as un bout de code m'expliquant comment faire cela je t'en serait reconnaissant.

Par avance merci

Olivier
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
17 févr. 2010 à 12:51
Me.visible = True à quel endroit, quelle procédure, où?, d'une class de la dll?
d'une form du projet winform?

je n'ai pas d'exemple de code sous ma main mais çà doit pas être bien compliqué, si tu expliques clairement ce que tu veux

à mon avis ça va ressembler à

dll, class :
'(...)
private x as form1

public sub Init()
x =new form1
x.show
end sub



exe, form :
'(...)
private sub test()
dim x as new class1
x.init
end sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
17 févr. 2010 à 14:14
"MainForm" est bien une form n'est-ce pas
elle se trouve dans quel projet?
tu as un message d'erreur?

et
*il manque un NEW
*il manque un .SHOW
0
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
17 févr. 2010 à 14:20
Oui bien vu !!

MainForm est une Form située dans la DLL !

Public Class Class1
Public Sub Afficher()
Dim MaForm As New MainForm
MaForm.Show()
End Sub
End Class

Cela fonctionne mais j'ai encore 3 petites questions :
1°) comment faire en sorte qu'il n'y ai qu'une seule occurrence de cette feuille.
2°) Comment faire en sorte que cette feuille soit modale ? (Tiens ça répond à la 1ère) ?
3°) Comment définir les coordonnées X et Y de cette feuille en fonction d'une Form située dans l'.EXE ?

Par avance merci

Olivier
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
17 févr. 2010 à 14:43
c'est marrant parce que
J'ai essayé avec tes lignes de code ... Idem !


du coup c'est très ressemblant à mes lignes, et çà marche

bref

1) une seule occurrence quoi... à la fois? dans la durée de vie de la classe? modal oui, ou une variable booléenne témoin
ex :
if not bShown then
'la seulement le code de la form.show
bShown =true
endif



2) .showdialog


3)passe des paramètres (LOCATION) à ta méthode AFFICHER, et tu les appliques avant le .SHOW(DIALOG)
0
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
17 févr. 2010 à 15:00
Merci PCPT,

Pour les 2 premiers points : j'ai trouvé juste avant que tu m'envoie la réponse.
Pour le 3ème point ... je fais ceci :
Dim MaForm As New MainForm
MaForm.Left = PosX
MaForm.Top = PosY
MaForm.ShowDialog()

Malheureusement lorsque je bouge la feuille principale (et même sans la bouger d'ailleurs) la Form située dans la DLL ne se place pas comme je le souhaiterais !?!?

Est-ce l'unité des positions (Left et Top) qu'ils faut modifier ?

Olivier
0