Toon posts:

[vb6] Method in variabele stoppen en uitvoeren?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een soort van undo-functie creëren voor m'n programmaatje, en dat wil ik doen door een array te maken, met daarin 10 methods. Nu heb ik (werkt niet):
code:
1
2
private function save_undo(command as object)
.......

Ik wil in 'command' het volgende hebben:
code:
1
set_grafiek_type(grafiek_type:="2dcirkel")

welke variabele moet ik gebruiken, zodat die later gewoon kan 'uitvoeren'?

Verwijderd

VB heeft geen function pointers, dus wat je wil kan helaas niet op deze manier.

Je zal het op een andere manier moeten oplossen denk ik...

Verwijderd

Topicstarter
Heb je nog suggesties?

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

CallByName iets?

Verwijderd

Topicstarter
Hmmm... Heb dat callbyname eens opgezocht in MSDN, maar dat is geloof ik niet wat ik zoek. Misschien snap ik het verkeerd, maar hoe had je gedacht dat te gaan toepasen?

Verwijderd

Op zaterdag 08 juni 2002 12:51 schreef CyberKnutselaar het volgende:
Heb je nog suggesties?
Een enum maken met alle methodes die je wilt undo-en. Dan sla je voor elke actie die waarde op + een collection met alle parameters.

Op het moment dat je dan undo doet, dan check je aan de hand van de enum waarde welke functie aanroep je moet doen, en uit de collectie haal je alle parameters.

Zoiets :?

Verwijderd

Topicstarter
Hmmm... wordt wel ingewikkeld zo... Ik denk dat ik het maar laat zitten, tenzij er nog meer suggesties zijn...

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Tjah probeer het eens met CallByName want dat is de manier...

ik heb het nl wel even getest....
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private m_txt As TextBox
Private m_functienaam As String

Private Sub Command1_Click()
    m_functienaam = m_txt.Name & "_MouseDown"
End Sub

Private Sub Command2_Click()
    Call CallByName(Me, m_functienaam, 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

Eerst op command1 klikken, dan op command2, en er verschijnt netjes een msgbox... (die zit in text1 omdat ik deze gecopies heb en aangepast uit [topic=504960]).

Je zal wel de aanroep ff moeten aanpassen ;)
vbLeftButton, vbShiftMask, 1, 1
moet je vervangen door alle parameters die jij wilt (alleen moet je 'm niet aanroepen met functienaam(param:=waarde) maar zonder param:= dus.
Maar ja daar kom je wel uit, hiermee kan het.
1 nadeel functie moet public zijn. Maar ja daar is ook wel iets voor te verzinnen :)

Exact expert nodig?

Pagina: 1