Access: Steuerelement zur Laufzeit generieren

deusfalsus

Erfahrenes Mitglied
Salve!

Kann man ein Steuerelement "live", also wenn das Formular geöffnet ist, generieren?

So:
Code:
Dim txt_Name As Control
Set txt_Name = CreateControl("frm_blabla", acTextBox, , , , "", "", "", "")
gehts jedenfalls nicht, da man dafür im Entwurfsmodus sein muss.

Vorschläge?
 
Indirekt machbar. Im eigenen Formular ist das nicht machbar, aber dafür kann man ein Formular bearbeiten, dass nicht geöffnet ist.
Andere Möglichkeiten sind mir nicht bekannt.
 
Code:
Private Sub Form_Load()

  ' Label deklarieren
  Dim oLabel As Label
  
  ' Label der Form1 hinzufügen
  Set oLabel = Form1.Controls.Add("VB.Label", "Name_des_Labels")
  ' Position bestimmen
  oLabel.Move 0, 0, 1000, 225
  ' Label "sichtbar" machen
  oLabel.Visible = True
  ' da ein Label die gleiche Farbe wie eine Form hat
  ' bietet es sich an, die Hintergrundfarbe zu ändern :-)
  oLabel.BackColor = vbRed
  ' dann noch etwas Text drauf
  oLabel.Caption = "vb@rchiv"

End Sub
Der Code wird aber auch ausgeführt, bevor das Formular sichtbar ist. Das ist auch nicht wirklich in der Laufzeit.
 
Mann! Darum gehts doch grad gar nicht. Erstens kann ich den Aufruf auch an andere Ereignisse binden, z.B. btn_Click.
Zweitens habe ich konkrete Fragen gestellt, die Du geflissentlich übergehst.
Durch die hier nun schon stattgefundene Konversation, klicken möglicherweise potentielle "Lösungswisser" nicht mehr auf den thread, obwohl Du nur unnütze Kommentare abgegeben hast, die mich zur Antwort zwingen.

Bitte antworte nur noch, wenn Du wirklich weiterhelfen kannst!

Ansonsten an alle, die aufmerksam lesen: meine Fragen sind noch unbeantwortet!

1: Mein Access (2003) bzw VB kennt zwar "Controls" aber kein ".Add" dazu.
2: Wie verpasse ich einem Textfeld einen Index, um evtl. die Load-Methode anzuwenden?
3: Kann ich ein Formular per Befehl in den Entwurfsmodus versetzen und wieder zurück?
 
Zwar extrem spät ... aber falls der Nächste über Google diesen Thread findet:

Index zuweisen einfach in den Eigenschaften. Hier gibt es den Punkt Index.

Vorsicht wenn man dann eine Schleife benutzt diese bei 1 beginnen lassen, da man den Index 0 schon vergeben hat.
 
Moinsens, allerseits!

Ich bin einer von denen, die über Google hier gelandet sind... ;-) Und eine konkrete Frage von deusfalsus stellt sich mir ebenfalls und ist hier in der Tat geflissentlich übergangen worden:

*: 1: Mein Access (2003) bzw VB kennt zwar "Controls" aber kein ".Add" dazu.

Und mit meinem Access 2000 habe ich das gleiche Problem. Alle Lösungsvorschläge, die ich bisher per Google aufgesucht habe, weisen immer wieder auf

* Set MyLabel = Me.Controls.Add("VB.Label", "LabelNeu", Me)

hin, aber genau diese Zeile verursacht bei mir die Fehlermeldung

* Fehler beim Kompilieren - Methode oder Datenobjekt nicht gefunden.

In der Onlinehilfe gibt es zu "Controls" auch gleich gar keine Methoden, nur 4 Eigenschaften: Application, Count, Item und Parent.

Also: Was machen die ganzen Lösungsgeber anders als deusfalsus oder ich, so daß es bei denen zu funktionieren scheint?

Gruß, Michael
 
Hallo,

ich habe das gleiche Problem wie schon oben beschrieben. Ich möchte Steuerelemente dynamisch hinzufügen.
Mein Access (2003) + VBA 6.5 kennt kein Controls.Add

Bei z.B. Textfeldern, die ich selber einfüge gibt es die Eigenschaft ("Index") nicht.

Hat jemand ein Lösung dafür?
 

Neue Beiträge

Zurück