Delphi a Lazarus — sterowanie strzalkami

0

Dzień dobry,
mam pytanie, przypomniałem sobie że kiedyś brałem z tego forum do Delphi 7 sterowanie obrazkiem w prawo lewo góra dół, teraz chciałem wkopiować to w lazarusa i zrobić coś podobnego i nie działa... Nie wiem czy późno i człowiek już zmęczony czy tam już jest inny kod klawiszy?

3

Najwyraźniej jest za późno, bo zamiast podać konkrety, Ty piszesz jakimś dziwnym szyfrem, nie podając żadnych kluczowych informacji. Wróć więc jutro, tym razem pisząc o co konkretnie chodzi.

0

ok przepraszam za sposób opisywania spraw. Nie mam wprawy.11jpg.jpg czego nie dopisałem do kodu bądź nie zaznaczyłem, że nie mogę skompilować, poza tym że jeszcze musi być to co się stanie po begin i przed end; Moja gramotność na forum wynika z powolnego oswajania. Głupio o wszystko pytać, to chyba banalne sprawy ale google nie rozwiązuje wszystkich problemów dlatego tu pytam o wszystko. Niedługo kupię jakieś książki do delphi może mi się coś rozjaśni.

3
Dodeq napisał(a):

czego nie dopisałem do kodu […]

Modułu LCLType w sekcji uses.

0

dziękuję bardzo!

0

mam problem zapisałem a dopiero skompilowałem znowu czy to może być błąd w lazarusie ze znów nie chodzi? tylko nie ma błędu wpisałem wszystko i tak jakby rusza się po jednym razie w prawo w lewo i dalej się nic nie da zrobić. czy to ""bug" jakiś może być?

1

@Dodeq:
opisz sensownie i zrozumiale problem, do tego pokaż kod.. nikt nie będzie wróżył z fusów

0
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, LCLType ;

type

  { TForm1 }

  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
  );

  begin
if Key = vk_right then
begin
image1.show;
image1.left:=+2;
end;
if Key = vk_left then
begin
image1.Show;
image1.left:=-2;
end;
if Key = vk_up then
begin
image1.show;
image1.top:=+2;
end;
if Key = vk_down then
image1.show;
image1.top:=-2;
end;
end.      

Chodzi mi o to że obrazek może się poruszyć jednorazowo tylko o 2 pkt po kolejnym wciśnięciu np drugim pod rząd w prawo bądź lewo nie przesuwa się. Tak jest z każdą stroną. Jak zmienie cyfre z "2" na "5" to ruszy się o 5 pixeli ale też czynność mogę wykorzystać tylko o jeden ruch. LEWO-PUNKT WYJSCIA-PRAWO a LEWO-LEWO-PUNKT WYJŚCIA już nie mogę zrobić. Mam nadzieje że teraz lepiej napisałem. W delphi 7 to działało normalnie w Lazarusie nie chce dobrze działać.

1

Trudno żeby się przesuwał, skoro zdarzenie OnKeyDown jest generowane tylko wtedy, gdy się wciśnie przycisk, a że raz go wciskasz i trzymasz, to tylko raz się wywołuje.

1

Tworzenie oprogramowania to czasami też proces badawczy ,
jak zrobisz sobie prosty eksperyment i pod każde zdarzenie formy które zawiera "Key" dodasz np. writeln('twoja nazwa zdarzenia') to w 30s odkryjesz jedną tajemnice wszechświata

Baw i ucz się ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1