Hallo!
Du kannst in einer Form öffentliche (Public) Methoden erstellen,
die solche Grafikmethoden für ein Zeichen-Objekt kapseln.
Kleines Beispiel ....
Public Sub PrintLine(ByVal steppStart As Boolean, _
ByVal startX As Integer, ByVal startY As Integer, _
ByVal steppEnd As Boolean, _
endX As Integer, ByVal endY As Integer, _
ByVal color As Long, _
Optional ByVal rectangle As Boolean = False)
If rectangle Then
If Not steppStart And Not steppEnd Then
Printer.Line (startX, startY)-(endX, endY), color, B
ElseIf steppStart And Not steppEnd Then
Printer.Line Step(startX, startY)-(endX, endY), color, B
ElseIf Not steppStart And steppEnd Then
Printer.Line (startX, startY)-Step(endX, endY), color, B
Else
Printer.Line Step(startX, startY)-Step(endX, endY), color, B
End If
Else
If Not steppStart And Not steppEnd Then
Printer.Line (startX, startY)-(endX, endY), color
ElseIf steppStart And Not steppEnd Then
Printer.Line Step(startX, startY)-(endX, endY), color
ElseIf Not steppStart And steppEnd Then
Printer.Line (startX, startY)-Step(endX, endY), color
Else
Printer.Line Step(startX, startY)-Step(endX, endY), color
End If
End If
End Sub Anwendung (Aufruf in der Form):
CallByName Me, "PrintLine", VbMethod, True, 10, 20, False, 100, 200, vbRed Um die Parameter als einen (z.B. vom Benutzer eingegebenen) String
zu verarbeiten, kann man eine weitere Kapselung erstellen:
Public Sub PrintLine2(Args As String)
Dim s() As String, rectangle As Boolean
s = Split(Args, ",")
If UBound(s) = 6 Then
rectangle = False
Else
rectangle = CBool(Trim(s(7)))
End If
PrintLine CBool(Trim(s(0))), CInt(s(1)), CInt(s(2)), _
CBool(Trim(s(3))), CInt(s(4)), CInt(s(5)), _
CLng(s(6)), rectangle
End Sub Anwendung:
Dim c As String
c = CStr(vbGreen)
CallByName Me, "PrintLine2", VbMethod, "true, 10, 20, false, 100, 200," & c Man kann solche Methoden auch in einem Klassenmodul deklarieren und sie
aus anderen Klassen oder Formen durch "CallByName" aufrufen.
In dem Fall muß zunächst eine Instanz dieses Klassenmoduls per New erstellt
werden, deren Name als erster Parameter anzugeben ist.
Beitrag wurde zuletzt am 14.04.15 um 06:16:30 editiert. |