Verschieben eines Bilde auf Knopfdruck
Verschieben eines Bilde auf Knopfdruck
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
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
Re: Verschieben eines Bilde auf Knopfdruck
Hast du das Bild nach dem Ändern auch neu gezeichnet?
knight
knight
Re: Verschieben eines Bilde auf Knopfdruck
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.
Re: Verschieben eines Bilde auf Knopfdruck
Was ist denn "Bild"? Ein TImage? Bitte nenne die Klassennamen, oder zeige mehr vom Code.
Re: Verschieben eines Bilde auf Knopfdruck
Ja es ist ein "TImage".
-
- Lazarusforum e. V.
- Beiträge: 3178
- 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
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.
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Verschieben eines Bilde auf Knopfdruck
Ahhhh ich habs jetzt verstanden! Hab das mit dem Click nicht richtig verlinkt. also 2.^^ Vielen Dank!!
Re: Verschieben eines Bilde auf Knopfdruck
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
.
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

- corpsman
- Lazarusforum e. V.
- Beiträge: 1619
- 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
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 :
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:
Aber wie gesagt, ich empfehle dir dringend es mit OpenGL zu machen, dann noch ne saubere Vektorsteuerung, und dein Spiel wird auch "Spielbar"
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;
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;
--
Just try it
Just try it
-
- 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
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...corpsman hat geschrieben:Schau dir mal OpenGL an, da geht so was deutlich besser, es gibt auch schon jede Menge "Hilfen" zu OpenGL.
- corpsman
- Lazarusforum e. V.
- Beiträge: 1619
- 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
deswegen habe ich ihm die Lösung auch gepostet, finde es aber gut wenn man weis was hinter dem Tellerrand ist 

--
Just try it
Just try it
Re: Verschieben eines Bilde auf Knopfdruck
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;
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;