MS Agent
Agenten positionieren
Wird die Methode Show aufgerufen, erscheint der Agent standardmäßig in der linken oberen Ecke. Das ist natürlich nicht immer sinnvoll. Über die Methode MoveTo kann der Agent frei auf dem Bildschirm positioniert werden.
Folgendes Beispiel zeigt Merlin an und verschiebt ihn dann auf die Position 100,200. Die ersten zwei Parameter stellen die x- und y-Koordinaten des gesamten Bildschirms dar, der dritte die Bewegungsgeschwindigkeit. Beim Wert 0 wird Merlin einfach verschoben; bei einem Wert größer als Null, setzt er zuerst eine Fliegerbrille auf und schaltet einen kleinen Propeller an seinem Hut an.
procedure TForm1.Button1Click(Sender: TObject); begin with Agent.Characters.Item['merlin'] do begin Show(0); MoveTo(100, 200, 0); end; end;
Natürlich kann die Positionierung auch vor der Anzeige erfolgen.
Sollen sich die Koordinaten nicht auf den ganzen Bildschirm, sondern auf das Fenster unserer Anwendung beziehen, so muss ein TPoint-Konstrukt verwendet und mit Hilfe der Methode ClientToScreen umgerechnet werden. Bsp.:
procedure ShowAgent; var p1: TPoint; begin with Agent.Characters.Item['Merlin'] do begin p1.x := Edit1.Left; p1.y := Edit1.Top; p1 := ClientToScreen(p1); MoveTo(p1.x, p1.y, 0); Show(0); end; end;
So wird Merlin direkt unterhalb der Komponente Edit1 angezeigt.