Hallo!
Der folgende Quelltext setllt ein Programmgerüst dar, mit dem ich die Programmierung von Festern und aller dahinter stehenden Logik erlernen und verstehen will.
Delphi-Quellcode:
var
Screen: TScreen;
XRes,YRes: Longint; //Die X/Y Bildschirmauflösung
Bpp: Longint; //Farbtiefe in Bits per Pixel
Buttons: Byte; //Zwischenspeicher für den Zustand der Maus
MousePosX,
MousePosY: LongINt; //Position Mauszeiger
begin
Screen.Setup(XRes,YRes,Bpp);
Font.LoadFont; //Zur Darstellung von Text
InitMouse;
EnableMouse;
MouseOn;
Buttons := 0;
WinX := 10; WinY := 10; //Fensterposition zu verschiebender Block
repeat
MouseCoords(MousePosX,MousePosY); //Aktuelle Mausposition ermitteln
SetMousePosition(MousePosX,MousePosY); //Mauszeiger auf diese Position setzen
//----------------------------------- Jeder weitere Code hier
//----------------------------------- Every further code here
Buttons := MouseButton;
Screen.Bar(WinX,WinY,WinX+100,WinY+50,$000000FF); //irgendein Fensterobjekt zum Verschieben
//Wenn Maustaste gedrückt (Links), dann soll der Block verschoben werden
if Buttons<>0 then
if Boolean(IsMouseInArea(WinX,WinY,WinX+100,WinY+50))
then Screen.BitBlit(WinX,WinY,WinX+100,WinX+50,MousePosX,MousePosY);
//WinX := WinX+MousePosX; //Diese Berechnung hilft nicht weiter
//WinY := WinY+MousePosY; //Warum nicht???
//---------------------------------- Bis Endebedingung erreicht
//----------------------------------- Until condition to exit
until Keypressed;
DisableMouse;
Font.RemoveFont;
Screen.Done;
end.
Wenn ich nun den Bar verschieben will klappt das, solange die Mausposition innerhalb des während der Anweisung Screen.Bar(...) festgelegten Bereiches liegt. Verläßt die Mausposition diesen Bereich, erfolgt keine weitere Verschiebung. Die Berechnung WinX/Y := WinX/Y + MousePosX/Y führt nicht zum Erfolg, weshalb ich diese Zeilen auch auskommentiert habe.
Wer kann mir hier helfen?
Lernnix