Autor Beitrag
ploRa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 18:16 
Schönen guten Tag,
ich wollte mal fragen ob mir jmd. helfen kann.
Ich muss in der Schule ein kleines Lernspiel für 6. Klässler schreiben und komm nciht mehr weiter.

Meine Frage ist, wie ich ein Bild mit den Pfeiltasten bewegen kann.
Also ich habe per Image ein Bild eingefügt und das muss ich mit den Pfeiltasten nach links und rechts bewegen können !
Kann mir einer ein Beispiel oder ein Quellcode dafür geben ?

In der Schule arbeiten wir Delphi 6

Vielen Dank
Mfg


Moderiert von user profile iconChristian S.: Topic aus Tutorials verschoben am Sa 22.01.2005 um 18:20
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 22.01.05 18:21 
Bei OnKeyDown:

ausblenden Delphi-Quelltext
1:
2:
3:
if Key = X then
  Image1.Left := Image1.Left - 1;
...

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 18:24 
sry das ich das topic falsch geöffnet habe !
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 18:28 
Er sagt mir, dass key nicht deklariert ist
Was nu ?

leider bin ich nicht sehr gut in Delphi
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 22.01.05 18:33 
Versuchs mal mit
ausblenden Delphi-Quelltext
1:
2:
3:
if key = 'X' then ...
// oder
if key = ord('x') then ...
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 18:39 
woher weiß denn delphi das ich zB die linke pfeiltaste drücke
Benutzername
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 210

Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
BeitragVerfasst: Sa 22.01.05 19:32 
Bei Links wäre es glaube ich VK_LEFT, bei Rechts VK_UP und halt entsprechend VK_UP und VK_DOWN ;-)
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: Sa 22.01.05 19:46 
das ganze musste dann in der on keydown procedure machen!
das haste vorhin wohl nit gemacht, deshalb war key nicht deklariert!
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 20:27 
Es klappt immernoch nicht
könnt ihr mir vielleicht ein feritgen Code geben ?
Hier ist zZ. meiner der nicht funktioniert !!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_LEFT then
  form1.Image3.Left := form1.Image3.Left - 1;
end;


Als Beschreibung:
Mein Bild "Image3" auf "Form1" soll wenn ich ein "BitBtn1" klicke bewegen.
Aber in der Richtung wie ich die Pfeiltasten drücke ( links, rechts )

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 22.01.05 20:48 
1. Ist dir schonmal dashier aufgefallen: "Moderiert von raziel: Code- durch Delphi-Tags ersetzt." Das heist, du sollst Delphi code nicht mit Code Tags einfügen, sondern mit DELPHI tags! dann siehts bessa aus ;D

2.Welcher fehler wird den bitte ausgegeben? (immer dazu schreiben.)

3. Dein code ist genau genommen richtig, nur kannst du das form1. einfach weglassen, der Compiler weis schon, dass damit ein Image auf der Form gemeint ist, deren Unit du bearbeitest...

3. Bei mir klappt der Code!

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 20:59 
es wird gar kein fehler ausgeben er macht es einfach nicht :)
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 22.01.05 21:00 
ploRa hat folgendes geschrieben:

Mein Bild "Image3" auf "Form1" soll wenn ich ein "BitBtn1" klicke bewegen.
Aber in der Richtung wie ich die Pfeiltasten drücke ( links, rechts )

Ist dir denn schon mal aufgefallen, dass du völlig falsch denkst?
Ich schreibe dir deine Beschreibung jetzt nochmal hin, damit du merkst, wo es hapert.
"Irgendetwas soll passieren, wenn ich ein "BitBtn1" klicke.
Die Frage ist jetzt: Was hast du in der OnKeyDown-Routine verloren? Du solltest dir besser mal OnClick von deinem BitBtn in Zusammengang mit GetKeyState() ansehen!
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 21:04 
was heißt GetKeyState() und wohin damit ?
Ich habe erst ein paar Stunden in der Schule mit delphi gearbeitet deshalb habe ich noch keinen wirklich überblick über alles
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 22.01.05 21:13 
sowas gibt man dann in die online hilfe von delphi ein.. dann bekommst du ne definition dieser Funktion. soweit ich weis gibt sie aus ob eine taste gedrückt ist...

mhm...
wir sind davon ausgegangen dass du die Pfeiltasten der Tastatur meinst... das onKeyDown ereignis ist auch komponenten abhängig: wenn du auf den button klickst, dann wirkt das key donw ereignis der FORM nicht mehr, dann muss es in das ereignis des buttons schreiben... mhm.. ich glaub wir reden immernoch aneinander vorbei...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: Sa 22.01.05 21:16 
Tut mir leid wenn ich hier alles falsch erkläre !!
nochmal in kurzform:

Ich betätige einen BitBtn dann öffnet sich das "Spiel" mit den ganzen Labels, Listboxes etc. in der mitte der form ist ein Image was ich dann per Pfeiltasten bewegen will.
Allerdings soll ich das Bild nur bewegen nachdem ich den BitBtn gedrückt habe
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 22.01.05 22:45 
am sichersten ist es wohl tatsächlich mit GetKeyState zu arbeiten, da diese Funktion nicht zwangsläufig in einem onKeyDown oder KeyUp ereignis stehen muss... experimentiere doch mal mit dem Timer (verhasst, da ungenau ;D) oder einem onKeyDown ereignis, das du allen komponenten zuweist; auf jedenfall ist der CODE richtig. mit top:=top+1 erreichst du eine verschiebung des bildes um eines nach unten. viel glück noch! :D

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: Sa 22.01.05 23:19 
Hi,

also das mit dem Timer wirde ich sein lassen da es die möglichkeit gibt alle Tasten in einem Formula global abzufangen. Und wegen den erst wenn gestartet wurde benutzt du einfach eine Boolean variable.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Type
 tForm1 = Class(...)
  ...
 Private
  Run: Boolean;
  ...
 Public
  ...
 Published
  ...
 End;


Dann im Property Editor des Formulars "KeyPreview" auf True setzen. Und, den Event "UnKeyDown" schreiben.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Function TForm1.FormKeyPress(Sender: TObject; var Key: Char);
Begin
 If Run Then
  If Key='X' Then
   Image1.Left:=Image1.Left - 1;
End;


Nicht vergessen den Status von "Run" auf True zu setzen. Sonnst wird die Function nicht ausgeführt.

Ich hoffe das du damit etwas anfangen kannst. Obwohl es mir eigentlich nicht gefält jemanden Fertig source zu geben. Vorallem für die Schule.

Cu
Neo
ploRa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP
Delphi 6
BeitragVerfasst: So 23.01.05 00:44 
vielen danke für eure Hilfe aber ich bekomme alle varianten nicht zu laufen.
Das liegt wohl daran das ich Delphi nciht wirklich kann und mit vielen Aussagen von euch gar nicht klar komme weil ich sie halt nicht verstehe !

Wenn ich einfach ein leere Form habe
läuft das ja alles wunder mit folgendem Code

ausblenden Delphi-Quelltext
1:
2:
3:
4:
begin
  If Key='VK_LEFT' Then
   Image1.Left:=Image1.Left - 1;
end;


Aber sobald ich das in meinem 'Spiel' mache klappt es einfach nicht.
Keine Ahnung warum!
Es kann ja nur daran liegen, dass ich noch andere Objekte auf der Form habe
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 23.01.05 11:16 
du solltes evtl. noch vom dein Form auf True schalten den werden alle tastertur ereignise gleich zum form geleitet... ansonsten an das objekte was glaube ich oben liegt oder so...

ausblenden Delphi-Quelltext
1:
Form1.KeyPreview:=True;					

das solltes du im OI machen oder den code von oben ins onCreate ereignis schreiben

_________________
MFG
Michael Springwald, "kann kein englisch...."
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: So 23.01.05 15:57 
Hi,

@Mimi: Ja so ist das! Hatte ich aber glaube etwas weiter oben geschrieben.

@PloRa: Nen fertigen source werd ich dir bestimmt nicht geben, denn so lehrnst du nichts!

Cu
Neo