Autor Beitrag
Baltus
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: So 27.08.06 13:40 
Hi,
ich hab für Morgen ne Aufgabe für Informatik zu machen, hab aber kaum eine Idee, wie ich das anstellen soll: :nixweiss:

Im Formular befindet sich ein Button. Bewegt man die Maus im Formular, so rutscht das gesamte Formular 2 Punkte nach unten, bewegt sich die Maus aber über dem Button, so bewegt sich der Button 2 Punkte nach rechts. Ist das Formular am unteren Bildschirmrand angekommen, springt es wieder ganz nach oben. Ist der Button am rechten Formularrand angekommen, springt er wieder ganz nach links an den linken Formularrand.

Ich weiß nur, dass das irgentwas mit dem OnMouseMove Ereignis zu tun hat und mit den Eigenschaften top, heipht, left und width.
Brauche dringend eure Hilfe, bin nämlich heute erst wieder aus dem Krankenhaus gekommen und muss das Morgen abgeben. :?!?:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
unit mBewegung;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TBewegung1 = class(TForm)
    bt_one: TButton;
    procedure bt_oneClick(Sender: TObject);
    procedure bt_oneMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Bewegung1: TBewegung1;

implementation

{$R *.DFM}

procedure TBewegung1.bt_oneMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin

end;

end.



Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 27.08.2006 um 13:45
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 27.08.06 13:44 
Verändere einfach in dem MouseMove-Ereignis die Werte Top und Left der Form.

Für die Abfrage beim Sprung zum Anfang dürfte Werte wie "Screen.Width-Form1.width" hilfreich sein.

_________________
We are, we were and will not be.
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: So 27.08.06 14:18 
Hinweis: Die Höhe der Form und Die Höhe des Screens sollten durch 2 Teilbar sein. :mahn:
gruß

_________________
[b]Ich weiß nicht immer, wovon ich rede. Aber ich weiß, dass ich recht habe.[b]
Baltus Threadstarter
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: So 27.08.06 17:02 
Hab das ganze jetzt so angefangen, aber wenn ich über den Button gehen bewegt sich das formular nur einmal 2 Punkte nach unten. Ich muss doch wohl nicht für jeden mal 200+2, 202+2, 202+2, usw. schreiben, oder :?:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
unit mBewegung;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TBewegung1 = class(TForm)
    bt_one: TButton;
    procedure bt_oneMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Bewegung1: TBewegung1;

implementation

{$R *.DFM}

procedure TBewegung1.bt_oneMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
Bewegung1.top := 200+2;

end;

end.
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: So 27.08.06 17:07 
hi...warum 200+2 ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TBewegung1.bt_oneMouseMove(Sender: TObject; Shift: TShiftState;  
  X, Y: Integer);  
begin  
Bewegung1.top := Bewegung1.top + 2


gruß

_________________
[b]Ich weiß nicht immer, wovon ich rede. Aber ich weiß, dass ich recht habe.[b]
Baltus Threadstarter
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: So 27.08.06 17:14 
Hi
und wie geht das, dass der Button oder das Formular bis zum Formularrand, bzw. Bildschirmrand fährt und dann an den linken, bzw. oberen Rand zurückspring :?:
:?!?:
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: So 27.08.06 17:19 
Zitat:

Baltus
Antworten mit Zitat
BeitragVerfasst am: So 27.08.06 17:14 Titel:
Hi
und wie geht das, dass der Button oder das Formular bis zum Formularrand, bzw. Bildschirmrand fährt und dann an den linken, bzw. oberen Rand zurückspring :?:
:?!?:


Per IF- Abfrage

Bsp:

ausblenden Delphi-Quelltext
1:
2:
IF Bewegung1.top = 1024 THEN
Bewegung1.top := 200;
Baltus Threadstarter
Hält's aus hier
Beiträge: 12

Win XP
Delphi 5
BeitragVerfasst: So 27.08.06 17:33 
Super,
Danke so gehts. :rofl:
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: So 27.08.06 17:36 
das hier wäre meine Lösung gewesen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Form1.Top:=Form1.Top+2;
 If Form1.Top+Form1.height = Screen.DesktopHeight then Form1.Top:=0;
end;

gruß

_________________
[b]Ich weiß nicht immer, wovon ich rede. Aber ich weiß, dass ich recht habe.[b]
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: So 27.08.06 17:42 
ich würd statt nem = ein >= nehmen, falls jemand auf die feine idee kommt das formular peer hand zu verschieben, ansonsten kanns passiern das man es irgendwann gar nich mehr sieht ;D

EDIT: Screen.DesktopHeight gibts bei mir nich, kommt das erst in irgen einer version nach 3?, mein delphi 3 kennt nur screen.height das macht aber bestimmt dasselbe?