Avatar billede anjep Nybegynder
30. september 2004 - 11:50 Der er 13 kommentarer og
1 løsning

Oprette et felt på en form, via vba kode

Hej,

Er der nogen som kan sige mig funktionen som kan oprette felt på en form ved hjælp af vba code!!!

Hilsner - Anjep
Avatar billede jensen363 Forsker
30. september 2004 - 12:08 #1
Lidt inspiration kan ses her :

Sub NewControls()
    Dim frm As Form
    Dim ctlLabel As Control, ctlText As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer

    ' Create new form with Orders table as its record source.
    Set frm = CreateForm
    frm.RecordSource = "Orders"
    ' Set positioning values for new controls.
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100
    ' Create unbound default-size text box in detail section.
    Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ' Create child label control for text box.
    Set ctlLabel = CreateControl(frm.Name, acLabel, , _
        ctlText.Name, "NewLabel", intLabelX, intLabelY)
    ' Restore form.
    DoCmd.Restore
End Sub
Avatar billede anjep Nybegynder
30. september 2004 - 12:33 #2
Hmmm.....det virker fint når jeg tager koden som den er, men jeg har en eksisterende form som hedder "Errorlist", det er på denne jeg vil lave felterne....

Og den kommer med en fejl hele tiden når jeg forsøger at henvise til min form, nogle gode ideér.
Avatar billede jensen363 Forsker
30. september 2004 - 12:55 #3
Problemet som jeg ser det, er antageligt, at du ikke kan aktivere designmode for den pågældende formular ... jeg går ud fra, at din kode ser nogenlunde således ud :

Sub NewControls()
    Dim frm As Form
    Dim ctlLabel As Control, ctlText As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer

    'Create new form with Orders table as its record source.
    Set frm = Form_Errorlist
   
    'Set positioning values for new controls.
    intLabelX = 100
    intLabelY = 100
    intDataX = 1000
    intDataY = 100
    ' Create unbound default-size text box in detail section.
    Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _
        intDataX, intDataY)
    ' Create child label control for text box.
    Set ctlLabel = CreateControl(frm.Name, acLabel, , _
        ctlText.Name, "NewLabel", intLabelX, intLabelY)
    ' Restore form.
    DoCmd.Restore
End Sub

Jeg arbejder lidt videre, og vender tilbage ... med mindre andre komme med et forslag
Avatar billede anjep Nybegynder
30. september 2004 - 13:22 #4
Ja, men fejler...

Formen skal ændres når en bruger trykker på en knap, hvor efter denne form dukker op med mine dynamiske felter....

Jeg vil med glæde spytte nogle flere point i, hvis det skulle hjælpe ;-)
Avatar billede jensen363 Forsker
01. oktober 2004 - 08:56 #5
Jeg har ikke selv benyttet fremgangsmåden før, men så vidt jeg kan tolke, kan du vist ikke både aktivere designmode og samtidig fortsætte afviklingen af programkoden fra een og samme formular ... muligvis kan det lade sig gøre, hvis du vælger at indsætte en underformular ... ( bare en idé ) ...
Avatar billede fdata Forsker
01. oktober 2004 - 17:08 #6
Kan du ikke bare køre med usynlige felter, som så bliver synlige, når der trykkes på knappen ?
Avatar billede jensen363 Forsker
01. oktober 2004 - 17:14 #7
fdata > glimrende forslag ... hvis det blot var det som var meningen ... hvorfor har jeg ikke tænkt på det C",)
Avatar billede anjep Nybegynder
01. oktober 2004 - 22:39 #8
fdata > det kunne man godt hvis det hele var statisk, men det skal være dynamisk, dog jeg jeg fundet er flow som gør at den dannerformen i design mode, hvorefter den lukker den ned igen bagefter....det er ikke færdigt endnu, men det skal nok lykkes...

men det startede med jensen363 kode, så lidt point til dig ;-)
Avatar billede anjep Nybegynder
01. oktober 2004 - 22:40 #9
skal lige bruge et svar ved lejlighed!
Avatar billede fdata Forsker
03. oktober 2004 - 13:39 #10
Et svar
Avatar billede fdata Forsker
03. oktober 2004 - 13:40 #11
I'm just kidding  ;o)
Avatar billede anjep Nybegynder
06. oktober 2004 - 12:29 #12
Hvad med dig jensen363, vil du ikke have nogle point??
Avatar billede jensen363 Forsker
06. oktober 2004 - 12:41 #13
Behøves ikke, men ok
Avatar billede Slettet bruger
10. august 2005 - 14:38 #14
Følgende kode indsætter 100 små tekstbokse på en eksisterende formular. Det virker hos mig.

Private Sub Kommandoknap0_Click() '*** Denne kommandoknap er IKKE på formular4

Dim frm As Form
Dim ctlText As Control
Dim vPos, tPos, Høj, Bred As Integer
Dim I As Integer

  '*** Det er vigtigt, at formen er åbnet i designmode

  DoCmd.OpenForm "Formular4", acDesign, , , , acHidden
 

  Set frm = Forms("Formular4")    '*** 'set frm = Form_Formular4' virker ikke.
 
  tPos = 1000
  Bred = 48
  Høj = 120
 
  For I = 1 To 100
 
      vPos = Bred * I + 2
 
      Set ctlText = CreateControl(frm.Name, acTextBox, , , , vPos, tPos, Bred, Høj)
      ctlText.Properties.Item("name") = "Tb" & I
 
  Next I
 
  DoCmd.Close acForm, "Formular4", acSaveYes

End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester