das hast du programmiert. sieht etwas merkwürdig aus. Ist das korrekt, das Richtungsstern überschrieben wird, wenn mehrere Bedingungen für eine Richtung erfüllt sind?
Delphi-Quellcode:
function TForm1.Richtungstern (const Richtung: integer): integer;
begin
Result:=0;
case Richtung of
1: begin
if img_Stern.Top + img_Stern.Height + 100 > ClientHeight then Result:=2;
if img_Stern.Left < 100 then Result:=1;
if img_Stern.Left + img_Stern.Width + 100 > ClientWidth then Result:=4;
end;
2: begin
if img_Stern.Left + img_Stern.Width + 100 > ClientWidth then Result:=3;
if img_Stern.Top < 100 then Result:=1;
end;
3: begin
if img_Stern.Top < 100 then Result:=4;
if img_Stern.Left < 100 then Result:=2;
end;
4: begin
if img_Stern.Top + img_Stern.Height + 100 > ClientHeight then Result:= 3;
end;
end;
end;
schieb die Function mal nach private in dein Object rein und teste die Ergebnisse. Fehlen wahrscheinlich ein paar "else" und weitere Bedingungen.
Delphi-Quellcode:
type
TForm1 = class(TForm)
...
private
function Richtungstern (const richtung: integer): integer;
end;