Toon posts:

[VB6] unloaden uit ControlArray

Pagina: 1
Acties:

Verwijderd

Topicstarter
Lieve devvers,

In [url = [rml][ VB6] Error 365 unable to unload[/rml]]deze[/url] thread heb ik al gemerkt dat het niet mogelijk is om controls te unloaden uit een array, bij ComboBox_click en form_paint en nog een heleboel meer.

De oplossing was om de controls (checkboxes, overigens) gewoon onzichtbaar te maken.
Nu komt daar het volgende probleem bij.
Voor dezelfe controlarray gebuik ik een VScrollBar om controls die niet op de form passen, zichtbaar te maken.
Dan worden ook ineens weer de controls zichtbaar, die ik eigenlijk wilde unloaden. :O

Ik sta op het punt om heel domme dingen te gaan doen zoals de controls dan maar heel erg ver naar links te verschuiven, zodat ze niet meer zichtbaar zijn, als ik ze eigenlijk had willen unloaden. ECHT hardcore Houtje-Touwtje zeg maar..

HELP!!
ps Gorky gorgi_19, ik had per ongeluk al gepost, verkeerde knop. Wilde net gaan ediiten, maar toen had je hem al gelockt. Sry, foutje.

[ Voor 2% gewijzigd door gorgi_19 op 26-05-2004 13:52 . Reden: Je kan te ver gaan met m'n naam.. ;) ]


Verwijderd

Misschien kan je gebruik maken van de TAG-property. Zet daar een waarde in wanneer deze (on)zichtbaar moet zijn en loop dan door je collectie heen en vraag af of de tag van het control een bepaalde waarde bevat en zet dan pas de visible property op TRUE (of False, Whatever...)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 17:00

mulder

ik spuug op het trottoir

Kun je niet in de MouseUp unloaden?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
op een combobox zit er geen mouseup

ik zou dit kunnen gebruiken:
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
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim Pt As POINTAPI
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'redirect all mouse input to this form
    SetCapture Me.hwnd
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture
    SetCapture Me.hwnd
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    'Get the current cursor position
    GetCursorPos Pt
    Me.CurrentX = 0
    Me.CurrentY = 0
    'Clear the screen
    Me.Cls
    Me.Print "Cursor position:"
    'Print the mouse coördinates to the form
    Me.Print "X:" + Str$(Pt.X) + " Y:" + Str$(Pt.Y)
    Me.Print " (Press ALT-F4 to unload this form)"
    SetCapture Me.hwnd
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture
    SetCapture Me.hwnd
End Sub

of iets dergelijks.
dank voor de tip - ik ga het uitproberen.
ps de code komt uit API-guide, een leuke app (aanrader)

Verwijderd

Topicstarter
nee, dit is een ramp.
als je 1 keer op de form zelf klikt, kom je er nooit meer vanaf..
valt misschien wel weer te omzeilen, maar ik doe het wel met de tags.

Dank!


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture
    Dim u As Long
    Dim c As Integer
    For c = chkShow0.LBound + 1 To chkShow0.UBound
        If Not chkShow0(c) Is Nothing Then
            If chkShow0(c).Tag = c_UnloadTag Then Unload chkShow0(c)
            u = u + 1
        End If
    Next c
    If u > 0 Then MsgBox u & " controls removed"
    SetCapture Me.hwnd
End Sub


edit:

Ik had gehoopt dat de form op deze manier het click event ontvangt, hoeel het plaatsindt op een ander object, en vervolgens de click event van het aangeklikte object getriggerd wordt.
Maar helaas....

[ Voor 17% gewijzigd door Verwijderd op 26-05-2004 22:36 ]