Toon posts:

[vb6] slepen zonder verdwijnen in visual Basic 6

Pagina: 1
Acties:

Verwijderd

Topicstarter
Weet iemand hoe je items uit een listbox kan slepen en kan droppen in een textbox zonder dat de items uit de listbox verdwijnen?

Ik heb al heel wat code gevonden (bijv. op http://www.ilook.fsnet.co.uk/vb/vbd&d.htm)
, maar nog niet hoe je het voor elkaar krijg dat het item niet uit de listbox verdwijnt.

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Kijk eens hier naar:
Visual Basic:
1
2
lstDroppedItems.RemoveItem MyIdx
lstDraggedItems.RemoveItem MyIdx

Ik weet alleen niet welke van de 2, omdat ik niet weet wat wat precies is.

Verwijderd

Topicstarter
thnxs,

daar kan je het inderdaad mee beinvloeden, er gaat nu wel wat anders fout, maar daar ga ik wel even naar kijken

Verwijderd

Topicstarter
Ik wil het volgende maken.
Er is een lstDraggedItems van waaruit gesleept kan worden, en waar de items in blijven staan nadat een copie van het item gesleept is.
Er is een txtCommentaar van waaruit gesleept kan worden en waarbij de tekst ook blijft staan

er zijn txt1, txt2 en txt3 waarnaar gesleept kan worden.
Tussen deze 3 vakken moet je onderling ook kunnen slepen. Nu wil ik graag dat als je een item uit 1 van de 3 vakken sleept het verdwijnt uit het vak waar je uit sleept (op het moment van droppen)
Ik heb al een opzetje gemaakt (zie commentaar in de code)--> in MyTxtId wordt bijgehouden uit welk vak gesleept wordt

weet iemand welke statements hier moeten komen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
Private MyIdx As Long
Private MyTxtId As Long


Private Sub Form_Load()
' Set the visible property of txtItem to false
txtItem.Visible = False
'Add items to list1 (lstDraggedItems)
lstDraggedItems.AddItem "Apple"
lstDraggedItems.AddItem "Orange"
lstDraggedItems.AddItem "Grape"
lstDraggedItems.AddItem "Banana"
lstDraggedItems.AddItem "Lemon"

txtCommentaar.Text = "tastes good"

End Sub

Private Sub lstDraggedItems_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
txtItem.Text = lstDraggedItems.Text
If txtItem.Text = "" Then Exit Sub ' Don't perform a drag for nothing
txtItem.Top = Y + lstDraggedItems.Top
txtItem.Left = X + lstDraggedItems.Left
txtItem.Drag
MyIdx = lstDraggedItems.ListIndex
lstDraggedItems.Tag = "lijst" ' deze houdt bij vanuit welk vak er gesleept wordt: aan betekent vanuit de lijst
End Sub



Private Sub txt1_DragDrop(Source As Control, X As Single, Y As Single)

On Error GoTo EndHere

    txt1.Text = txtItem.Text
            
        If lstDraggedItems.Tag = "tekst" Then ' verwijdert de tekst uit het gesleepte vak
        
        'hier moet een statement komen dat uit het juiste vak de tekst verwijdert
        
        Else
         End If

EndHere:
End Sub

Private Sub txt2_DragDrop(Source As Control, X As Single, Y As Single)

On Error GoTo EndHere

    txt2.Text = txtItem.Text
    
        If lstDraggedItems.Tag = "tekst" Then ' verwijdert de tekst uit het gesleepte vak
        
            'hier moet een statement komen dat uit het juiste vak de tekst verwijdert
        Else
         End If
    

EndHere:
End Sub

Private Sub txt1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

lstDraggedItems.Tag = "tekst" ' deze houdt bij vanuit welk vak er gesleept wordt: tekst betekent vanuit txt1,txt2 of txt3
txtItem.Text = txt1.Text
If txtItem.Text = "" Then Exit Sub ' Don't perform a drag for nothing
txtItem.Top = Y + txt1.Top
txtItem.Left = X + txt1.Left
txtItem.Drag
MyTxtId = 1 'houdt bij uit welk tekstvak er gesleept wordt


End Sub

Private Sub txt2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

lstDraggedItems.Tag = "tekst" ' deze houdt bij vanuit welk vak er gesleept wordt: tekst betekent vanuit txt1,txt2 of txt3
txtItem.Text = txt2.Text
If txtItem.Text = "" Then Exit Sub ' Don't perform a drag for nothing
txtItem.Top = Y + txt2.Top
txtItem.Left = X + txt2.Left
txtItem.Drag
MyTxtId = 2 'houdt bij uit welk tekstvak er gesleept wordt


End Sub

Private Sub txt3_DragDrop(Source As Control, X As Single, Y As Single)

On Error GoTo EndHere

    txt3.Text = txtItem.Text
            
        If lstDraggedItems.Tag = "tekst" Then ' verwijdert de tekst uit het gesleepte vak
        
        'hier moet een statement komen dat uit het juiste vak de tekst verwijdert
        
        Else
         End If

EndHere:
End Sub


Private Sub txt3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

lstDraggedItems.Tag = "tekst" ' deze houdt bij vanuit welk vak er gesleept wordt: tekst betekent vanuit txt1,txt2 of txt3
txtItem.Text = txt3.Text
If txtItem.Text = "" Then Exit Sub ' Don't perform a drag for nothing
txtItem.Top = Y + txt3.Top
txtItem.Left = X + txt3.Left
txtItem.Drag
MyTxtId = 3 'houdt bij uit welk tekstvak er gesleept wordt


End Sub

Private Sub txtCommentaar_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

lstDraggedItems.Tag = "commentaar" ' deze houdt bij vanuit welk vak er gesleept wordt: commentaar betekent vanuit txtCommentaar
txtItem.Text = txtCommentaar.Text
If txtItem.Text = "" Then Exit Sub ' Don't perform a drag for nothing
txtItem.Top = Y + txtCommentaar.Top
txtItem.Left = X + txtCommentaar.Left
txtItem.Drag


End Sub

[ Voor 5% gewijzigd door Verwijderd op 22-07-2004 15:48 ]


Verwijderd

Topicstarter
ik ben al een heel eind als iemand me kan vertellen hoe ik bepaalde textboxen (txt1,txt2,txt3) kan aanspreken doormiddel van een nummer opgeslagen in een variabele.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

1: maak een controlarray
(copy past een tekstbox en klik op ja) :)
Je verwijst naar de individuele controls met txt(index).

2: ranziger: losse tekstboxen txt1,txt2 etc, en dan: me.controls("txt"& cstr(index))

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • Lorn
  • Registratie: Maart 2000
  • Laatst online: 13-01-2025

Lorn

I have a bad feeling...

Lijkt me inderdaad handiger als je een controlarray aanmaakt voor de drie textboxen waar je naar wilt kunnen slepen. Kun je je code een heel stuk compacter houden namelijk.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub lstDraggedItems_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = vbLeftButton Then
    Call lstDraggedItems.Drag(vbBeginDrag) 'Begin de drag operatie
  End If
End Sub

Private Sub txtCommentaar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  'Alleen drag & drop starten als er text in de textbox staat
  If Button = vbLeftButton And Not (txtCommentaar.Text = "") Then
    Call txtCommentaar.Drag(vbBeginDrag) 'Begin de drag operatie
  End If
End Sub

Private Sub txtItem_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  'Alleen drag & drop starten als er text in de textbox staat
  If Button = vbLeftButton And Not (txtItem.Item(Index).Text = "") Then
    Call txtItem.Item(Index).Drag(vbBeginDrag)
  End If
End Sub

Private Sub txtItem_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
  If TypeName(Source) = "ListBox" Then
    'De source is de listbox, text overnemen uit de list
    txtItem(Index).Text = Source.List(Source.ListIndex)
  ElseIf TypeName(Source) = "TextBox" Then
    'De source is een textbox, neem de tekst over uit de text-property
    txtItem.Item(Index).Text = Source.Text
    'Leeg de text-property als de source een van de txtItem textboxen is
    If Source.Name = "txtItem" Then Source.Text = ""
  End If
End Sub

[ Voor 47% gewijzigd door Lorn op 22-07-2004 17:06 ]


Verwijderd

Topicstarter
Thnxs!

werkt inderdaad heel lekker met zo'n control array
Pagina: 1