Passage d'objet control a une procedure [Résolu]

Signaler
Messages postés
34
Date d'inscription
jeudi 16 février 2006
Statut
Membre
Dernière intervention
21 mars 2006
-
Messages postés
34
Date d'inscription
jeudi 16 février 2006
Statut
Membre
Dernière intervention
21 mars 2006
-
Bonjour à tous,

Je tourne en rond depuis 2 jours avec le pb suivant:

Je souhaite paramétrer les propriétés LEFT et TOP de mes objets Shape
et Label au chargement de ma form. Pour cela, j'ai créé 2 procédures:

Private Sub ParamLabel (ByRef Obj as Label,etc....)


Obj.Left=200


Obj.Top=200


Obj.Caption="Essai"

End sub

Private Sub ParamShape (ByRef Obj as Shape,etc....)


Obj.Left=200


Obj.Top=200


End sub

Pour simplifier mon code, je souhaite passer mes objets à 1 seule et meme procedure.



Question :

- Comment passer aussi bien 1 type "Shape" qu'un type "Label" ?

- Comment controler dans la procédure le type passé pour ne pas
tenter d'affecter une propriété qui n'existe pas exemple :
Shape1.Caption= "" ?



Merci de votre aide!

Je commence à saturer[javascript:Insert_Emoticon('/imgs2/smile_angry.gif'); ]

C'est parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.

3 réponses

Messages postés
34
Date d'inscription
jeudi 16 février 2006
Statut
Membre
Dernière intervention
21 mars 2006

Merci pour l'info!

Tout ça marche bien (voir le code ci-aprés), il suffit de vérifier le
type (typeOf ctl is tartempion) avant de changer la propriété
incompatible.

voici mon code après modifications:



' L'interêt de la méthode utilisée ci-aprés est de permettre de modifier les propriétés

' de mes controles sans avoir à recompiler car j'ai deux intallation sensiblement identiques

' pour lesquels les propriétés caption, le nombre d'objets dans le groupe sera différent

' je laisse invisible les objets dont je n'ai pas besoin.



'Procedure permettant de positionner Les controles

' Les propriété de positions voulues sont lues dans un fichier .INI

' la procedure recoit dans l'ordre :

' l'objet, la cle dans fichier .ini, le nom du fichier .ini, le rang (pour les objets groupés)



Private Sub Position(ByRef Ctl As Control, ByVal cle As String, ByVal FICHIER As String, Optional ByVal i As Integer)

Dim rang As String

If TypeOf Ctl Is Image Then

rang = ""

Ctl.Height = LitFichierIni(cle, "HEIGHT" & rang, FICHIER)

Ctl.Width = LitFichierIni(cle, "WIDTH" & rang, FICHIER)

Else

rang = LTrim(Str(i))

End If

Ctl.Left = LitFichierIni(cle, "LEFT" & rang, FICHIER)

Ctl.Top = LitFichierIni(cle, "TOP" & rang, FICHIER)

Ctl.Visible = True

End Sub



'Procedure permettant de rebaptiser les objets comportant une propriété Caption et ToolTipText

' Ces propriété sont lues dans un fichier .INI

' la procedure recoit dans l'ordre :

' l'objet, la cle dans fichier .ini, le nom du fichier .ini, le rang (pour les objets groupés)



Private Sub ValText(ByRef Ctl As Control, ByVal cle As String, ByVal FICHIER As String, Optional ByVal i As Integer)

Dim rang As String

If TypeOf Ctl Is Form Then

rang = ""

Else

rang = LTrim(Str(i))

Ctl.ToolTipText = LitFichierIni(cle, "ToolTipText" & rang, FICHIER)

End If

Ctl.Caption = LitFichierIni(cle, "CAPTION" & rang, FICHIER)

Ctl.Visible = True

End Sub



' procédure appelée ds form.load pour repositionner les objets

Private Sub PLacer()

Dim i, nb As Integer

Dim cle As String

Dim Fich_Implantation, Fich_Synoptique As String



Fich_Implantation = Chemin & "config" & "SYNOPTIQUE_IMPLANTATION.ini"

Fich_Synoptique = Chemin & "config" & "SYNOPTIQUE.ini"



'PARAMETRAGE IMAGE SYNOPTIQUE

cle = "SYNOPTIQUE"

Position SYNOPTIQUE, cle, Fich_Implantation 'Objet non groupé



'PARAMETRAGE DES ARRET URGENCE

cle = "ARRET_URGENCE"

nb = LitFichierIni(cle, "NB", Fich_Synoptique) - 1 'le nombre d'objet est défini ds fichier.ini

For i = 0 To nb

Position AU(i), cle, Fich_Implantation, i

Position AU_TEXT(i), "TEXT_" & cle, Fich_Implantation, i

Next

end sub





' procédure appelée ds form.load pour rebaptiser les objets

Private Sub Baptiser()

Dim i, nb As Integer

Dim cle As String

Dim Fich_Synoptique As String



Fich_Synoptique = Chemin & "config" & "SYNOPTIQUE.ini"



'PARAMETRAGE IMAGE SYNOPTIQUE

cle = "PAGE_SYNOPTIQUE"

Page_Synoptique.Caption = LitFichierIni(cle, "CAPTION", Fich_Synoptique)

'Page_Synoptique.SYNOPTIQUE.Picture = Chemin & "config\synoptique.bmp"



'PARAMETRAGE DES ARRET URGENCE

cle = "ARRET_URGENCE"

nb = LitFichierIni(cle, "NB", Fich_Synoptique) - 1 'le nombre d'objet est défini ds fichier.ini

For i = 0 To nb

ValText AU_TEXT(i), cle, Fich_Synoptique, i

Next

end sub





C'est tout pour l'instant. Le top sera de traiter la cle en tenant
compte du nom de l'objet pour ne plus avoir à passer la cle comme
paramètre.

Encore merci econs!

[javascript:Insert_Emoticon('/imgs2/smile_big.gif'); ]


C'est parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Il y a bien cette solution-ci, mais je constate que çà ne fonctionne pas pour les labels et les textboxes. (??) A creuser.








Private Sub CommandButton1_Click()

ChangePositions UserForm1.ComboBox1

ChangePositions UserForm1.TextBox1

ChangePositions UserForm1.Frame1

ChangePositions UserForm1.Label1

End Sub



Private Sub ChangePositions(ByRef ctl As Control)



If TypeOf ctl Is ComboBox Then

ctl.Top = 100

ctl.Left = 100

ctl.Text = "titi"

Else

If TypeOf ctl Is Label Then

ctl.Top = 200

ctl.Left = 200

ctl.Caption = "toto"

ctl.Refresh

Else

If TypeOf ctl Is Frame Then

ctl.Top = 150

ctl.Left = 350

ctl.Caption = "blabla"

Else

If TypeOf ctl Is TextBox Then


ctl.Text = "une textBox"

ctl.Top = 50

End If

End If

End If

End If



End Sub

Manu
Messages postés
158
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
16 juillet 2007

Chez moi, ton code fonctionne très bien econs, même pr des labels ou des textbox?! C'est quoi le problème?