Autor Beitrag
Peteroramer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: 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 user profile iconChristian S.: Topic aus Off Topic verschoben am Di 14.02.2006 um 15:17
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mo 13.02.06 23:00 
Meinst Du so etwas ?
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 14.02.06 15:27 
Titel: Re: Programm
user profile iconPeteroramer 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Di 14.02.06 15:55 
In dem Mousedown Eriegnis der Komponente folgenden code einfügen:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Di 14.02.06 17:09 
Also:

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:
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;


// Der Merker für die Position des Rechtecks auf dem Image
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;   // Wichtig !!!!

    procedure ZeichneRechteck(Ex_PosX, Ex_PosY : integer);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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));         // Löscht das alte Bild
  Image1.Canvas.Rectangle(Ex_PosX,Ex_PosY,Ex_PosX + 30, Ex_PosY + 15);  // Zeichnet Rechteck an der neuen Position
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Rechteck.PosX := 0;        // Starten in der linken, oberen Ecke des Images
  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;    // Bestimmen der Position
  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);  // Übergabe der Koordinate für die linke, obere Ecke
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

Windows XP
Delphi 7
BeitragVerfasst: Di 14.02.06 17:19 
Titel: Dankeschön
wollt mich nur bedanken, hab dies selbst auch grad hinbekommen