Verschieben eines Bilde auf Knopfdruck

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Anfänger
Beiträge: 5
Registriert: Di 2. Mär 2010, 20:34

Verschieben eines Bilde auf Knopfdruck

Beitrag von Anfänger »

Hallo,
ich lerne in der Schule aktuell etwas prgrammieren mit Lazarus und habe eine Frage und zwar wie mache ich es das wenn ich auf einen eingefügten Button klicke und sich daraufhin ein Bild nach recht verschiebt? Ich hatte an etwas in dieser Richtung gedacht:
procedure TForm1.Button1Click(Sender: TObject);

begin
Bild.left:= Bild.left+10;
end;
irgendiwe funktioniert es nicht, ich weis nicht wieso da ich es in der Schule so hinbekommen habe
Bitte kleine Hilfe.
Gruss DER Anfänger

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von knight »

Hast du das Bild nach dem Ändern auch neu gezeichnet?

knight

Anfänger
Beiträge: 5
Registriert: Di 2. Mär 2010, 20:34

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von Anfänger »

Wie meinst du das? Das Bild hab ich als PNG Datei gespreichert und wenn ich F12 drück wird es auch alles richtig angezeigt. Nur beim Ausführen Passiert nichts wenn ich den Knopf drücke. Eigentlich sollte das Bild dann ja nach rechts verschoben werden.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von theo »

Was ist denn "Bild"? Ein TImage? Bitte nenne die Klassennamen, oder zeige mehr vom Code.

Anfänger
Beiträge: 5
Registriert: Di 2. Mär 2010, 20:34

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von Anfänger »

Ja es ist ein "TImage".

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von Socke »

1. Wie lädst du das Bild?
2. Ist die Methode Button1Click wirklich mit dem richtigen Button verbunden (OnClick-Eigenschaft)
3. meine Uralt-Windows-Version macht das vollkommen richtig.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Anfänger
Beiträge: 5
Registriert: Di 2. Mär 2010, 20:34

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von Anfänger »

Ahhhh ich habs jetzt verstanden! Hab das mit dem Click nicht richtig verlinkt. also 2.^^ Vielen Dank!!

Anfänger
Beiträge: 5
Registriert: Di 2. Mär 2010, 20:34

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von Anfänger »

OK habe jetzt folgendes:
begin
Porsche911.left:= Porsche911.left + 10;
IF Porsche911.left>Form1.width
then Porsche911.Left:= -Porsche911.Width;
(Porsche911 weil wir ein Auto fahren lassen^^) Das bewirkt ja wenn es rechts verschwindet das es links wieder auftaucht.
So wenn ich jetzt will das das Auto rückwärts fährt mach ich ja
Porsche911.left:= Porsche911.left - 10;
und wie mach ich es wenn es rückwärts fährt? also das wenn es links verschwindet recht wieder auftaucht? Ich bekomme das nicht hin :( .

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von corpsman »

für mich sieht das ja nach nem Spiel aus was du da Programmierst, und da würde ich definitiv nicht mit TImage Arbeiten.

Schau dir mal OpenGL an, da geht so was deutlich besser, es gibt auch schon jede Menge "Hilfen" zu OpenGL.

und zu deiner Lösung :

Code: Alles auswählen

IF Porsche911.left<0
then Porsche911.Left:= Form1.width;


Das Problem ist natürlich das der Code so wie er da steht dir nichts bringt, weil deine beiden If konkurrierend sind.

Du brauchst noch eine Variable "Dir" die entscheiden hilf. Also in etwa so:

Code: Alles auswählen

dirx := -10 ; // Auto nach Links
dirx := 10 ; // Auto nach Rechts
 
Porsche911.left:= Porsche911.left + dirx;
IF(Porsche911.left>Form1.width) and (dirx > 0)
then Porsche911.Left:= -Porsche911.Width;
 
IF(Porsche911.left < 0) and (dirx < 0)
then Porsche911.Left:= Form1.width;


Aber wie gesagt, ich empfehle dir dringend es mit OpenGL zu machen, dann noch ne saubere Vektorsteuerung, und dein Spiel wird auch "Spielbar"
--
Just try it

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von Euklid »

corpsman hat geschrieben:Schau dir mal OpenGL an, da geht so was deutlich besser, es gibt auch schon jede Menge "Hilfen" zu OpenGL.


Naja, OpenGL ist glaube ich nichts für Leute, die Einsteiger sind. Da ist es schon in Ordnung, wenn man zunächst mal Images hin und her rückt...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von corpsman »

deswegen habe ich ihm die Lösung auch gepostet, finde es aber gut wenn man weis was hinter dem Tellerrand ist ;)
--
Just try it

lrlr
Beiträge: 127
Registriert: Di 3. Nov 2009, 09:48

Re: Verschieben eines Bilde auf Knopfdruck

Beitrag von lrlr »

bei dem opengl Vorschlag muss ich auch kurz lachen...

zumthema:

deine "lösung":

die Schlussfolgerung die if wäre "konkurrierend" ist mal ein schmarn..
b) die lösung ist falsch...

hier mal meine:

IF(Porsche911.left>Form1.width)
then Porsche911.Left:= -Porsche911.Width;
{hier könnte man jetzt Performance/"sicherheitshalber" ein else machen, muss man aber nicht }

IF(Porsche911.left < -Porsche911.Width)
then Porsche911.Left:= Form1.width;

Antworten