/ 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
Listview i Embedded Visual Basic 3
Fra : j_nielsen@alta.dk


Dato : 13-03-01 16:39

Hejsa NG

Jeg har aldrig rørt Visual Basic før (normalt koder jeg i Delphi og C/C++)
og er nu blevet bedt om at afslutte et program som skal fremvises på CEBIT
(for at illustrere at jeg er presset :), så jeg håber der er nogen der kan
hjælpe mig.

Det skal lige siges at mit udviklingsværktøj er Microsoft eMbedded Visual
Basic 3 og programmet skal køre på en Compaq i-PAQ.

Problemstillingen:

Jeg har 2 listviews hvor jeg gerne vil flytte elementer fra det ene
listview til det andet. Det har jeg heller ingen problemer med før jeg
"rammer ved siden af". Hvis jeg ikke har markeret noget i det listview jeg
prøver på at flytte fra, får jeg en gevaldig fejl, og det har ikke været
mig muligt at håndtere dette. Functionen ser således ud:

lvMaterials (listview jeg ønsker at flytte fra)
lvBom(listview jeg ønsker at flytte til)


Private Sub btnAdd_Click()
Dim fRecord As ListItem
Dim i, j
Dim ac As Integer
Dim isFound As Boolean

isFound = False
For i = 1 To lvBom.ListItems.Count
If {checker om den findes i forvejen} Then
(does something)
isFound = True
End If
Next
If Not isFound Then
Set fRecord = lvBom.ListItems.Add(, , lvMaterials.SelectedItem.Text)
fRecord.SubItems(1) = cbQty.Text
End If
End Sub


Problemet opstår da lvMaterials.SelectedItem er nil, men det kan jeg
umiddelbart ikke checke på. Jeg kan heller ikke checke på selve
lvMaterials.SelectedItem.Text da lvMaterials.SelectedItem ikke findes.
Jeg har prøvet at finde noget om errorhandling på nettet og i den
medfølgende, meget mangelfulde, online hjælp, men forgæves. Jeg fandt On
Error GoTo 0 (som er den eneste man kan bruge i Embedded VB) men det kan
jeg heller ikke få til at virke. jeg tænkte at hvis jeg ikke kunne få lov
til at checke på variablerne, kunne jeg bare fange fejlen og lade
programmet fortsætte uden at brugeren opdagede noget, men sådan skulle det
ikke være.
Hvad kan jeg checke på eller hvordan håndterer jeg den error der opstår?

På forhånd tusind tak for hjælpen

Jesper Nielsen
Alta A/S
www.alta.dk

 
 
Jens Vestergaard (13-03-2001)
Kommentar
Fra : Jens Vestergaard


Dato : 13-03-01 17:01

<j_nielsen@alta.dk> skrev i en meddelelse
news:98leur$1n$1@news.inet.tele.dk...
>Hejsa NG
[snip]

>Jeg har 2 listviews hvor jeg gerne vil flytte elementer fra det ene
>listview til det andet. Det har jeg heller ingen problemer med før jeg
>"rammer ved siden af". Hvis jeg ikke har markeret noget i det listview jeg
>prøver på at flytte fra, får jeg en gevaldig fejl, og det har ikke været
>mig muligt at håndtere dette.

Det er ikke nødvendigvis super elegant, men du kan jo lave et For Each loop,
som tjekker .Selected på hvert ListItem.

Noget i retning af

Dim li as ListItem
Dim bSelected as Boolean
For Each li In lvMaterials
If li.Selected Then
bSelected = True
Exit For
End If
Next

If Not bSelected Then
.....
' så er ingen ListItems Selected.

---
mvh
Jens Vestergaard
www.railsoft.dk








Jens Vestergaard (13-03-2001)
Kommentar
Fra : Jens Vestergaard


Dato : 13-03-01 17:12

"Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
news:98lgcf$8tu$1@news.inet.tele.dk...
> <j_nielsen@alta.dk> skrev i en meddelelse
> news:98leur$1n$1@news.inet.tele.dk...
> >Hejsa NG
> [snip]
>
> >Jeg har 2 listviews hvor jeg gerne vil flytte elementer fra det ene
> >listview til det andet. Det har jeg heller ingen problemer med før jeg
> >"rammer ved siden af". Hvis jeg ikke har markeret noget i det listview
jeg
> >prøver på at flytte fra, får jeg en gevaldig fejl, og det har ikke været
> >mig muligt at håndtere dette.
>
> Det er ikke nødvendigvis super elegant, men du kan jo lave et For Each
loop,
> som tjekker .Selected på hvert ListItem.
>
> Noget i retning af

Koden rettet i 3. linie

> Dim li as ListItem
> Dim bSelected as Boolean
> For Each li In lvMaterials.ListItems
> If li.Selected Then
> bSelected = True
> Exit For
> End If
> Next
>
> If Not bSelected Then
> ....
> ' så er ingen ListItems Selected.
>
> ---
> mvh
> Jens Vestergaard
> www.railsoft.dk
>
>
>
>
>
>
>



Bo Larsson (13-03-2001)
Kommentar
Fra : Bo Larsson


Dato : 13-03-01 19:13

On 13 Mar 2001 15:39:07 GMT, j_nielsen@alta.dk wrote:

>
>Private Sub btnAdd_Click()
> Dim fRecord As ListItem
> Dim i, j
> Dim ac As Integer
> Dim isFound As Boolean
>
> isFound = False
> For i = 1 To lvBom.ListItems.Count
> If {checker om den findes i forvejen} Then
> (does something)
> isFound = True
> End If
> Next
> If Not isFound Then
      If Not (lvMaterials.SelectedItem Is Nothing) Then
> Set fRecord = lvBom.ListItems.Add(, , lvMaterials.SelectedItem.Text)
> fRecord.SubItems(1) = cbQty.Text
      End If
> End If
>End Sub
>
>

Ovenstående er skrevet efter hukommelsen, men burde virke alligevel.


--
Bo Larsson

Tomas Christiansen (13-03-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 13-03-01 21:36

Bo Larsson skrev:
....
> > isFound = False
> > For i = 1 To lvBom.ListItems.Count
> > If {checker om den findes i forvejen} Then
> > (does something)
> > isFound = True
> > End If
> > Next
> > If Not isFound Then
> If Not (lvMaterials.SelectedItem Is Nothing) Then
> > Set fRecord = lvBom.ListItems.Add(, , lvMaterials.SelectedItem.Text)
> > fRecord.SubItems(1) = cbQty.Text
> End If
> > End If

Du har fat i den lange ende: Det handler om at checke om
lvMaterials.SelectedItem er lig Nothing.

Men rent principielt burde linien

If Not (lvMaterials.SelectedItem Is Nothing) Then

flyttes op lige før linien

isFound = False

idet det nok er lidt svært at køre for-løkken, for at checke om den valgte
linie lvMaterials findes i forvejen i lvBom, hvis lvMaterials.SelectedItem
er lig Nothing...

-------
Tomas



j_nielsen@alta.dk (14-03-2001)
Kommentar
Fra : j_nielsen@alta.dk


Dato : 14-03-01 12:32

Jeg takker og bukker for de hurtige svar. Nu virker det og jeg kan få en
rolig nats søvn, velvidende at min projektleder ikke får nogen problemer
under fremvisningen :)

Venligst
Jesper

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

Månedens bedste
Årets bedste
Sidste års bedste