[VB6] Event aanroepen mbv control var

Pagina: 1
Acties:

  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Ik vraag me af of ik, als ik een variabele van het type Control heb (gevuld uiteraard), met behulp van die variabele een event van dat control kan aanroepen.

Voorbeeldje:
code:
1
2
3
Dim ctlA As Control

Set ctlA = frmMain.ControlNaam

In plaats van ControlNaam_MouseDown Button, Shift, X, Y wil ik hier dus mbv ctlA het MouseDown event voor ControlNaam aanroepen.

Enig idee hoe ik dat voor elkaar krijg? Als het kan zal het wel weer iets stoms zijn waar ik gewoon overheen kijk, maargoed... ik kom d'r ff niet uit. Iemand? :)

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 05-09 11:09

LauPro

Prof Mierenneuke®

Op zaterdag 25 mei 2002 01:39 schreef Mr. B. het volgende:
Ik vraag me af of ik, als ik een variabele van het type Control heb (gevuld uiteraard), met behulp van die variabele een event van dat control kan aanroepen.

Voorbeeldje:
code:
1
2
3
Dim ctlA As Control

Set ctlA = frmMain.ControlNaam

In plaats van ControlNaam_MouseDown Button, Shift, X, Y wil ik hier dus mbv ctlA het MouseDown event voor ControlNaam aanroepen.

Enig idee hoe ik dat voor elkaar krijg? Als het kan zal het wel weer iets stoms zijn waar ik gewoon overheen kijk, maargoed... ik kom d'r ff niet uit. Iemand? :)
Je zult dan dan helemaal 'basic-to-basic' moeten gaan en met 'SendMessage' moeten werken. Dus dat je programma een kik krijgt zodra je op een knop druk oid. Hiermee kan je wel mooiere dingen maken alleen ik heb geen voorbeeld voor je.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 02-09 17:49

mOrPhie

❤️❤️❤️❤️🤍

code:
1
2
3
4
Private Sub ctlA()
  
  Call ControlNaam_MouseDown Button, Shift, X, Y
End Function

makkelijk hè? :P

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zaterdag 25 mei 2002 01:42 schreef LauPro het volgende:

[..]

Je zult dan dan helemaal 'basic-to-basic' moeten gaan en met 'SendMessage' moeten werken. Dus dat je programma een kik krijgt zodra je op een knop druk oid. Hiermee kan je wel mooiere dingen maken alleen ik heb geen voorbeeld voor je.
Ook dat zal niet gaan werken helaas. Mijn code wordt uitgevoerd omdat er een dergelijk event aangeroepen wordt, maar omdat er op dat moment een SetCapture call gebruikt is wordt het event niet voor het juiste control getriggerd. Het juiste control heb ik echter wel in een variabele zitten, en daarmee wil ik dus het juiste event aanroepen. Het zal echt met pure VB-code moeten gebeuren.

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zaterdag 25 mei 2002 01:50 schreef mOrPhie het volgende:
code:
1
2
3
4
Private Sub ctlA()
  
  Call ControlNaam_MouseDown Button, Shift, X, Y
End Function

makkelijk hè? :P
Dan staat dus nog "ControlNaam" keihard in de source... en daar heb ik niks aan. Het moet echt aangeroepen worden met behulp van _alleen_ ctlA, waar ik ControlNaam aan toegekend heb.

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 02-09 17:49

mOrPhie

❤️❤️❤️❤️🤍

Op zaterdag 25 mei 2002 01:54 schreef Mr. B. het volgende:

[..]

Dan staat dus nog "ControlNaam" keihard in de source... en daar heb ik niks aan. Het moet echt aangeroepen worden met behulp van _alleen_ ctlA, waar ik ControlNaam aan toegekend heb.
Dan moet je toch echt wat API's gaan doen.

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zaterdag 25 mei 2002 01:57 schreef mOrPhie het volgende:

[..]

Dan moet je toch echt wat API's gaan doen.
API calls hebben er niks mee te maken... ik wil vanuit VB, met behulp van een VB Control variabele, een event uitvoeren voor het control wat aan die variabele toegekend is. Ik kan wel met een API call gaan proberen om een mouseclick te simuleren, maar die wordt vanwege die SetCapture naar het verkeerde window gestuurd.

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 05-09 11:09

LauPro

Prof Mierenneuke®

Op zaterdag 25 mei 2002 02:01 schreef Mr. B. het volgende:

[..]

API calls hebben er niks mee te maken... ik wil vanuit VB, met behulp van een VB Control variabele, een event uitvoeren voor het control wat aan die variabele toegekend is. Ik kan wel met een API call gaan proberen om een mouseclick te simuleren, maar die wordt vanwege die SetCapture naar het verkeerde window gestuurd.
Dan moet je eerst het goede windows een 'focus' geven.
Op zaterdag 25 mei 2002 01:52 schreef Mr. B. het volgende:

[..]

Ook dat zal niet gaan werken helaas. Mijn code wordt uitgevoerd omdat er een dergelijk event aangeroepen wordt, maar omdat er op dat moment een SetCapture call gebruikt is wordt het event niet voor het juiste control getriggerd. Het juiste control heb ik echter wel in een variabele zitten, en daarmee wil ik dus het juiste event aanroepen. Het zal echt met pure VB-code moeten gebeuren.
Dat zal juist heel goed gaan werken, want wat jij wilt is dus een 'fake-event', dat kan je op deze manniet prima bereiken, als je maar het juiste event naar het/de juiste form stuurd.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zaterdag 25 mei 2002 10:54 schreef LauPro het volgende:

[..]

Dan moet je eerst het goede windows een 'focus' geven.
[..]
De focus staat er los van, vanwege die SetCapture.
Dat zal juist heel goed gaan werken, want wat jij wilt is dus een 'fake-event', dat kan je op deze manniet prima bereiken, als je maar het juiste event naar het/de juiste form stuurd.
Je snapt geloof ik niet helemaal wat die SetCapture doet... maar al zou jouw idee een oplossing zijn, dan heb ik er nog niks aan omdat er ook events naar Image controls gestuurd moeten worden. Die hebben geen window handle, en daar kun je met API calls dus ook niks mee.

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 07-09 17:43

Crazy D

I think we should take a look.

Uhmmm dus als ik het goed begrijp, wil je niet
Call ControlNaam_MouseDown(..)
maar
Call varControl_MouseDown(..)
wat alleen dus niet gaat...

Misschien kun je wat met CallByName? (er vanuit gaande dat je die MouseDown wel kunt aanroepen vanaf de plek waar je dat wilt)

Zoiets als dit dus:
formpje met text1 en command1
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private m_txt As TextBox

Private Sub Command1_Click()
    Call CallByName(Me, m_txt.Name & "_MouseDown", VbMethod, vbLeftButton, vbShiftMask, 1, 1)
End Sub

Public Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MsgBox "MouseDown"
End Sub

Private Sub Form_Load()
    Set m_txt = Text1
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Set m_txt = Nothing
End Sub

Een click op de button raised het text1_mousedown event.

En anders snap ik er gewoon niets van wat je bedoelt ;)

Exact expert nodig?


  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zaterdag 25 mei 2002 14:10 schreef Crazy_D het volgende:
Uhmmm dus als ik het goed begrijp, wil je niet
Call ControlNaam_MouseDown(..)
maar
Call varControl_MouseDown(..)
wat alleen dus niet gaat...

Misschien kun je wat met CallByName? (er vanuit gaande dat je die MouseDown wel kunt aanroepen vanaf de plek waar je dat wilt)

Zoiets als dit dus:
formpje met text1 en command1
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private m_txt As TextBox

Private Sub Command1_Click()
    Call CallByName(Me, m_txt.Name & "_MouseDown", VbMethod, vbLeftButton, vbShiftMask, 1, 1)
End Sub

Public Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MsgBox "MouseDown"
End Sub

Private Sub Form_Load()
    Set m_txt = Text1
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Set m_txt = Nothing
End Sub

Een click op de button raised het text1_mousedown event.

En anders snap ik er gewoon niets van wat je bedoelt ;)
Whah, dat is het! Mijn dank is groot :D

* Mr. B. B. kende die CallByName functie helemaal niet... :o

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.

Pagina: 1