Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fenster-Verschiebung selber programmieren (https://www.delphipraxis.net/55243-fenster-verschiebung-selber-programmieren.html)

Lernnix 18. Okt 2005 15:31


Fenster-Verschiebung selber programmieren
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz