Toon posts:

VB --> Public

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem (logisch);
Ik ben al een tijdje bezig met VB6 maar zit nog met iets wat misschien heeeel gemakkelijk is maar het is voor mij toch een probleem.

Als ik een bvb frmMain (Form) de volgende declaratie uitvoer:
Public nWedID as Integer
nWedID = 33

En als ik later in een ander formulier (Form) deze wil opvragen krijg ik de waarde 0 :
MsgBox frmMain.nWedID

Messagebox >> 0

Hoe kan dit, wat ben ik vergeten of wat is er verkeerd??
Please help me.

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Je unload je frmMain toch niet he als je die var uit een andere form wilt opvragen?

Gebruik anders gewoon een module.. zou geen probleem moeten zijn

Verwijderd

Topicstarter
Nee dat doe ik niet, daarom vind ik het juist zo vreemd :?

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

owja je werkt toch niet toevallig met zogenaamde forms die zich gedragen als functie he? Daar heb ik ook een suf probleempje mee gehad :)

Verwijderd

Topicstarter
En als ik in dat andere formulier frmmain.nWedID aanpas en vervolgens naar frmMain terug ga, dan is de waarde nog steeds 33.

Verwijderd

Topicstarter
Ohh ja, als ik in hetzelfde in frmMain, frmMain.nWedID aanroep dan krijg ik ook 0 te zien. :? :? :?

Verwijderd

Topicstarter
Wat bedoel je met forms die zich gedragen als functie??

  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 16-09 09:54
als je een waarde ook buiten je form wil gebruiken moet je m volgens mij op zn minst als global definieren.
of je maakt een module en zet daar gewoon bovenaan
dim nWedID as Integer
en dan kan je daar vanuit alle forms bij

oja niet dimmen vanuit form_load ofzo, dat werkt niet. altijd nog vanuit (general) (declarations)

Maak je eigen poll


Verwijderd

Topicstarter
Ja dat doe ik ook (gewoon bovenaan, voor dat alle functies beginnen).

Dit probleem heb ik ook wel eens met bvb een datab. connection of een control (bvb een tree).

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Op zondag 04 november 2001 20:28 schreef BOOTZ het volgende:
als je een waarde ook buiten je form wil gebruiken moet je m volgens mij op zn minst als global definieren.
Alu u de documentatie van vb er op na leest, zult u zien dat er geen keyword global bestaat, maar dat deze bij het keyword Public/Private uitkomt.

Maw, global bestaat niet (het werkt wel overigens, raar).

Een een public variabele in een code module is globaal zichtbaar.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Over global:
Global is de verouderde versie van Public en wordt nog ondersteund om backwards-compatible te zijn.

Over het probleem:
In welk event zet je de waarde van die variabele?
Als het bijv. de Activate is en je load hem alleen maar, zal ie daar niet komen.
Ik gebruik het best wel vaak en ook property procedures en je moet alleen in de gaten houden dat je het form niet unload, zoals hiervoor al gezegd is.

Verwijderd

Topicstarter
Ik zal het probleem nog even goed uitleggen (probeer ik):

in frmMain declareer ik nWedID bovenaan voor alle functies ed :

public nWedID as Integer

Ergens in een onderstaande functie staat:

nWedID = 33

even later controleer ik de waarde met een msgbox, OK, het klopt.
Maar als ik in een ander venster (ik unload frmMain niet) het getal opvraag krijg ik 0:

Msgbox frmMain.nWedID 'komt 0 te staan

(Dit geld ook als ik in frmMain zelf frmMain.nWedID opvraag.)
Als ik weet in frmMain kom en met een msgbox het opvraag:

MsgBox nWedID 'krijg ik wel 33

Het lijkt er op dat de twee variabelen naast elkaar werken. Ik heb ook zoiets gehad met een database.connection en een treeview.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

http://www.totalgsm.net/admin/tnetzooi/PublicFormVar.zip

Dit is een VB6 projectje, wat volgens mij gewoon werkt hoor :)

|_____vakje______|


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Hoe heb je het form geinstancieerd? Met
code:
1
2
Set blabla = New frmMain
blabla.Show

of direct met
code:
1
frmMain.Show

Ik weet namelijk niet zeker of het in het eerste geval wel een globale var is of een klassemember van je form.

Dus, of je hem moet aanspreken met blabla.nWedID, ipv frmMain.nWedID.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Pc123
  • Registratie: Oktober 2000
  • Laatst online: 15-09 20:53
Je kunt die public variable ook in een module zetten.

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 16-09 21:53

Greyfox

MSX rulez

Wat dacht je er van om te gaan debuggen? |:(
Dan kun je precies zien waar het fout gaat!

MSX 2 rulez more


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Op maandag 05 november 2001 08:27 schreef Pc123 het volgende:
Je kunt die public variable ook in een module zetten.
Als die variabele een soort van return waarde is van je formulier zou ik 'em bij het formulier houden, of met get/set functies werken. Globale variabelen zijn een beetje vies namelijk, ook in basic.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Er valt niets te debuggen, er is geen fout (jammer genoeg), het lijkt er op dat het wordt bekeken als twee verschillende variabelen. Zoals ik als zei heb ik dit ook wel eens gehad met een treeview (control) dus het heeft niets te maken met het declareren (denk ik). Misschien staat er iets verkeerd ingesteld in VB zelf.
Iemand suggesties??

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Maak er eens een property van i.p.v. een public variabele, kijken wat ie dan doet.
Zet een watch (?) zodat ie stopt wanneer de waarde verandert (wat ie doet als ie eerst 33 was, en als je 'm in de 2e form opvraagt 0 is), kijken of het over dezelfde variabele gaat.
Maak een nieuw project en kijk eens of het daar wel werkt.
Post je source.
Uhmm dat was het wel zo'n beetje.
Oh ja, verzin een manier om niet met een publieke variabele te hoeven werken :P (door bv een set-property te maken in je 2e form).

PS ik heb nog nooit het probleem gehad zoals jij het beschrijft (ook niet met controls trouwens)

Exact expert nodig?


Verwijderd

heb je ook niet wat meer source ofzo :?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Op maandag 05 november 2001 09:32 schreef MMB het volgende:
Er valt niets te debuggen
Zou je nog ff antwoord kunnen geven op mijn vragen van een paar posts terug?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Het voorbeeldje wat ik gaf geeft aan op welke manier het werkt. Als jij nou probeert te omschrijven in welke zin jouw brouwsel van mijn voorbeeldje afwijkt, dan kan ik (kunnen we?) meer helpen misschien.

|_____vakje______|


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Als ik dit doe met een formulierclass Form1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Main()

    Dim frm As Form1
    
    Set frm = New Form1
    
    frm.getal=33
[brk]frm.Show vbModal
    
    Unload frm
    
    Set frm = Nothing
    
[brk]Form1.Show vbModal
    
    Unload Form1
    
End Sub

En ik vraag bij de eerste [brk] een getal op met Form1.Getal, zie ik exact wat jij beschrijft: frm.Getal is 33, terwijl Form1.getal nog 0 is.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Op maandag 05 november 2001 13:45 schreef farlane het volgende:
Als ik dit doe met een formulierclass Form1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Main()

    Dim frm As Form1
    
    Set frm = New Form1
    
    frm.getal=33
[brk]frm.Show vbModal
    
    Unload frm
    
    Set frm = Nothing
    
[brk]Form1.Show vbModal
    
    Unload Form1
    
End Sub

En ik vraag bij de eerste [brk] een getal op met Form1.Getal, zie ik exact wat jij beschrijft: frm.Getal is 33, terwijl Form1.getal nog 0 is.
Ja maar da's toch logisch. Je maakt eerst een nieuw object aan, frm, en dat leidt je af van Form1. Maar is dus _niet_ form1. Dus als je dan frm.Waarde zet, is het logisch dat Form1.waarde leeg (0) is, en frm.Waarde gevuld is.

Als de originele topic-starter nou gewoon ff wat source neergooit zoals het bij hem (haar?) werkt (of juist niet werkt) dan praten we iig allemaal over hetzelfde...

Exact expert nodig?


  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 16-09 09:54
Op zondag 04 november 2001 22:22 schreef MMB het volgende:
Ik zal het probleem nog even goed uitleggen (probeer ik):

in frmMain declareer ik nWedID bovenaan voor alle functies ed :

public nWedID as Integer

Ergens in een onderstaande functie staat:

nWedID = 33

even later controleer ik de waarde met een msgbox, OK, het klopt.
Maar als ik in een ander venster (ik unload frmMain niet) het getal opvraag krijg ik 0:

Msgbox frmMain.nWedID 'komt 0 te staan

(Dit geld ook als ik in frmMain zelf frmMain.nWedID opvraag.)
Als ik weet in frmMain kom en met een msgbox het opvraag:

MsgBox nWedID 'krijg ik wel 33

Het lijkt er op dat de twee variabelen naast elkaar werken. Ik heb ook zoiets gehad met een database.connection en een treeview.
daar gaat het idd fout
Msgbox frmMain.nWedID 'komt 0 te staan
--->
Msgbox nWedID 'komt 33 te staan als het goed is

je moet dus niet frmMain. voor de variabele zetten, is nergens voor nodig. op dat moment wordt het namelijk een property ofzo...

Maak je eigen poll


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Op maandag 05 november 2001 15:22 schreef BOOTZ het volgende:
je moet dus niet frmMain. voor de variabele zetten, is nergens voor nodig. op dat moment wordt het namelijk een property ofzo...
Als je 'm vanuit een andere form wil opvragen wel.
(en binnen dezelfde form hoeft het niet, maar mag wel. Je krijgt iig altijd de waarde uit dezelfde variabele terug, nl. die Public...).

Exact expert nodig?


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Op maandag 05 november 2001 13:54 schreef Crazy_D het volgende:
Ja maar da's toch logisch. Je maakt eerst een nieuw object aan, frm, ..blabla...
Je hoeft mij niet uit te leggen hoe dat in elkaar zit. De vraag was of de topicstarter het ook begrijpt.
Als de originele topic-starter nou gewoon ff wat source neergooit zoals het bij hem (haar?) werkt (of juist niet werkt) dan praten we iig allemaal over hetzelfde...
Goed idee.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Ja zeker, daar ben ik weer. Hele dag weg geweest, sorry. :'(

Farlane:
Ik heb 'frmMain.Show 1' gebruikt.

Crazy_D:
Volgens mij heb jij gelijk. Ik open het project met 'Sub Main()' en dan maak ik een afgeleide van frmMain:

Public fMainForm As frmMain


Sub Main()
frmSplash.Show
frmSplash.Refresh
Set fMainForm = New frmMain
Load fMainForm
Unload frmSplash


fMainForm.Show
End Sub

En als ik dan in frmMain de waarde aanpas, past die het eigenlijk in die afgeleide aan. Zodat als ik vanuit een ander formulier 'frmMain.nWedID' aanroep, in het niets zit te graaien, ik moet namelijk naar 'fMainForm.nWedID' verwijzen.

Een beetje DOM van mij. |:(

Iedereen heel erg bedankt voor de moeite.

ps ja farlane dat snap ik gelukkig wel, ik zat me nu gewoon blauw te staren op weet ik niet wat (ohh ja) :7

Nogmaals iedereen bedankt.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
nuff said :+

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

[depressieve mode]
Dit is typisch zo'n toopic waarom ik soms het idee heb dat ik echt op "invisible" sta voor 99% van de GoTters. Oké, het probleem was uiteindelijk van andere aard, maar het had MMB in ieder geval kunnen laten zien dat het niet aan zijn VB6 installatie ligt of dat het een bug is ofzo.

Ik heb alleen de indruk dat niemand dit leest, dus waarom schrijf ik dit.
[/depressieve mode]

[optimistische mode]
Toch zijn jullie liev O+
[/optimistische mode]

|_____vakje______|


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Dit is typisch zo'n toopic waarom ik soms het idee heb dat ik echt op "invisible" sta voor 99% van de GoTters.Ik heb alleen de indruk dat niemand dit leest, dus waarom schrijf ik dit.
Ik heb je post wel gelezen, maar niet de moeite genomen om je projectje te bekijken omdat ik er redelijk van overtuigd was wat er fout ging.
Toch zijn jullie liev O+
Ook uw input wordt gewaardeerd ! :*

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Ja sorry CyberSnooP, ik heb het wel bekeken en het deed het inderdaad. Je hebt gelijk dat het dom is dat ik daar niets over zei, bij deze: Ook heel erg bedankt!!
Pagina: 1