tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
2367
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kdfssl kdfssl ist offline Rookie
    Registriert seit
    Jan 2009
    Beiträge
    6
    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)
    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;
    vielen Dank für eure Hilfe!
     

  2. #2
    Registriert seit
    Mar 2004
    Beiträge
    441
    Zitat Zitat von kdfssl Beitrag anzeigen
    Das problem ist, dass sich solch ein Focus auf dem Button befindet den ich nicht loswerde.
    Und was genau ist da das Problem?

    Zitat Zitat von kdfssl Beitrag anzeigen
    Mein vorschlag war dann die FormKeyDown prozedur in der ButtonClick prozedur mit einzubinden aber dann sagt mir Delphi es fehlen parameter. ...
    formkeydown(Sender: TObject; var Key: Word; Shift: TShiftState);
    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:
    Code :
    1
    2
    3
    4
    5
    
    var
      Key: Word;
    ...
    Key := VK_LEFT; // oder sonst ein beliebiger Wert.
    FormKeyDown(self, Key, []);
    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.
     

  3. #3
    HarryXVI HarryXVI ist offline Mitglied Gold
    Registriert seit
    Apr 2008
    Beiträge
    108
    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.
     

  4. #4
    kdfssl kdfssl ist offline Rookie
    Registriert seit
    Jan 2009
    Beiträge
    6
    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.
     

  5. #5
    Registriert seit
    Mar 2004
    Beiträge
    441
    Zitat Zitat von kdfssl Beitrag anzeigen
    Problem ist, dass er nicht mehr in die Prozedur Tform1.Formkeydown geht, nachdem man auf einem Button geklickt hat.
    Aha. Dann setze mal in deinem Formular die Eigenschaft KeyPreview auf true.
     

  6. #6
    kdfssl kdfssl ist offline Rookie
    Registriert seit
    Jan 2009
    Beiträge
    6
    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.
     

  7. #7
    Registriert seit
    Mar 2004
    Beiträge
    441
    Zitat Zitat von kdfssl Beitrag anzeigen
    Ich weiß leider nicht was ich als Parameter angeben muss.
    Dafür gibt's die Onlinehilfe. Suchwort: TForm -> Ereignisse.
     

  8. #8
    kdfssl kdfssl ist offline Rookie
    Registriert seit
    Jan 2009
    Beiträge
    6
    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

  1. Formular Link/Button
    Von Arcoz im Forum HTML & XHTML
    Antworten: 6
    Letzter Beitrag: 03.07.08, 12:18
  2. Click Prozedur innerhalb einer anderen Prozedur aufrufen?!
    Von Blaubmania im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 21.09.06, 12:55
  3. Formular Button
    Von devil20042005 im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 07.03.06, 17:24
  4. Formular] Bilder als Button
    Von Moritz123 im Forum HTML & XHTML
    Antworten: 16
    Letzter Beitrag: 11.05.05, 16:02
  5. Formular mit "Schrift" statt Formular Button
    Von Flash MX im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 15.07.04, 17:24