/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
klassemoduler
Fra : Carsten Troelsgaard


Dato : 21-11-03 10:36

daw daw

Jeg forsøger at lave en linjestykke-klasse med indput af to instances af en
selvgjort punkt-klasse, men det lykkes ikke, hverken property eller function
Er der specielle hensyn at tage til egne 'klasser'?

Carsten



 
 
Carsten Troelsgaard (21-11-2003)
Kommentar
Fra : Carsten Troelsgaard


Dato : 21-11-03 13:42

Denne post er eksemplet som refereres til i indledende post

Class-module 'Linjestykke' har to properties mp1 og 2.
mp1 repræsenterer en klasse med to 'single-datatype' properties x og y.

Sub topunkter genererer straks en 'Ambigious name detected'-error og peger
på mp1 i klassemodulet. Der er åbenbart en iøjefaldende fejl som jeg som
newby ikke kan se ???
..................................

Option Explicit

Private mp1 As New punkt
Private mp2 As New punkt
...........
Property Set mp1(ByVal værdi_mp1 As punkt)
mp1 = værdi_mp1
End Property
.........
Property Set mp2(ByVal værdi_mp2 As punkt)
mp2 = værdi_mp2
End Property
..................
Public Property Get p1() As punkt
Set p1 = mp1
End Property
..................
Public Property Get p2() As punkt
Set p2 = mp2
End Property
.............................................................................
.......................
.............................................................................
.......................

Sub topunkter()

Dim p1 As New punkt
Dim p2 As New punkt
Dim L1 As New linjestykke

p1.x = 1
p1.y = 1

p2.x = 2
p2.y = 2

Set L1.p1 = p1
Set L1.p2 = p2




Tomas Christiansen (21-11-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 21-11-03 14:13

Carsten Troelsgaard skrev:
> Sub topunkter genererer straks en 'Ambigious name detected'-error og peger
> på mp1 i klassemodulet. Der er åbenbart en iøjefaldende fejl som jeg som
> newby ikke kan se ???

Her er mp1 erklæret:
> Private mp1 As New punkt

Her er mp1 defineret:
> Property Set mp1(ByVal værdi_mp1 As punkt)

Når du refererer til mp1, ved VB ikke om det du mener er variablen mp1 eller
egenskaben (som jo egentlig her er en procedure) mp1.

-------
Tomas


Carsten Troelsgaard (21-11-2003)
Kommentar
Fra : Carsten Troelsgaard


Dato : 21-11-03 15:40




> Her er mp1 erklæret:
> > Private mp1 As New punkt
>
> Her er mp1 defineret:
> > Property Set mp1(ByVal værdi_mp1 As punkt)
>
> Når du refererer til mp1, ved VB ikke om det du mener er variablen mp1
eller
> egenskaben (som jo egentlig her er en procedure) mp1.


........ hvordan får jeg en værdi ind i mp1 hvis ikke gennem Property Set mp1
? Jeg forstår at variablen mp1 er sammenhængspunktet mellem Set og Get og
skal vel optræde i dem begge?
hvis jeg fjerner m fra variablen mp1 så genereres den samme error.... Jeg
skal måske i det hele taget ikke erklære nogen variabel?

Carsten



preben nielsen (21-11-2003)
Kommentar
Fra : preben nielsen


Dato : 21-11-03 16:44


"Carsten Troelsgaard" <carsten.troelsgaard@mail.dk> skrev i en
meddelelse news:3fbe23be$0$29407$edfadb0f@dread15.news.tele.dk...
>
>
>
> > Her er mp1 erklæret:
> > > Private mp1 As New punkt
> >
> > Her er mp1 defineret:
> > > Property Set mp1(ByVal værdi_mp1 As punkt)
> >
> > Når du refererer til mp1, ved VB ikke om det du mener er
variablen mp1
> eller
> > egenskaben (som jo egentlig her er en procedure) mp1.
>
>
> ....... hvordan får jeg en værdi ind i mp1 hvis ikke gennem
Property Set mp1
> ? Jeg forstår at variablen mp1 er sammenhængspunktet mellem Set
og Get og
> skal vel optræde i dem begge?

Det er i din property at du skaber sammenhængen mellem din
property's navn og den variabel du gemmer værdien i. Din property
kan godt hedde "p1" men genne værdien i en variabel "xyz" !


> hvis jeg fjerner m fra variablen mp1 så genereres den samme
error.... Jeg
> skal måske i det hele taget ikke erklære nogen variabel?

Fordelen ved at bruge property istedet for direkte variabeltilgang
er selvfølgelig at du med en property har mulighed for kontrol
såsom validering og andet.


meeeeeen..... jeg tror du er lidt forvirret mht. klasser, objekter
og properties. Er det ikke det nedenfor som du vil opnå....

// Klassen LinjeStykke
Option Explicit

Private m_p1 As Punkt
Private m_p2 As Punkt

Property Set p1(ByVal værdi_mp1 As Punkt)
Set m_p1 = værdi_mp1
End Property
Public Property Get p1() As Punkt
Set p1 = m_p1
End Property

Property Set p2(ByVal værdi_mp2 As Punkt)
Set m_p2 = værdi_mp2
End Property
Public Property Get p2() As Punkt
Set p2 = m_p2
End Property

.... jeg har selc defineret klassen Punkt:

// Klassen Punkt
Option Explicit

Dim m_x
Dim m_y

Property Let x(ByVal værdi)
m_x = værdi
End Property
Property Get x()
x = m_x
End Property

Property Let y(ByVal værdi)
m_y = værdi
End Property
Property Get y()
y = m_y
End Property


--
/\ preben nielsen
\/\ prel@post.tele.dk



Carsten Troelsgaard (21-11-2003)
Kommentar
Fra : Carsten Troelsgaard


Dato : 21-11-03 18:02



> meeeeeen..... jeg tror du er lidt forvirret mht. klasser, objekter
> og properties.

Intet kan få mig til at føle mig dum som vba

> Er det ikke det nedenfor som du vil opnå....
snip

tusind tak - det virker!
Carsten



preben nielsen (21-11-2003)
Kommentar
Fra : preben nielsen


Dato : 21-11-03 20:00


"Carsten Troelsgaard" <carsten.troelsgaard@mail.dk> skrev i en
meddelelse news:3fbe44f7$0$29391$edfadb0f@dread15.news.tele.dk...
>
>
> > meeeeeen..... jeg tror du er lidt forvirret mht. klasser,
objekter
> > og properties.
>
> Intet kan få mig til at føle mig dum som vba

Det er nu meget simpelt....


--
/\ preben nielsen
\/\ prel@post.tele.dk



Carsten Troelsgaard (21-11-2003)
Kommentar
Fra : Carsten Troelsgaard


Dato : 21-11-03 23:32


> > Intet kan få mig til at føle mig dum som vba
>
> Det er nu meget simpelt....
snip

Jeg var stolt af at gennemføre min første 'input'-operation for 10 år siden.
Siden har jeg været benovet og benyttet mulighederne i procedurer og
funktioner i vba & excell.
For længe siden skulle jeg have gennemskuet data-type og kollektioner ...
jeg mener at have haft godt brug for det .... det med klassemoduler er svært
at komme ind i som 100 % selvkørende, men vba-ide'en i excel (og
makro-rekorderen) er inspirerende. Jeg tror at hele ideen om at .net
udviklingen nu kører på skinner har fået mig til at indse, at jeg allerede
er godt bag-ud og at et fremskridt er påkrævet.
Jeg løb igennem gruppens posts og var ved at falde af stolen (af latter) da
jeg læste Neo's post om "Custom msgbox... ka' man det?":

Quote:
'Dog vil jeg lige nævne at jeg "stod af" efter "jada" .. ..
Det er svært nok i forvejen det her ... så var det nu nødvendigt at begynde
at himle op
med en masse fremmedord som "modal" og "class" ..
Jeg skal tidsnok lære hvad de ovennævnte er for noget og hvorfor, men lige
nu har jeg
brug for lidt success ... altså en stump kode som giver en MsgBox med 4
brugerdefinerede
knapper.
Un-quote

Hvor forstår jeg ham godt - og i samme åndedrag: tak til dig for koden og
den lille nødvendige success

Carsten




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste