Autor Beitrag
lachgas
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 11.01.09 12:34 
hallo.
für meine projektarbeit in der schule, will ich ein auto auf der form zum fahren bringen.
zuerst will ich, dass das auto mit canvas gezeichnet wird. soweit bin ich schon. nun will ich, das über einen weitern button, die bewegung aktiviert wird, dass heißt, dass nachdem der button gedrückt wurde, die zeichnung auf die steuertasten reagiert und sich bewegt. aber an diesem schritt komme ich nicht mehr weiter. könnte mir da von euch bitte einer helfen?
mfg
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: So 11.01.09 12:43 
Um auf Tastatureingaben regieren zu können guck Dir mal die Events Onkey[Press, Up Down] der Form an.

Mit Hilfe deines "Aktivieren Buttons" setzt Du eine boolsche Variable auf true oder false. Zum Anfang reicht eine globale Variable. Welche Taste gedrückt wird werte in der Procedure für das Tastenevent aus. Entsprechend der Taste dann das Objekt verschieben.
lachgas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 11.01.09 12:54 
okay...und wie würde das in der unit aussehen?
mit dem boolean komme ich nämlich nicht klar, bzw kann mir das nicht vorstellen.
so sieht das momentan bei mir aus!!!

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
procedure TForm1.Button3Click(Sender: TObject);

    procedure zeichnen(k,l:Integer);
      begin
        with canvas do
          begin
          pen.width:=2;
         pen.Color:=clblue;
         brush.Color:=clblue;
         ellipse((k+190)-2,(l+275)-2,(k+190)+2,(l+275)+2);
         end;
      end;

begin
case Key of
  VK_LEFT:
    begin
      k:=k+10;
      l:=l+2;
      zeichnen(k,l);
    end;
  VK_RIGHT:
    begin
      k:=k+10;
      l:=l+2;
      zeichnen(k,l);
    end;
  VK_UP:
    begin
      k:=k+10;
      zeichnen(k,l);
    end;
  end;

end;

end.

ich dachte mir halt auch, dass ich sobald ich ne variable verändert habe, über ne procedure das gleich wieder zeichnen lasse. natürlich fehlt hier noch der teil, in dem die alte zeichnung gelöscht wird.

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 11.01.09 13:10 
Verwende bitte Code-Tags, dann ist der Code besser lesbar

Mache aus Zeichnen eine Methode und rufe diese dann in Paint() auf.

_________________
Markus Kinzler.
lachgas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 11.01.09 13:20 
was ist den methode, bzw wie stelle ich eine methode her?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 11.01.09 13:22 
Eine Methode ist Teil einer Klasse:

ausblenden Delphi-Quelltext
1:
procedure TForm1.zeichnen(k,l:Integer);					

_________________
Markus Kinzler.
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: So 11.01.09 14:49 
Ich würde dir bei sowas nicht die OnKeyDown empfehlen. Nimm lieber einen Timer, der dann abfragt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if GetAsyncKeystate(VK_LEFT) < 0 then
begin
  // links gedrückt
  // ...
end;


Ansonsten kann es etwas länger dauern, bis sich das Auto bewegt.

Zu einer Methode: In Delphi wird zwischen Prozeduren und Funktionen unterschieden. Bei einer Prozedur wird nur etwas ausgeführt, bei einer Funktion wird zusätzlich noch ein Wert zurückgegeben.
lachgas Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 14.01.09 17:58 
jakob ich danke dir...das hat wunderbar funktioniert.