Hallo,
mal eine theoretische Frage, habe nicht unbedingt vor, dies anzuwenden, aber mich interessiert es ob und wie es möglich wäre ein if/then durch eine eigene Funktion zu ersetzen, ungefähr so:
Private Sub theorie(byval arg1 as ?, byval arg2 as ?)
If(arg1) then arg2
End Sub
Aufruf wäre dann z.B. so:
Public Class form1
Dim a as boolean
Private sub xy()
theorie(a=true, me.close())
End Sub
End Class
Vom Prinzip her so:
Sub XY
Theorie (a, AddressOf CloseMe)
End Sub
Public Sub CloseMe
Me.Close
End Sub
Private Declare Function CallWindowProc Lib „USER32.DLL“ Alias „CallWindowProcA“ (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal uMsg As Long, ByVal WPARAM As Long, ByVal LPARAM As Long) As Long
Public Sub Theorie (ByVal Decision as Boolean, ByVal CallbackAdr as Long)
If Decision Then CallWindowProc CallbackAdr, hWnd, &0, &0, &0
End Sub
Die genauen Parameter für CallWindowProc schaust du am besten im MSDN nach
Der erste Teil scheint mir passend zu sein (condition as boolean).
Ich weiß nur nicht ob das mit dem Callback für mich das richtige ist. Mir geht es jedenfalls nicht direkt um das Me.Close()…
Ich wollte es ganz allgemein haben
Private Sub Theorie(Bedingung, Aktion)
z.B. anstatt if (Button1.Enabled=True) then xy=6 End if
Theorie(Button1.Enabled=True, xy=6)
Also dass ich Bedingungen und Aktionen beliebiger Art der Funktion als Parameter übergebe. Ob dafür CallWindowProc auch das richtige ist?
du haettest erwaehnen sollen das es sich um VB.Net handelt. Aber dafür bist du hier im falschen Brett. Aber sei es drum.
Das was du suchst ist eine Stink normale Function. Functionen kannst du Parameter übergeben. Sie je nachdem (ByRef, ByVal) dort aendern. Auch liefern dir Functionen Ergebnisse zurueck. Du könntest dir zum Bsp. ein Wert vom Typ Boolean zurueck liefern lassen und diesen dann abfragen. Somit haettest du ein IF Konstrukt. Sprich
If DeineFunction(DeineParameter) then …
Hierbei musst du aber darauf achten das sie ein Wert vom Typ Boolean zurueck gibt. Sprich
Private DeineFunction(DeineParameter) as Boolean
DeineAktionen
Return True