ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
2367
2367
EMPFEHLEN
-
Hi ich wollte meine Figur in meinem Fall ein image über den Bildschirm laufen lassen, was auch geht, aber auf ein klick ,eines Buttons im Formular, soll sich die geschwindigkeit ändern mit der sich die Figur bewegt. Das problem ist, dass sich solch ein Focus auf dem Button befindet den ich nicht loswerde. Mein vorschlag war dann die FormKeyDown prozedur in der ButtonClick prozedur mit einzubinden aber dann sagt mir Delphi es fehlen parameter. Ich weiß auch ehrlich gesagt nicht welche ich dort angeben soll.
hier mein code :
(die einzelnen bilder sind nur die perspektiven der Figur)
vielen Dank für eure Hilfe!implementation
var speed : integer;
{$R *.DFM}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_LEFT: begin
if (image1.visible=true) or (image2.visible=true) or (image4.visible=true)
then
begin
image1.visible:=false;
image3.visible:=true;
image4.visible:=false;
image2.visible:=false;
end;
Image1.Left := Image1.Left - speed;
Image2.Left := Image1.Left - speed;
Image3.Left := Image1.Left - speed;
Image4.Left := Image1.Left - speed;
Key := 0;
end;
VK_RIGHT: begin
if (image2.visible=true) or (image3.visible=true) or (image4.visible=true)
then
begin
image1.visible:=true;
image3.visible:=false;
image4.visible:=false;
image2.visible:=false;
end;
Image1.Left := Image1.Left + speed;
Image2.Left := Image1.Left - speed;
Image3.Left := Image1.Left - speed;
Image4.Left := Image1.Left - speed;
Key := 0;
end;
VK_UP: begin
if (image1.visible=true) or (image2.visible=true) or (image3.visible=true)
then
begin
image1.visible:=false;
image3.visible:=false;
image4.visible:=true;
image2.visible:=false;
end;
Image1.top := Image1.top - speed;
Image2.top := Image1.top - speed;
Image3.top := Image1.top - speed;
Image4.top := Image1.top - speed;
Key := 0;
end;
VK_DOWN: begin
if (image1.visible=true) or (image3.visible=true) or (image4.visible=true)
then
begin
image1.visible:=false;
image3.visible:=false;
image4.visible:=false;
image2.visible:=true;
end;
Image1.top := Image1.top + speed;
Image2.top := Image1.top - speed;
Image3.top := Image1.top - speed;
Image4.top := Image1.top - speed;
Key := 0;
end;
end;
if (image1.Top > 100) and (image1.left > 100) then
button1.visible:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
speed:=speed+10;
formkeydown(Sender: TObject; var Key: Word; Shift: TShiftState);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
speed:=1;
image1.visible:=true;
image2.visible:=false;
image3.visible:=false;
image4.visible:=false;
end;
-
19.02.09 13:31 #2
- Registriert seit
- Mar 2004
- Beiträge
- 441
Und was genau ist da das Problem?
Der Aufruf an sich stimmt schon. Aber die Parameterliste ist komplett daneben.
Die Prozedur FormKeyDown ist innerhalb deiner Form schon definiert, also ist es nicht nur unnötig, sondern sogar falsch, beim Prozeduraufruf die Datentypen mit anzugeben.
Das sollte eher so aussehen:
self ist das aufrufende Objekt, in Key kannst du den Tastenwert der gewünschten gedrückten Taste reichschreiben und [] steht für eine Menge TShiftStates, in diesem Fall eben keine, d.h. kein Shift, kein Ctrl, kein Alt etc.Code :1 2 3 4 5
var Key: Word; ... Key := VK_LEFT; // oder sonst ein beliebiger Wert. FormKeyDown(self, Key, []);
-
eine andere möglichkeit wäre (so wie ich es gemacht habe), den button beim programmstart inaktiv zu lassen, dann liegt da kein fokus mehr drauf und du kannst perfekt mit den tasten arbeiten. Sobald das Image dann eine Position erreicht hat, aktivierst du den Button.
-
Keine Ahnung was du mit aktivieren meinst aber sichter bzw unsichtbar machen klappt nicht.
Problem ist, dass er nicht mehr in die Prozedur Tform1.Formkeydown geht, nachdem man auf einem Button geklickt hat.
-
24.02.09 10:47 #5
- Registriert seit
- Mar 2004
- Beiträge
- 441
-
Hat auch leider Nichts gebracht.
Meine nächster versuch war, einfach die formkeydown Prozedur aufzurufen,
aber mit formkeydown(39;[]) sagt er mir: 'nicht genügend wirkliche parameter'.
Ich weiß leider nicht was ich als Parameter angeben muss.
-
02.03.09 00:25 #7
- Registriert seit
- Mar 2004
- Beiträge
- 441
-
tja die ganze Sache hat sich erledigt. Es liegt an Delphi 4 mit Delphi 2007 klappt es mit meine originalcode...Das soll mal einer erst mla rausbekommen...
trotzdem thx!
Ähnliche Themen
-
Formular Link/Button
Von Arcoz im Forum HTML & XHTMLAntworten: 6Letzter Beitrag: 03.07.08, 12:18 -
Click Prozedur innerhalb einer anderen Prozedur aufrufen?!
Von Blaubmania im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 21.09.06, 12:55 -
Formular Button
Von devil20042005 im Forum HTML & XHTMLAntworten: 2Letzter Beitrag: 07.03.06, 17:24 -
Formular] Bilder als Button
Von Moritz123 im Forum HTML & XHTMLAntworten: 16Letzter Beitrag: 11.05.05, 16:02 -
Formular mit "Schrift" statt Formular Button
Von Flash MX im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 15.07.04, 17:24





Zitieren
Login





