Avatar billede vanni Nybegynder
18. februar 2004 - 20:31 Der er 31 kommentarer og
4 løsninger

Navngive tekstbokse

Jeg mange tekstbokse på en formular. Er der en smart måde at navngive tekstbokse på?
Avatar billede mugs Novice
18. februar 2004 - 20:33 #1
Hvis du mener ubundne tekstbokse bliver de jo navngivet af Access selv.
Da du ikke kan have Tekstbokse med samme navn, er der vel ingen ide i at lave en funktion der kan navngive alle i eet hug.
Jeg plejer at navngive dem efter de data de indeholder med st sigende navn der refererer til data.
Avatar billede mugs Novice
18. februar 2004 - 20:34 #2
Et enkelt hint:
Hold dine feltnavne i eet ord. alt andet vil kun give bøvl senere hen.
Avatar billede vanni Nybegynder
18. februar 2004 - 20:41 #3
Ville automatisk give dem et navn + et nummer: t1, t2, t3 o.s.v.

Bagefter ville jeg se, om det var muligt at refere til dem med en løkke...
Avatar billede brynil Nybegynder
18. februar 2004 - 20:43 #4
Hvis det er fordi du gerne vil kunne referere til dine TB'se, så kan du anvende denne metode:

dim strKtrl as string
strKtrl= "Tekst" & Me.ActiveControl.TabIndex
Me(strKtrl).SetFocus

Det forudsætter selvfølgelig du har styr på dine tab's ;-) Men det er en metode man må anvende istedet for ControlArrays som ikke lader sig gøre i VBA.
Avatar billede mugs Novice
18. februar 2004 - 20:44 #5
Access tildeler selv ubundbe tekstbokse et nr:

Tekst0
Tekst2
Tekst4
o.s.v.
18. februar 2004 - 20:54 #6
Brynil-> Hvad er forskellen på dit eks og så bare at skrive:
Me.ActiveControl.Setfocus
hvilket i sig selv er overflødigt da feltet allerede har focus for at kunne være ActiveControl.

Vanni-> Du kan gennemløbe alle dine tekstbokse således:

Dim Ctrl as Control
For Each Ctrl In Me
  If ctrl.Controltype = actextbox then
    'gør et eller andet, f.eks.:
    ctrl.backcolor = 0
  endif
Next Ctrl
Avatar billede mugs Novice
18. februar 2004 - 20:58 #7
thomasjepsen -> Her tildeler du tekstboksene en egenskab nemlig en backcolor, det kunne have været en anden egenskab so forecolor eller Fontbold = true.

Men NAVNGIVNING af en række tekstbokse?
18. februar 2004 - 21:03 #8
Formålet med Vanni's spørgsmål var at kunne gennemløbe alle tekstboksene vha en løkke (jvf hans kommentar kl 20:41:30).
Og hvis man skal gennemløbe alle tekstboksene, er det vel for at gøre noget med dem (f.eks. skifte en egenskab).
Derfor foreslog jeg bare en måde at gennemløbe alle tekstboksene ligegyldigt hvad de hedder. For som du selv skriver, så er det nemmest, hvis tekstboksene har nogle sigende navne som refererer til indholdet.
Avatar billede brynil Nybegynder
18. februar 2004 - 21:08 #9
OK-jeg tænkte at siden han ønskede at give sine tekstbokse kontrollerede navne, så var det fordi han skulle kunne arbejde med dem. Det jeg beskriver kan f.ex anvendes til at flytte fra en tekstboks til en anden med et givet interval eller ud fra nogle forudsætninger.
Avatar billede mugs Novice
18. februar 2004 - 21:10 #10
thomasjepsen -> Helt enig. Jeg forstod spørgsmålet således, at vanni vil gennemløbe alle tekstbokse og ændre det navn som Access automatisk har tildelt dem. Og det finder jeg ikke der er mening i.

Hvis man virkelig gjorde det, så skulle man bagefter gennemløbe alle etiketter og tildele dem en tekst der refererer til indholdet af datafeltet. Ellers er der slet ikke mening i det.
Avatar billede vanni Nybegynder
18. februar 2004 - 21:12 #11
thomasjepsen: Bøj lige det her i neon:

Dim Ctrl as Control
For Each Ctrl In Me
  If ctrl.Controltype = actextbox then
    'gør et eller andet, f.eks.:
    ctrl.backcolor = 0
  endif
Next Ctrl
Avatar billede mugs Novice
18. februar 2004 - 21:14 #12
En enkelt bøjning:
endif
skal være.
end if
Avatar billede mugs Novice
18. februar 2004 - 21:17 #13
Koden skifter alle Tekstbokse's baggrundsfarve til sort.
Avatar billede mugs Novice
18. februar 2004 - 21:24 #14
Vil du have et eksempel, så læg din e-mail.
18. februar 2004 - 21:25 #15
Mugs->endif bliver automatisk til End If af Access :o)

vanni->koden gennemløber alle kontrolelementer på formularen.
Ctrl sættes til hver kontrol en efter en. Hvis det er en tekstboks gøres et eller andet. (f.esk skifter baggrundsfarve)
Avatar billede mugs Novice
18. februar 2004 - 21:28 #16
Ja, Men jeg blev så glad, da jeg troede jeg havde grebet dig i en fejl :o)
Avatar billede vanni Nybegynder
18. februar 2004 - 21:47 #17
thomasjepsen: Forestil dig nedenstående er 12 tekstbokse. Hvis jeg f.eks havde et array med 12 forskellige værdier, jeg ville tildele tekstboksene - hvordan ville du gribe det an:

t1  t5  t9
t2  t6  t10
t3  t7  t11
t4  t8  t12
Avatar billede nih Novice
18. februar 2004 - 22:07 #18
Du kan prøve at eksperimentere med denne her:

Dim i As Integer
Dim mitArray
mitArray = Array("dav", "hej", "godsda", "hest", "osv")
For i = 0 To UBound(mitArray)
    Me.Controls("t" & i + 1) = mitArray(i)
Next i

mvh Niels
Avatar billede jkrons Professor
18. februar 2004 - 22:58 #19
mugs-> Du har ret i at det ikke giver megen mening at ændre de navne Access defaultt tildeler til noget andet "intetsigende", nmen der kan jo være årsager, som vi ikke kender, og vanni har ikke været så meget på banen selv.

Og er der så mange tekstbokse, kan det måske godt være en fordel at gøre det med kode ;-)
18. februar 2004 - 23:09 #20
Jeg mener stadig at man skal holde sig til de sigende navne. I stedet kan man f.eks. benytte tekstboksens Tag-egenskab (Mærke) til at styre tildelingerne.

Hvis de 12 tekstbokse får sat egenskaben Mærke = 1, 2, 3,..., 12 så kan man benytte min kode således:
Dim Ctrl as Control
For Each Ctrl In Me
  If ctrl.tag <> "" then
    ctrl = DitArray(val(ctrl.tag))
  endif
Next Ctrl

Generelt er Tag en genial egenskab til denne slags gennemløb!

Mugs-> bare rolig, du skal nok få masser af chancer. Men ikke denne gang :o)
Avatar billede jkrons Professor
18. februar 2004 - 23:14 #21
thomasjepsen-> Helt enig igen. Og har du ikke sat mærkerne på forhånd kan du gøre det med denne kode:

Sub Mærk()

Dim a As Integer
Dim ctrl As Control

    a = 1
    For Each ctrl In Forms.formular1
        If ctrl.ControlType = acTextBox Then
            ctrl.Tag = a
            a = a + 1
        End If
    Next ctrl
End Sub
Avatar billede nih Novice
18. februar 2004 - 23:18 #22
Hej Thomas

Kan du så forklare hvorfor Access ikke kan rette endSelect til end selecet i en select case

:o)
Avatar billede vanni Nybegynder
19. februar 2004 - 08:00 #23
Svar: thomasjepsen
18/02-2004 23:09:25

Kan jeg se dette tag i egenskaber?
Avatar billede mugs Novice
19. februar 2004 - 08:25 #24
vanni -> Højreklik på feltet > Fanen Andre > Mærke
19. februar 2004 - 08:44 #25
Niels->Nej, jeg ved ikke hvorfor Access ikke retter andre 'fejl'. I tidligere versioner var der flere af den slags hjælp. Bla. rettede Access selv End Sub til End Function (og omvendt) hvis man skrev forkert her. Men siden version  97 eller 2000 så har mange af disse hjælp ikke fungeret :o(
19. februar 2004 - 08:47 #26
rettelse: Det var selvfølgelig Exit Sub, som blev rettet til Exit Function og omvendt. End Sub skriver man jo stort set aldrig, da Access selv indsætter denne.
Avatar billede amerikaner Nybegynder
19. februar 2004 - 10:30 #27
Nej Thomas du er korrekt!  Hvis jeg ændre Sub BlaBlaBla() til en Function BlaBlaBla() so rette End Sub til End Function.
19. februar 2004 - 13:42 #28
Amrikaner-> ja, det sker automatisk i dag, men i de tidligere versioner var der flere hjælpe-automatikker - bla. skiftede den Exit Sub til Exit Function, hvis du stod i en Funktion
Avatar billede vanni Nybegynder
19. februar 2004 - 19:03 #29
Kommentar: jkrons
18/02-2004 23:14:14

Er det kun i runtime, værdien af egenskaben mærke eksisterer?

----------------------------

Kan mærke bruges som reference i stedet for navn?
Avatar billede jkrons Professor
19. februar 2004 - 19:15 #30
Tags eksiterer hele tiden, men kan kun sættes med formularen i designvisning. De kan refereres med den kode, som thomasjepsen beskrev 23:09:25 eller en variant af den. Denne kode finder fx en tekstboks med mærket 7, og giver den baggrundsfarven Rød.

For Each Ctrl In Me
  If Ctrl.Tag = 7 Then
    Ctrl.BackColor = 255
  End If
Next Ctrl
Avatar billede vanni Nybegynder
19. februar 2004 - 20:06 #31
jkrons: Din kode medfører denne meddelelse:

Object does not support this property or method
Avatar billede jkrons Professor
19. februar 2004 - 22:39 #32
Hvilken type kontrolelement har det mærke, du leder efter? Det er ikek alle typer, der kan have en baggrundsfarve.
Avatar billede mugs Novice
19. februar 2004 - 22:41 #33
jkrons -> good point
Avatar billede vanni Nybegynder
20. februar 2004 - 07:32 #34
tekstboks
Avatar billede mugs Novice
20. februar 2004 - 08:02 #35
jkrons kode ar afprøvet og fungerer perfekt.
vanni < Hvis du lægger din e-mail mkan jeg sende dig et eksempel.
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