Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
19 sept. 2006 à 23:35
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 2011
-
20 sept. 2006 à 09:41
Bonsoir bonsoir,
Je suis comment dire, à la ramasse sur un petit problème qui me turlupine et j'en appelle donc à votre grande sagesse/connaissance/gentillesse/attention (ne rayez rien surtout, il n'y a pas de mentions inutiles ).
Ce que j'essaye de faire :
J'ai crée une appli et je veux que cette appli se redessine en fonction d'une résolution choisie. J'ai trouvé cette source : http://www.vbfrance.com/codes/PLEIN-ECRAN-SIMPLEMENT_22570.aspx Mais elle ne correspond pas à ce que je veux faire. En effet, cette source repositionne tous les objets en fonction de la résolution choisie, mais toujours dans la même disposition.
Ce que je fais, c'est par exemple qu'en 800x600, mon bouton cmd1 est en 100,100 et qu'en 1024x768, il est situé en 600,400 (ce n'est qu'un exemple. La position des objets bouge parc'en fonction de la résolution, mon image de fond est différente, et donc, je reposition les objets en fonction de cette image).
Mon idée était la suivante :
J'ai stocké dans une base de donnnées toutes les coordonnées left et top de mes objets, ainsi que le nom de l'objet : 1 table pour ma résolution 800x600, une table pour le 1024x768.
Je voulais donc crée une fonction qui défile chaque enregistrement de la table voulue et ainsi mettre à jour la position des objets.
Et là je coince, je n'arrive pas à définir la variable avec le nom de l'objet si vous voyez ce que je veux dire.
Voici comment je fais (oui, c'est en ADO ou DAO (je ne sais jamais, mais c'est pas le bon ^^) mais chuuuut, j'arrive pas à m'en passer ) :
Private sub MàJRésolution(Feuille as String)
'Définition des variables de la procédure
Dim Base As Database
Dim Table As Recordset
Dim NomTable As String
Dim NomObjet As Control
Dim NomFeuille As Form
'Ouverture de la base de données de configuration
Set Base = DBEngine.Workspaces(0).OpenDatabase(NomBaseConfig)
'Détermination du nom de la table
NomTable = "Résolution1024x768"
'Détermination du nom de la feuille
NomFeuille = "frm_" & Feuille
'Ouverture de la table
Sql = "SELECT * FROM " & NomTable & " ORDER BY Num"
Set Table = Base.OpenRecordset(Sql)
Table.MoveFirst
Do While Not Table.EOF
NomObjet = Table("NomControl")
NomFeuille!NomObjet.Left = Table("left")
NomFeuille!NomObjet.Top = Table("top")
Table.MoveNext
Loop
Table.Close
'Fermeture de la base de données
Base.Close
Set Base = Nothing
End sub
Je pense qu'avec ce bout de code, on voit bien ce que je tente de faire.
Quand je lance la procédure, j'ai une erreur d'exécution 91
"Variable objet ou variable bloc with non défini"
sur la ligne NomObjet = Table("NomControl")
J'ai bien imaginé 2 secondes que NomObjet.Name = Table("NomControl") m'aiderait, mais ça ne fonctionne pas.
Donc, si quelqu'un voulait bien m'éclairer de ces lumières, ça m'arrangerait bien
D'avance merci
Molenn
A voir également:
Controls sur une form : changer leurs positions via une fonction, à un emplaceme
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 20 sept. 2006 à 09:41
La nuit portant conseille, j'ai fini par résoudre mon problème en raisonnant un tout petit peu différemment.
Le nom de mon objet étant stocké dans ma base de données, je suis parti d'une boucle
For each Ctrl in Mafeuille.Controls
Next Ctrl
Et je récupère le nom en faisant un Ctrl.Name dans ma base.
Et je crée un recordset à chaque boucle en rajoutant dans ma requête SQL un WHERE NomControl = Ctrl.Name
Le reste se gère normalement sans soucis.
Pour mon problème de nom de feuille, j'ai résolu mon soucis en utilsant la collection de Forms.
C'est à dire que pour déterminer sur quelle feuille je modifie mes objets, je fais juste Forms(i).Ctrl où i est le numéro de la feuille, compris entre 0 et Forms.Count - 1
Merci à ceux qui auront lu et qui sont peut être même encore en train de chercher une réponse pour moi