Autor |
Beitrag |
Baltus
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: 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:
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.
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 public end;
var Bewegung1: TBewegung1;
implementation
{$R *.DFM}
procedure TBewegung1.bt_oneMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin
end;
end. | Moderiert von Gausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 27.08.2006 um 13:45
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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
      
Beiträge: 417
Win Xp Home
delphi 2005
|
Verfasst: So 27.08.06 14:18
Hinweis: Die Höhe der Form und Die Höhe des Screens sollten durch 2 Teilbar sein.
gruß
_________________ [b]Ich weiß nicht immer, wovon ich rede. Aber ich weiß, dass ich recht habe.[b]
|
|
Baltus 
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: 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
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 public 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
      
Beiträge: 417
Win Xp Home
delphi 2005
|
Verfasst: So 27.08.06 17:07
hi...warum 200+2 ?
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 
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: 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
      
Beiträge: 376
|
Verfasst: So 27.08.06 17:19
|
|
Baltus 
Hält's aus hier
Beiträge: 12
Win XP
Delphi 5
|
Verfasst: So 27.08.06 17:33
Super,
Danke so gehts. 
|
|
der Berliner
      
Beiträge: 417
Win Xp Home
delphi 2005
|
Verfasst: So 27.08.06 17:36
das hier wäre meine Lösung gewesen
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
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: 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?
|
|