StatBar.nl - @GoT
Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.
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.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?
Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!
1
2
3
4
| Private Sub ctlA() Call ControlNaam_MouseDown Button, Shift, X, Y End Function |
makkelijk hè?
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
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.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.
StatBar.nl - @GoT
Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.
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.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è?
StatBar.nl - @GoT
Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.
Dan moet je toch echt wat API's gaan doen.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.
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
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.Op zaterdag 25 mei 2002 01:57 schreef mOrPhie het volgende:
[..]
Dan moet je toch echt wat API's gaan doen.
StatBar.nl - @GoT
Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.
Dan moet je eerst het goede windows een 'focus' geven.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.
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.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.
Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!
De focus staat er los van, vanwege die SetCapture.Op zaterdag 25 mei 2002 10:54 schreef LauPro het volgende:
[..]
Dan moet je eerst het goede windows een 'focus' geven.
[..]
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.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.
StatBar.nl - @GoT
Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.
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
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?
Whah, dat is het! Mijn dank is grootOp 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 16Private 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
* Mr. B. B. kende die CallByName functie helemaal niet...
StatBar.nl - @GoT
Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.