begin process at 2012 02 12 17:35:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Control

 > DYNAMIC CONTROLS MANAGER - GÉREZ FACILEMENT VOS CONTRÔLES DYNAMIQUES [MODULE DE CLASSE]

DYNAMIC CONTROLS MANAGER - GÉREZ FACILEMENT VOS CONTRÔLES DYNAMIQUES [MODULE DE CLASSE]


 Information sur la source

Note :
10 / 10 - par 5 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Control Classé sous :collection, contrôle, dynamique, gestion, afck Niveau :Débutant Date de création :07/03/2007 Date de mise à jour :27/03/2007 11:40:33 Vu / téléchargé :5 711 / 990

Auteur : PCPT

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
cette classe (et sa structure) permet de gérer très facilement des objets dynamiques, passant par la création, l'affichage ordonné (ligne, colonne, tableau), à la destruction complète.
cette source répond à de nombreux topics sur le forum (déjà 2 depuis hier :s)

le but principal est de savoir à tout moment si un contrôle est chargé, lorsqu'on doit créer et détruire des objets dynamiques en temps réel (pour tchat multiconnectés par exemple).

source très commentée, comme d'hab j'attends vos retours ;)

Source

  • With AfDCM
  • .AddObject False
  • .AddObject False
  • MsgBox "Index 2 libre? : " & .IsFreeID(2)
  • .Remove 1
  • MsgBox "Objets actifs ? : " & .CountObjectsAttached & "/" & .GetLastID
  • End With
With AfDCM
    .AddObject False
    .AddObject False
    MsgBox "Index 2 libre? : " & .IsFreeID(2)
    .Remove 1
    MsgBox "Objets actifs ? : " & .CountObjectsAttached & "/" & .GetLastID
End With

 Conclusion

je mettrai à jour selon les demandes

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

07 mars 2007 12:43:55 :
.
14 mars 2007 00:47:56 :
correction d'une erreur dans la classe, multisélection dans l'exemple
27 mars 2007 11:40:33 :
remove tranformé en fonction, pas d'erreur même en cas d'indice incorrect fourni par le dev

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) [VB2008] OBSERVER L'ACTIVITÉ INPUT (CLAVIER SOURIS) DE L'UTI...
Source avec Zip Source avec une capture PUBLIC SHARED SANS MODULE - VARIABLE SINGLETON : IDENTIFICAT...
Source avec Zip Source avec une capture RÉCUPÉRATION DES IMAGES SYSTÈME DEPUIS LEUR EXTENSION OU LEU...
Source avec Zip Source avec une capture FILE FOLDER LOCKER - BLOQUER (ET DÉBLOQUER) L'ACCÈS À CERTAI...
Source avec Zip Source avec une capture FOLDER HELPER - DOSSIERS SPECIAUX, MANIPULATION DE DOSSIERS,...

 Sources de la même categorie

Source avec Zip COMMUNICATION MODBUS MASTER par sergelapointe
Source avec Zip Source avec une capture DÉPLACEMENT AVEC FLÈCHES DANS UN PAVÉ DE TEXTBOX 9X9 DYNAMIQ... par EhJoe
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLSTARS EN RÉPONSE À JAKNIGHT007 par bigboss9
Source avec Zip Source avec une capture Source .NET (Dotnet) CALENDRIER ANNUEL NORME ISO par Prog1001
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLE STARS par jaknight007

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RECEVOIR L'ÉVÈNEMENT _MOUSEMOVE SUR DES CONTRÔLES QUI NE LE ... par PCPT
Source avec Zip Source avec une capture GESTION D'ERREURS EN FICHIER EXTERNE [MODULE DE CLASSE] par PCPT
Source avec Zip AJOUT DE CONTROL ET GESTION DE LEURS ÉVÉNEMENTS par trifonnerie
Source avec Zip GESTION DE COLLECTION CD par bibs
AJOUTER UN CONTROL DYNAMIQUEMENT (AT RUNTIME) par borntoclimb

Commentaires et avis

Commentaire de mortalino le 09/03/2007 01:11:11

Salut PCPT,

très belle gestion des contrôles dynamiques, tout est géré est ça me semble très pratique ;)
Idée d'amélioration : faire en sorte que si la touche Ctrl est enfoncé lors du click sur plusieurs PictureBox, ils se mettent à plusieurs au rouge, afin de permettre une suppression simultannée.

Ensuite j'ai bien une question, tu crées tes propres Items dans la classe StructureDCM, donc depuis la classe principale, tu fais MyItem.Free, d'accord, je comprends.
Par contre, j'ai du mal à savoir comment la relation est faite depuis cette instruction :
oCol.Item(i).Free
Merci ;)

En tout cas, beau travail !
@++

Commentaire de PCPT le 09/03/2007 02:45:22 administrateur CS

touche ctrl, ok c'est noté, je verrai çà ce week-end ;)
peut-être aussi renvoyer une collection des objets chargés (uniquement).
rappel : la form fournie ne sert qu'à visualiser le traitement des objets afin de gérer facilement un ensemble de timers par exemple (donc pas besoin de multisélection physique).
la classe est néanmoins opérationnelle pour tout objet (groupe) physique, d'où pas mal de paramètres pour la mise en page

MyItem.Free est un booléen (pas instruction), et l'objet MyItem (servant de type/structure) est chargé dans la collection.
à chaque appel à un objet (ou presque, voir comments), MyItem récupère les valeurs de l'item de la collection (voir 2 dernières proc privées)
on sait donc ensuite que l'item est vide par
msgbox myitem.free ou msgbox (myitem.free=true)
ou
msgbox ocol.item(x).free

++ ;)

Commentaire de asimengo le 09/03/2007 15:19:52

Pas mal.

Peut-être dans le même ordre d'idée j'ai écris un usercontrol (Frame + vscroll + hscroll + msforms2.combobox(0) + label(0)). En propriété largeur controle, hauteur controle, nombre de colonnes, nbre de lignes affichées (-1 = pas de vscroll), largeur controle (-1 = laisse decision) et hauteur (-1=laisse decision) et accès aux controles dans le frame par index. chaque controle pouvant apparaitre comme textbox ou combobox. Dispose des méthodes pour se construire sur la base d'un recordset, ...
Voila j'espérais tomber aussi sur quelque chose comme ça.

Sinon bien interessant.

Commentaire de PCPT le 09/03/2007 19:15:53 administrateur CS

salut asimengo,
"un contrôle comme çà"... et bien non ;)
cette source servirait plutôt (pour suivre avec ton exemple) à référencer et à gérer ton usercontrol indéxé à 0, contenant lui-même un ou plusieurs contrôles uniques, ou des contrôles indéxés eux-même rattachés à une instance de la classe

Commentaire de drakkard le 13/03/2007 18:23:25

Salut PCPT,
très intéressant.
Une petite idée en plus, un défilement vertical par un scrollbar sur des contrôles dynamiques.
Question, tu gères les contrôles en identifiant le nom du container ?
Si oui, en ajoutant un menu sur la form ; je crois qu'il y a problème, non ?

Autrement je pense m'en servir...

Commentaire de PCPT le 14/03/2007 01:00:34 administrateur CS

salut,
une maj... il y avait une erreur pour la mise en page des contrôles (détail dans la source)
mortalino -> multi-sélection des picturebox ;)
drakkard -> les contrôles ne sont pas gérés par leur conteneur (ou leur nom).
par contre on vérifie quel est le conteneur (une frame, une picturebox, une form, etc..., voire "rien" pour les contrôles invisibles au runtime comme les timer, winsock et autre). de là on rattache l'objet généré au parent de l'objet "modèle", après sa création.

une scrollbar?... ce n'est pas le but de la classe. juste pour le code, tu peux jeter un oeil ici :
http://www.vbfrance.com/code.aspx?ID=30651
idem asimengo ;)

merci à tous pour vos comms et notes
++
PCPT   [AFCK]

Commentaire de drakkard le 14/03/2007 16:39:23

Bonjour PCPT,

petit "trouble",
je viens de faire des tests ;
je réalise un GetLastID, un GetFreeID, CountObjectsAttached
je réalise un remove
GetLastID ne change pas
CountObjectsAttached non plus
GetFreeID change

Est-ce normal ?

Commentaire de PCPT le 14/03/2007 18:23:58 administrateur CS

salut,
GetLastID renvoie le dernier ID de la collection
GetFreeID renvoie le prochain ID libre (item existant mais vide, ou le nouveau qui sera créé si ils sont tous occupés)
CountObjectsAttached renvoie le nombre "d'objets chargés et valides" dans la collection

"GetLastID ne change pas"
>>normal, on a détruit l'objet mais on garde l'item dans la collection (c'est le but même de la source, pouvoir communiquer avec un index inexistant sans avoir d'erreur à traiter, et pouvoir agir dynamiquement)


"CountObjectsAttached non plus"
>>pas normal du tout! je viens de tester (code ci-après), fonctionne nikel

"GetFreeID change"
>>normal, si tu supprimes le "4" il devient forcément le prochain libre


code (dans un bouton_click), beh juste
Debug.Print "LAST ID : " & AfDCM_Pic.GetLastID & vbTab & vbTab & "FREE ID : " & AfDCM_Pic.GetFreeID & vbTab & vbTab & "COUNT USED : " & AfDCM_Pic.CountObjectsAttached

trace avec l'exemple fourni, sans modif :
LAST ID : 73        FREE ID : 74        COUNT USED : 73

supression du 4 (sélection du 4e avec la souris puis bouton remove)

trace :
LAST ID : 73        FREE ID : 4     COUNT USED : 72

tout est bon...


même test avec la suppresion du dernier :
LAST ID : 73        FREE ID : 74        COUNT USED : 73
LAST ID : 73        FREE ID : 73        COUNT USED : 72

nikel aussi

dans quelles conditions ton "CountObjectsAttached" ne change pas?

Commentaire de drakkard le 14/03/2007 18:33:53

Ok compris...

pour moi aussi c'est ok pour CountObjectsAttached...
Ma question venait du fait que je voulais utiliser GetLastID pour supprimer ( en boucle ) le dernier élément, je vais le faire avec GetFreeID.

Ta source va me servir très rapidement...

Merci !!!

Commentaire de PCPT le 14/03/2007 18:46:32 administrateur CS

il faut d'abord savoir si l'item est vide. si n'est pas le cas, on vire.
çà donne...



    Dim i As Integer, iTo As Integer
    iTo = AfDCM_Pic.GetLastID
    If iTo > 0 Then
        For i = 1 To iTo
            If Not AfDCM_Pic.IsFreeID(i) Then AfDCM_Pic.Remove i
        Next i
    End If

++ ;)

Commentaire de PCPT le 14/03/2007 18:48:17 administrateur CS

même pas besoin du test count en fait....



    Dim i As Integer
    For i = 1 To AfDCM_Pic.GetLastID
        If Not AfDCM_Pic.IsFreeID(i) Then AfDCM_Pic.Remove i
    Next i

Commentaire de drakkard le 14/03/2007 18:52:44

Moi, je l'ai vu ainsi :

Do While AfDCM_Lbl1.GetFreeID > 1

AfDCM_Lbl1.Remove AfDCM_Lbl1.GetFreeID - 1

loop

Commentaire de PCPT le 14/03/2007 19:06:50 administrateur CS

beh c'est pas bon ^^
si des objets sont déjà supprimés, tu ne commenceras pas à partir du dernier item.
exemple sur 10 items, le 5 est libre, tu ne supprimeras que les 1 2 3 4

ps : si le but est de supprimer uniquement à la fermeture (libérer la mémoire), la classe s'en charge déjà.
(autrement dit tu peux aussi juste faire un "set AfDCM_Lbl1 = nothing" puis réinstancier la classe)

Commentaire de drakkard le 14/03/2007 19:14:27

Ok ok,

je te l'ai donné comme je l'utilise dans mon prog...
J'ai juste besoin à certains moments de virer les contrôles dynamiques ( depuis le dernier vers le premier ) d'ou ma solution...
Ma méthode n'est pas la meilleur de toute façon...

Commentaire de PCPT le 14/03/2007 19:20:42 administrateur CS

For i = AfDCM_Pic.GetLastID To 1 Step -1

Commentaire de drakkard le 15/03/2007 18:30:48

Tellement plus simple et plus logique...
Parfois j'ai tendance à chercher compliqué...
Merci

Commentaire de drakkard le 26/03/2007 17:10:19

Salut PCPT,



je viens de tester globalement mon prog qui utilise tes contrôles dynamiques,
j'ai un message d'erreur lors de la suppression des contôles
"Impossible de décharger dans ce contexte". J'ai utilisé ta technique est j'ai le même message d'erreur en débug c'est au niveau de Unload MyItem.Obj que le code bloque.

Petite idée ???

merci d'avance.

Commentaire de PCPT le 26/03/2007 21:56:08 administrateur CS

message d'erreur bien étrange...
héberge ta source sur un ftp et donne-moi l'@ par MP, j'y jèterai u oeil ;)
++

Commentaire de PCPT le 27/03/2007 11:41:39 administrateur CS

petite maj de "Remove", permet de ne plus avoir à tester l'existance d'un objet avant de le détruire

Commentaire de drakkard le 27/03/2007 11:50:21

Bonjour PCPT,



tu as pu voir mon pb ?
je viens de tester avec ton update, j'ai toujours la même erreur.

Commentaire de PCPT le 27/03/2007 12:15:58 administrateur CS

j'ai pu voir oui, je t'ai répondu en MP et t'ai copié la form concernée modifiée sur ton FTP (avant de faire la MAJ)

Commentaire de drakkard le 27/03/2007 12:44:44

PCPT,
je viens de tester avec ta modif sur la form, j'ai toujours le message d'erreur mais à un autre endroit : Unload oCol.Item(i).Obj.

Commentaire de PCPT le 27/03/2007 12:49:18 administrateur CS

avec la maj de la classe? (dans le doute...)

Commentaire de drakkard le 27/03/2007 12:55:59

ouaip...
lorsque tu tests, prends en OS l'enterprise dans le combo1 et la licence terminant par AZSER dans le combo2, normalement l'erreur se produira si tu changes d'OS ( j'ai oublié de coder pour un changement de licence ). Au fait les licences sont fausses ;-))

Commentaire de PCPT le 27/03/2007 13:00:23 administrateur CS

suite du dial par MP, tu n'as pas du bien lire le précédent ;)

Commentaire de PCPT le 01/04/2007 11:34:45 administrateur CS

drakkard -> pas de suite..., tu as bien reçu mon dernier MP?
une solution serait d'utiliser un timer à 10 ms qui serait enabled lors du click sur le combo. le reste du code (celui du combo) est alors à déplacer dans le timer. ne pas oublier de mettre le timer a disabled dans son évènement

++

Commentaire de drakkard le 04/04/2007 09:49:42

Bonjour PCPT,
pas de suite..., ouaip, c'est juste que je n'ai pas eu le temps de regarder de nouveau le prog.
J'avais pensé aussi à un timer, donc dès que j'ai le temps...
Autrement, encore merci PCPT

Commentaire de Garlim le 25/07/2008 16:37:10

Je suis très intéressé par ce code, ça correspond tout à fait à un développement que je souhaiterai faire. Par contre, je ne sais pas comment utiliser le zip! et j'ai pas trouvé de FAQ. Un coup de main?

Commentaire de Garlim le 25/07/2008 16:50:49

Je précise que je programme en VB(Excell 2003).

Commentaire de PCPT le 25/07/2008 18:33:44 administrateur CS

salut,
la FAQ est ici : http://www.vbfrance.com/doc/faq.aspx
elle contient le lien détaillant les sources : http://www.vbfrance.com/doc/faq.aspx#vb_src

et ma source (VB6), ne fonctionnera pas sous excel (VBA)
VBA n'a pas de gestion de contrôle par "groupe/index", aucune adaptation n'est possible

tu peux par contre gérer des ensembles de contrôles de même type, avec ce code de Mortalino par exemple : http://www.vbfrance.com/codes/EVENEMENT-MOUSEMOVE-SUR-SELECTION-CONTROLES-MEME-TYPE_37169.aspx

Commentaire de Garlim le 25/07/2008 18:36:04

ok, je m'en doutais un peu :s
Mais merci pour les liens :D

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Contrôle dynamique [ par pierre63 ] Bonjour,dans moon programme je créer des contrôle dynamique suivant un certain evenement de la souris donc je leur donne un nom et et dans ce progr j' Gestion dynamique de form [ par fieldy8 ] Bonjour,je desirerai faire une gestion dynamique de formj'ai une form et une sous-form ma sous-form est de type tableau mais je voudrai pouvoir choisi Vérifier si un contrôle existe ??? [ par vbMarco ] Bon jour,Existe une fonction me permettant de véifier si un contrôle existe sur un formulaire?J'ajoute des contrôles dynamiquement sur mon formulaire. Contrôle dynamique ! [ par pierre63 ] Bonjour,Voila je crée des contrôle dynamique et j'aimerais savoir s'il est posible de mettre un evenement sur ce contrôle ! Et comment fait on ? Contrôle dynamique ! [ par pierre63 ] Bonjour,j'ai un bouton qui apparait grace au controle dynamique mais j'aimerais savoir comment on fait un evenement clic sur ce bouton ?Merci ! Gestion dynamique de textbox [ par matlocker ] Bonjour a tous,je voudrais que lorsque je clique sur un bouton il me genere 5 textbox sur ma form. Mais je ne vois pas du tout comment m'y prendre. Si Création dynamique de contrôle [ par arystoc ] Bonjour à tous,Je suis en train d'apprendre C# de Visual Studio .NET. Je voudrais savoir comment ajouter un nombre X (non connu d'avance) de contrôles Groupe de contrôle dynamique [ par tparisi ] Salut &#224; tous,J'ai besoin de cr&#233;er des groupes de controles de fa&#231;on dynamique (&#224; l'&#233;x&#233;cution)... A la cr&#233;ation no p l(index du prochain controle d'une collection ??? [ par youkizouki ] Bonjour, <SPAN lang=FR-BE style="FONT-SIZE: 10 chargement dynamique d'un controle activeX [ par Safireo ] J'ai cr&#233;e un contr&#244;le activeX (usercontrol) qui se nomme Controle et je cherche &#224; faire en sorte qu'en cliquant sur un bouton, un autre


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,526 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales