[vb] form aanroepen dmv een variabele?

Pagina: 1
Acties:

  • Devian
  • Registratie: Juni 2000
  • Nu online
code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_Load()
Dim variabele As String
Dim lengte As Integer
    Caption = ("Test print")
    variabele = "frmKlantPrive"
    For teller = 0 To 5
    txtResultaten = txtResultaten & variabele.Label(teller) & _
   Space(30 - Len(frmKlantPrive.Label(teller))) & vbTab & _
   frmKlantPrive.txtVeld(teller) & vbNewLine
    Next teller
                   
End Sub



We hebben een probleem, zoals je in bovenstaande code ziet probeer ik ipv frmKlantPrive.Label(teller) variabele.Label(teller) te gebruiken, dit omdat deze functie voor meerdere forms gebruikt moet worden, we hebben alles geprobeerd, de search doorzocht.. maar er zijn geen soortgelijke topics.

Zoals het hierboven staat werkt het dus niet.

We gebruiken dit gedeelte om verschillende textvakken uit een form weg te schrijven in een enkel textvak. Echter het moet gaan werken en aan te roepen zijn vanuit verschillende forms.

Iemand een idee hoe het moet?

[ Voor 4% gewijzigd door Devian op 12-12-2003 11:25 ]

https://wren.co/join/Devian


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Ooit al eens van arrays gehoord?

https://fgheysels.github.io/


  • Devian
  • Registratie: Juni 2000
  • Nu online
jawel, maar hoe zou je zoiets met een array willen maken dan?
heb je hier een voorbeeld van?

https://wren.co/join/Devian


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Euh, wat bedoel je nu eigenlijk?
Dat je 5x een bepaald form hebt openstaan, en dat je informatie van die form wilt halen?

Je kan toch gewoon een instance maken van die form (= variabele dus), en dan gewoon iedere keer de gewenste info er van uit lezen?

https://fgheysels.github.io/


  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 12:56

Tukk

De α-man met het ẞ-brein

Kijk eens in de MSDN-help file. (F1 als je in VB zit) naar Collections.
Gooi daar alle forms in die je wil hebben en loop er door heen.

Een array kan natuurlijk ook, collections hebben bij mij meestal de voorkeur..

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Devian
  • Registratie: Juni 2000
  • Nu online
whoami schreef op 12 december 2003 @ 11:39:
Euh, wat bedoel je nu eigenlijk?
Dat je 5x een bepaald form hebt openstaan, en dat je informatie van die form wilt halen?

Je kan toch gewoon een instance maken van die form (= variabele dus), en dan gewoon iedere keer de gewenste info er van uit lezen?
euhm, ik heb in form1 een aantal textvakken staan die ik wil wegschrijven naar 1 groot textvak. omdeze daar te kunnen printen of op te slaan in een bestand.

maar we gaan werken met 10+ forms, en die moeten dit allemaal kunnen. Om het stukje code dus werkend te krijgen voor elke form gebruiken we control arrays voor de text vakken en de labels met een teller die we per form willen laten meesturen voor het aantal textvakken dat er zijn (nu nog niet gedaan)

Zodoende is het "form".label(teller) variabel, omdat je met meerdere forms wil t werken. als ik dus vanuit form1 op de knop druk moet het dus form1.label(teller) worden. en als ik vanaf form2 dezelfde functie aanroep moet het form2.label(teller) worden.

hoop dat het zo een beetje duidelijk is

https://wren.co/join/Devian


  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 10:10
Als ik het goed begrijp wil je in een variabele een formulier(=object) stoppen en daarvan dan de eigenschappen en objecten gebruiken?
Dat impliceert in ieder geval je voorbeeld code
Je kan dan toch ook gewoon in je code het formulier benaderen ? Of zoals whoami zegt een instantie van dat formulier aanmaken en in een variabele stoppen ?

code:
1
2
3
4
5
6
7
8
9
Private sub Form_Load()
  
  Dim objForm as Form
  Dim strLabelinhoud as String  

  set objForm = new frmKlantprive
  strLabelinhoud = objForm.Label.Caption
  
End sub


En wil je dit generieker maken, dat wil zeggen vanuit het aanroepende formulier
meegeven welk formulier het moet zijn stop je m in een public sub en roep je die sub aan in het formulier waar de boel staat en geef je dat formulier mee als object

code:
1
2
3
4
5
6
Public Sub Form_Prop(ByVal objGivenForm as Form)
    
  Dim objForm
  set objForm = new objGivenForm

End sub


Aanroepen in je formulier d.m.v.

code:
1
2
3
4
5
Private Sub Command1_Click()

  Call Form_Prop(Me)

End sub

[ Voor 56% gewijzigd door MMUilwijk op 12-12-2003 11:51 ]

Everytime I suffer I become a better man because of it


  • Tranq
  • Registratie: Oktober 1999
  • Laatst online: 16-10-2024
Hint:

Dim frm as Form
Set frm = new frmFormulier

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Goeie hint. :)

Trouwens, waarom moet je die variabelen eerst in een textvak gaan zetten om ze te kunnen opslaan?

https://fgheysels.github.io/


  • Devian
  • Registratie: Juni 2000
  • Nu online
w0000t :D het werkt :p

Ik had al gewerkt met dim test as form, maar het newform gedeelte kende ik niet :p

harstikke bedankt :D


we wouden het in een textvak wegschrijven voor het printen en aanpassen van lettertype en grote, maar we zijn er al achter dat dit niet echt werken gaat ;) omdat we nu niet met printer.currentx kunnen werken(omdat alles in 1 textvak zit) en dusdoende de uitlijning niet klopt :). Maar dat gaan we nu wel ombouwen :)

Iig harstkke bedankt :)

https://wren.co/join/Devian


  • Devian
  • Registratie: Juni 2000
  • Nu online
En wil je dit generieker maken, dat wil zeggen vanuit het aanroepende formulier
meegeven welk formulier het moet zijn stop je m in een public sub en roep je die sub aan in het formulier waar de boel staat en geef je dat formulier mee als object

code:
1
2
3
4
5
6
Public Sub Form_Prop(ByVal objGivenForm as Form)
    
  Dim objForm
  set objForm = new objGivenForm

End sub


Aanroepen in je formulier d.m.v.

code:
1
2
3
4
5
Private Sub Command1_Click()

  Call Form_Prop(Me)

End sub
Dat gedeelte krijg ik nog niet voor elkaar.

Zolang ik objgivenform als string defineer en ipv me "test" doe en een msgbox test open in het andere formulier neemt hij de waardes netjes mee. echter zodra ik het ga doen zoals jij het erneer zet krijg ik een user defined type not defined.

Als ik ipv test frmklantprive doe dan krijg ik later bij het defineren van objgivenform een type mismatch (wat me logisch lijkt).

Nog suggesties?

https://wren.co/join/Devian


  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 10:10
Euhm ja, in de snelheid was ik even vergeten het object te declareren... dat moet je nog even doen. Of het een form of een object moet zijn mag je zelf even uitpuzzelen ;)

Everytime I suffer I become a better man because of it


  • xtra
  • Registratie: November 2001
  • Laatst online: 19-11-2025
In plaats van het form-object mee te geven aan de sub kun je evt. ook gebruik maken van Screen.ActiveForm.

Dat verwijst - de naam zegt het al - naar het formulier dat op dat moment actief is.
Pagina: 1