| Autor |
Beitrag |
Peteroramer
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Mo 13.02.06 22:30
Hallo alle zusammen.
Meine Frage ist, wir kann man bei Delphi eine Bewegung ausüben und dies mit Tastendruck steuern?
Bei Turbo Pascal erstelle ich eine Variable die der Char Art angehört und lasse diese Variable per readkey definieren.
Durch die Ordinatennummern bestimme ich die Tasten. Jedoch funktioniert diese Taktik bei Delphi nicht mehr.
Ich bräuchte dringen Hilfe. Danke Moderiert von Christian S.: Topic aus Off Topic verschoben am Di 14.02.2006 um 15:17
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mo 13.02.06 23:00
Meinst Du so etwas ?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=VK_UP then Button1.Top:= Button1.Top-10; if Key=VK_DOWN then Button1.Top:= Button1.Top+10; if Key=VK_LEFT then Button1.Left:=Button1.Left-10; if Key=VK_RIGHT then Button1.Left:=Button1.Left+10; end;
procedure TForm1.FormCreate(Sender: TObject); begin KeyPreview:=True; end; |
|
|
Peteroramer 
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Di 14.02.06 15:16
Titel: Danke
Wie kann ich diesen Quelltext am besten einbringen?
Wird bei dieser procedure ein Button bewegt? Geht das auch mit allen Körpern?
Muss man etwas vereinbaren?
|
|
Peteroramer 
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Di 14.02.06 15:19
Titel: Programm
Wenn es keine Umstände macht, were es nett wenn du mir eine funktionierendes Programm zuschicken könntest.
Meine adresse ist: peteroramer@gmx.de
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Di 14.02.06 15:22
Hallo,
ja bei dieser procedure wird ein button nach links, rechts bzw nach oben und unten bewegt, sprich auf der x- und y-achse... left steht für die x-achse, top für die y-achse
VK_UP usw. sind ein virtuelle Tastencodes - sämtliche findest du hier
bei dieser procedure bewegt sich der button nach links, rechts bzw oben, unten je nachdem welche pfeiltaste du drückst 
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 14.02.06 15:27
Titel: Re: Programm
Peteroramer hat folgendes geschrieben: | Wenn es keine Umstände macht, were es nett wenn du mir eine funktionierendes Programm zuschicken könntest.
|
das da oben ist im grunde schon ein fertiges programm, einfach noch nen button auf das formular setzen und im objektinspector der form unter ereignisse bei onformkeyup doppekt rein drücken
|
|
Peteroramer 
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Di 14.02.06 15:50
Titel: Dankeschön
Danke an alle!
Funktioniert wunderbar. Eine frage hätte ich noch. Wie ist es möglich das Objekt durch bloße Mausbewegung zu bewegen?
|
|
jojo-sp
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: Di 14.02.06 15:55
In dem Mousedown Eriegnis der Komponente folgenden code einfügen:
Delphi-Quelltext 1: 2:
| ReleaseCapture; Panel1.Perform(WM_SYSCOMMAND,SC_MOVE Or DOCKINFO_DOCKED,0); |
In diesem Fall kannst du nun ein das Panel1 bewegen.
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
Peteroramer 
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Di 14.02.06 16:25
Titel: cool
Geht auch.
Und wie kann man z.B. ein rechteck (bar) in einem Image mit Hilfe von Tastendruck bewegen.
Wie haben dies im Unterricht und unser Lehrer weiß nicht wie dies funktioniert. Nun will ich mit eueren Antworten glänzen.

|
|
jojo-sp
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: Di 14.02.06 16:41
Immer nur ein Frage pro Thread!!!
Im übrigen habe ich Sie auch nicht so ganz verstanden 
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
Peteroramer 
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Di 14.02.06 16:48
Titel: Antwort
Ist doch nur eine Frage.
Wie kann man bei Delphi ein Rechteck (oder Kreis,etc.) im einem Imageobjekt bewegen?
Beispiel: with image1.canvas do begin
bar(x1,y1,x2,y2);
{dies im Image)
end;
Wie kann ich dieses mit Tasten bewegen. Wir haben dies schon mit Buttons gemacht indem wir bei jedem Buttomklick die einzelnen Koordinaten verändert haben.
|
|
jojo-sp
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: Di 14.02.06 16:55
Titel: ???
Ich verstehe dein Problem nicht:
Du musst doch nur wie oben mit den Buttons beschrieben auf Tastendruck die neue Position berechnen und dann Zeichnen.
Die Position des gezeichneten Rechtecks musst du in eine Struckturfüllen. -> oder liegt das Problem in der Strucktur (bzw. dem Zwischenspeichern der Position?)?
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
jojo-sp
      
Beiträge: 317
Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
|
Verfasst: Di 14.02.06 17:09
Also:
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: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
type T_Rechteck = record PosX : integer; PosY : integer; end;
type TForm1 = class(TForm) Image1: TImage; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private
Rechteck : T_Rechteck; procedure ZeichneRechteck(Ex_PosX, Ex_PosY : integer); public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ZeichneRechteck(Ex_PosX,Ex_PosY : integer); Begin Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height)); Image1.Canvas.Rectangle(Ex_PosX,Ex_PosY,Ex_PosX + 30, Ex_PosY + 15); end;
procedure TForm1.FormCreate(Sender: TObject); begin Rechteck.PosX := 0; Rechteck.PosY := 0; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=VK_UP then Rechteck.PosY := Rechteck.PosY - 5; if Key=VK_DOWN then Rechteck.PosY := Rechteck.PosY + 5; if Key=VK_LEFT then Rechteck.PosX := Rechteck.PosX - 5; if Key=VK_RIGHT then Rechteck.PosX := Rechteck.PosX + 5;
ZeichneRechteck(Rechteck.PosX,Rechteck.PosY); end;
end. |
Dies ist der Quelltext eines Programms, bei dem auf Tastendruck ein Rechteck im Image verschoben wird.
Du brauchst nur eine Form mit einem Image darauf und dann musst du den Code an den richtigen Stellen einfügen.
_________________ Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
|
|
Peteroramer 
      
Beiträge: 29
Windows XP
Delphi 7
|
Verfasst: Di 14.02.06 17:19
Titel: Dankeschön
wollt mich nur bedanken, hab dies selbst auch grad hinbekommen
|
|