| Autor |
Beitrag |
ploRa
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: 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 Christian S.: Topic aus Tutorials verschoben am Sa 22.01.2005 um 18:20
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 22.01.05 18:21
Bei OnKeyDown:
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 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: Sa 22.01.05 18:24
sry das ich das topic falsch geöffnet habe !
|
|
ploRa 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: 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
|
Verfasst: Sa 22.01.05 18:33
Versuchs mal mit Delphi-Quelltext 1: 2: 3:
| if key = 'X' then ... if key = ord('x') then ... |
|
|
ploRa 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: Sa 22.01.05 18:39
woher weiß denn delphi das ich zB die linke pfeiltaste drücke
|
|
Benutzername
      
Beiträge: 210
Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
|
Verfasst: 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
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: 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 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: 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 !!
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 raziel: Code- durch Delphi-Tags ersetzt.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: Sa 22.01.05 20:59
es wird gar kein fehler ausgeben er macht es einfach nicht 
|
|
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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! 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
NeoInDerMATRIX
      
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
|
Verfasst: 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.
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.
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 
      
Beiträge: 59
Win XP
Delphi 6
|
Verfasst: 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
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
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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...
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
      
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
|
Verfasst: 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
|
|