Jag har en sub som heter CheckLines och ser ut så här... Kul att du fick användning av min funktion! jo din sub funkade ju tills ja va tvungen att ändra lite =) men har lite frågor. 1. För då kan du returnera ett värde.Sub
Private Sub CheckLines(X As Single, Y As Single)
Dim iLine As Integer
For iLine = Line1.LBound To Line1.UBound
If NearLine(Line1(iLine), X, Y) Then
Line1(iLine).BorderColor = 255
Line1(iLine).BorderWidth = 3
Else
Line1(iLine).BorderColor = 0
Line1(iLine).BorderWidth = 1
End If
Next iLine
End Sub
den kollar om man håller musen över en linje och gör linje fet och röd om man gör det...
jag kallar på den genom att skirva:
CheckLines X, Y
nu skulle ja villja kalla på den och samtidigt kolla om det är så att den är över en linje men nån liknadne kod:
if CheckLines X, Y = true then
typ men det funkar ju inte
syntax error på X:et
på något sätt måste man kunna göra det! men hur?
MVH/simonSv: Sub
Byt ut suben till en function:
Private Function CheckLines(X As Single, Y As Single) As Boolean
Dim iLine As Integer
For iLine = Line1.LBound To Line1.UBound
If NearLine(Line1(iLine), X, Y) Then
Line1(iLine).BorderColor = 255
Line1(iLine).BorderWidth = 3
CheckLines=True
Else
Line1(iLine).BorderColor = 0
Line1(iLine).BorderWidth = 1
End If
Next iLine
End Function
För övrigt skulle jag ha kallat linjerna för linLines istället (Line1 är lite fult :) )
Ett annat alternativ är att returnera ett nummer (med antalet linjer eller en av linjerna).
Private Function CheckLines(X As Single, Y As Single) As Integer
Dim iLine As Integer
For iLine = Line1.LBound To Line1.UBound
If NearLine(Line1(iLine), X, Y) Then
Line1(iLine).BorderColor = 255
Line1(iLine).BorderWidth = 3
CheckLines = CheckLines + 1
Else
Line1(iLine).BorderColor = 0
Line1(iLine).BorderWidth = 1
End If
Next iLine
End Function
resp.
Private Function CheckLines(X As Single, Y As Single) As Integer
Dim iLine As Integer
For iLine = Line1.LBound To Line1.UBound
If NearLine(Line1(iLine), X, Y) Then
Line1(iLine).BorderColor = 255
Line1(iLine).BorderWidth = 3
CheckLines = iLine
Else
Line1(iLine).BorderColor = 0
Line1(iLine).BorderWidth = 1
End If
Next iLine
End Function
Är det väldigt viktigt att veta alla linjer som är i närheten så kan du skriva (tror jag - har inte testat):
Private Function CheckLines(X As Single, Y As Single) As Collection
Dim iLine As Integer
For iLine = Line1.LBound To Line1.UBound
If NearLine(Line1(iLine), X, Y) Then
Line1(iLine).BorderColor = 255
Line1(iLine).BorderWidth = 3
CheckLines.Add iLine
Else
Line1(iLine).BorderColor = 0
Line1(iLine).BorderWidth = 1
End If
Next iLine
End Function
/Niklas JanssonSv: Sub
1.
varför ska man byta ut den till function?
2.
hur anroppar man den?Sv: Sub
2. If CheckLines(X,Y) = True Then ...
/Niklas Jansson