PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Objekt bewegen in VB/VBA


Marbleearth
2008-03-11, 21:55:29
Hallo ich komme nicht ganz klar mit einem Problem in VB(A). Ich möchte ein Objekt bewegen.
Vertikal klappt das sehr gut:

if Ereignis then
object.top = object.top + 2
end if

so meinetwegen.

Nun möchte ich aber ein Objekt schräg (nach oben und rechts gleichzeitig) bewegen und natürlich nicht immer erst einen Punkt nach rechts und dann einen Punkt nach oben sondern gleich die Koordinate anspringen.
Laut Hilfe geht das mit:

object.move(x,y)

also hätte ich gedacht:

If objectbutton1.Move(x > 0, y > 0) Then
object.Move = object.Move(x + 1, y + 1)
End If

aber so geht das nicht... kann mir jemand sagen wie es richtig heißen muss?

EDIT: Und worin muss das eingebettet werden? Userform activate?

Vielen Dank.


mfG,

bluestyler

Gast
2008-03-12, 14:31:24
Um was für ein Objekt geht es hier überhaupt? Ohne das weiß ja niemand etwas über Methoden und Attribute. Ein paar mehr Kontextinformationen dürften hilfreich sein. VB oder VBA? Was für Ereignisse sind das? etc.

Ansonsten würde ich sagen, probier doch einfach mal folgendes:

object.top = object.top + 1
object.left = object.left + 1


Anstatt dieser Move-Konstruktion. Mehr kann ich aber auch nicht dazu sagen. Dazu kenne ich mich nicht gut genug mit VBA aus.

Der_Donnervogel
2008-03-13, 15:53:53
Außerdem schaut es mir irgendwo so aus, als ob da zwei Sachen gemischt werden. Das If schaut so aus, als ob da versucht wird festzustellen, ob sich etwas bewegt hat. Das geht aber nicht mit der Move-Funktion, sondern dafür gibts einen Event beim entsprechenden Objekt das überwacht werden soll. Auch das anschließende Verschieben schaut falsch aus, das .Move ist AFAIR eine Methode, die direkt etwas verschiebt und bei der kein Rückgabewert zugewiesen werden muß. Hier mal ein kleines Beispiel für VB.Net wie man so ein Move auswerten kann (der Code verschiebt ein Label im Form in etwa, relativ zur Position des Forms auf dem Bildschirm)

Public Class Form1
Private label1 As New Label

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Controls.Add(label1)
label1.Text = "x/y = " + Me.Left.ToString + "/" + Me.Top.ToString
End Sub

Private Sub Form1_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
label1.Text = "x/y = " + Me.Left.ToString + "/" + Me.Top.ToString
label1.Top = Me.Top * Me.Height / Screen.PrimaryScreen.WorkingArea.Height
label1.Left = Me.Left * Me.Width / Screen.PrimaryScreen.WorkingArea.Width
End Sub
End Class