2017-04-16 2 views
3

J'ai un programme qui obtient plusieurs noms, et les enregistre dans un fichier. Je veux créer un nouvel objet (bouton, étiquette, etc.) pour chaque personne enregistrée dans le fichier. J'utilise ce code, mais je suis erreur:Comment utiliser Nouveau mot-clé pour créer un nouvel objet dans VB6, comme nouveau bouton, étiquette, etc

Dim i as new object 
set i= new button 

L'erreur que je suis arrivé: composant ActiveX ne peut pas créer l'objet

+0

Demandez-vous seulement de créer des contrôles à l'écran? Le terme "objet" est beaucoup plus large que cela. – DaveInCaz

+0

Je veux un objet cliquable, que je pourrais montrer une page, pour chaque personne – Elias

Répondre

2

Dans votre formulaire, ajoutez une étiquette et un bouton de commande. Je suppose que vous l'avez déjà fait.

Sélectionnez l'étiquette et, dans la fenêtre Propriétés, définissez lblPerson à la propriété Name et 0 à la propriété Index.

Sélectionnez le bouton et, dans la fenêtre Propriétés, définissez cmdPerson à la propriété Name et 0 à la propriété Index.

Maintenant vous avez deux tableaux de contrôle que vous pouvez définir dynamiquement lors de l'exécution:

Public Sub AddPersonListControls(idx As Long) 
    Load cmdPerson(idx) 
    cmdPerson(idx).Caption = "Details" 
    cmdPerson(idx).Visible = True 
    cmdPerson(idx).Top = cmdPerson(idx - 1).Top + cmdPerson(idx - 1).Height + 10 
    cmdPerson(idx).Left = cmdPerson(0).Left 

    Load lblPerson(idx) 
    lblPerson(idx).Caption = "Person Name " & idx 
    lblPerson(idx).Visible = True 
    lblPerson(idx).Top = lblPerson(idx - 1).Top + lblPerson(idx - 1).Height + 10 
    lblPerson(idx).Left = lblPerson(0).Left 
End Sub 

Où que vous charger les données de vos personnes, créez les contrôles correspondants:

Dim numPersons As Long 
numPersons = 3 ' just an example 
Dim i As Long 
For i = 1 To numPersons - 1 
    AddPersonListControls i 
Next 

Votre formulaire doit regards (Remarque: Form1.ScaleMode est défini sur 3-Pixels):

Dynamically loaded controls

Explication:

Alors que ma réponse ne répond pas directement à votre question avec le mot-clé New, il vous montre la bonne méthode comment ajouter dynamiquement de nouveaux contrôles dans le cas où vous ne savez pas combien ils devrait être, donc en évitant l'utilisation de Named Controls et en utilisant à la place Array Controls.

+0

Merci pour votre aide, mais où dois-je ajouter AddPersonListControls? – Elias

+0

la réponse à cette question est large pour un commentaire, s'il vous plaît poster un échantillon de votre fichier texte qui contient les données des personnes, et quelqu'un vous dira comment lire ce fichier. – deblocker