Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
Problem mit Bilderbewegungen auf form1
spacer
Autor Nachricht
delphianer5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 16
Dabei seit: 06.03.2010



BeitragVerfasst: Sa 06.03.10 15:04  Antworten mit Zitat Beitrag melden
Hi,

ich lerne delphi in der Schule und habe Probleme bei einem Projekt.Bei dem Projekt geht es dadrum das man Bilder mittels eines Timers auf dem Bildschirm wandern lässt.Erstmals noch eine allgemeine Frage:
Ich will das wenn das Bild oben auf dem Fenster herauswandert unten wieder herauskommt.Ich will das mit einer if-Anweisung lösen, also if Bild.Left>form1."...".
Das Problem ist das ich nicht weiß was ich bei form1."..." hinschreiben soll.Wenn es rechts rauswandert heißt ja width nur wie wenns oben rauswandert?

Problem 2 und das ist das größere Problem.

Ich hab das Projekt geschrieben und es funktioniert teilweise.Die Bilder wandern so wie ich will nur sie fangen direkt an zu wandern,wenn die exe geöffnet wird,das sollen sie aber nicht.Habe dan Tex auf Buttons programmiert und sie sollten erst bei klick ausgelöst werden tun sie aber nicht.
Könnt ihr mir helfen?

Quellcode:
ausblenden volle Höhe Delphi-Quelltext markieren
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:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
unit UAutotimer;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Background: TImage;
F430: TImage;
Lenkrad: TImage;
Links: TButton;
Pedal: TImage;
Bremse: TButton;
Rechts: TButton;
Gas: TButton;
Timer1: TTimer;
Hummer: TImage;
Pedal2: TImage;
Gas2: TButton;
Button2: TButton;
Timer2: TTimer;
Timer3: TTimer;
Hummer2: TImage;
Timer4: TTimer;
procedure GasClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure BremseClick(Sender: TObject);
procedure Gas2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure LinksClick(Sender: TObject);
procedure Hummer2Click(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.GasClick(Sender: TObject);
begin
if Gas.Caption='Gas'
then
begin
Timer1.Enabled:=True;
Gas.Caption:='Gas s';
end
else
begin
Timer1.Enabled:=False;
Gas.Caption:='Gas';
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Timer1.Enabled=True
then
begin
F430.Left:=F430.Left + 1;
end
else
begin
F430.Left:=F430.Left + 0;
end;

if F430.Left>form1.width
then
begin
F430.Left:=0;
F430.Left:=F430.Left + 1;
end
else
begin
F430.Left:=F430.Left + 0;
end;
end;
procedure TForm1.BremseClick(Sender: TObject);
begin
if Timer1.Enabled=True
then
begin
Timer1.Enabled:=False;
end
else
begin
Timer1.Enabled:=False;
end;
end;

procedure TForm1.Gas2Click(Sender: TObject);
begin
if Gas2.Caption='Gas'
then
begin
Timer2.Enabled:=True;
Gas2.Caption:='Gas s';
end
else
begin
Timer2.Enabled:=False;
Gas2.Caption:='Gas';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer2.Enabled=True
then
begin
Timer2.Enabled:=False;
end
else
begin
Timer2.Enabled:=true;
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if Timer2.Enabled=True
then
begin
Hummer.Top:=Hummer.Top + 1;
end
else
begin
Hummer.Top:=Hummer.Top + 0;
end;

if Hummer.top>form1.height
then
begin
Hummer.top:=0;
Hummer.top:=Hummer.Top + 1;
end
else
begin
Hummer.top:=Hummer.Top + 0;
end;
end;

procedure TForm1.LinksClick(Sender: TObject);
begin
if Links.Caption='Links'
then
begin
Timer3.Enabled:=True;
Links.Caption:='Links 1';
end
else
begin
Timer3.Enabled:=False;
Links.Caption:='Links';
end;
end;

procedure TForm1.Hummer2Click(Sender: TObject);
begin
Timer4.Enabled:=True;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
if Timer4.Enabled=True
then
begin
Hummer2.Top:=Hummer2.Top + 1;
end
else
begin
Hummer2.Top:=Hummer2.Top + 0;
end;

if Hummer2.top>form1.height
then
begin
Hummer2.top:=0;
Hummer2.top:=Hummer2.Top + 1;
end
else
begin
Hummer2.top:=Hummer2.Top + 0;
end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
if Timer3.Enabled=True
then
begin
F430.Top:=F430.Top - 10;
F430.Left:=F430.Left +5;
end
else
begin
F430.Left:=F430.Left+ 0;
Timer3.Enabled:=False;
end;
end;

end.




mfg delphianer5

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler verschoben am So 07.03.2010 um 17:35
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von delphianer5 am So 07.03.10 23:20, insgesamt 1-mal bearbeitet
Private Nachricht sendenPosting in privater Nachricht zitieren
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 3. Rang

Beiträge: 1895
Erhaltene Danke: 9
Dabei seit: 07.01.2008


Win7(Home)x64, FF 3.6.8
Delphi 2010 Professional
BeitragVerfasst: Sa 06.03.10 17:31  Antworten mit Zitat Beitrag melden
Hi :)

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Ich will das wenn das Bild oben auf dem Fenster herauswandert unten wieder herauskommt.Ich will das mit einer if-Anweisung lösen, also if Bild.Left>form1."...".
Das Problem ist das ich nicht weiß was ich bei form1."..." hinschreiben soll.Wenn es rechts rauswandert heißt ja width nur wie wenns oben rauswandert?
Die Integervariablen in einem TRect(Rechteck) heißten Left, Top, RIght und Bottom; bzw. statt Right und Bottom manchmal auch Width und Height. Das Konzept taucht häufiger auf =)

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Problem 2 und das ist das größere Problem.

Ich hab das Projekt geschrieben und es funktioniert teilweise.Die Bilder wandern so wie ich will nur sie fangen direkt an zu wandern,wenn die exe geöffnet wird,das sollen sie aber nicht.Habe dan Tex auf Buttons programmiert und sie sollten erst bei klick ausgelöst werden tun sie aber nicht.

Kein Problem, stelle einfach im Object Inspector des Timers auf dem Formular die Eigenschaft Enabled auf false. (Der Object Inspector ist die Leiste auf der linken Seite in der Grafikansicht(<>Quelltextansicht), wo du die Eigenschaften der festen Formularkomponenten einstellst).
Wenn du den Timer dann starten willst, geht das per TimerName.Enabled := true;.

lg,

_________________
Even the word doctor is false. Your real name is Hidden. :O
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

Beiträge: 56
Dabei seit: 09.02.2009
Wohnort: in der Nähe von Stuttgart

Win 7
Delphi 7 Pers.
BeitragVerfasst: Sa 06.03.10 17:34  Antworten mit Zitat Beitrag melden
Hallo!
Bitte erstelle für jede Frage einen eigenen Thread - das macht dieses Foum hier wesentlich übersichtlicher! :D
Vermeide außerdem Vergleiche mit True/False; warum das so ist, wird hier erklärt: www.delphi-treff.de/...g-mit-boolean-werten
Private Nachricht sendenPosting in privater Nachricht zitieren
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 3. Rang

Beiträge: 1895
Erhaltene Danke: 9
Dabei seit: 07.01.2008


Win7(Home)x64, FF 3.6.8
Delphi 2010 Professional
BeitragVerfasst: Sa 06.03.10 18:02  Antworten mit Zitat Beitrag melden
user profile iconStundenplan hat folgendes geschrieben Zum zitierten Posting springen:
Vermeide außerdem Vergleiche mit True/False; warum das so ist, wird hier erklärt: www.delphi-treff.de/...g-mit-boolean-werten
Stimmt, das hatte ich gar nicht gemerkt.
Ein weiterer Tipp wäre, dass du nicht so streng nach jedem Schlüsselwort Umbrechen und Einrücken musst(letzteres quasi nur, wenn der folgende Codeteil in Abhängigkeit vom Ersten eventuell nicht ausgeführt wird, oder ein sogenannter Block(begin..end) ist. So einer muss aber nur folgen, wenn er auch mehrere Anweisungen zusammenfasst, also z.B. bei deinen ifs unten nicht). Eine übersichtlichere Variante könnte dann so aussehen:

ausblenden volle Höhe Delphi-Quelltext markieren
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:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
implementation

{$R *.dfm}

procedure TForm1.GasClick(Sender: TObject);
begin
if Gas.Caption = 'Gas' then begin
Timer1.Enabled := True;
Gas.Caption := 'Gas s';
end else begin
Timer1.Enabled := False;
Gas.Caption := 'Gas';
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Timer1.Enabled then
F430.Left := F430.Left + 1;
//else F430.Left := F430.Left + 0; {hö? =P (verstehst du, was der Teil macht? Nach einem If muss nicht zwingend ein else folgen :))}

if F430.Left > Form1.Width then begin
F430.Left := 0;
F430.Left := F430.Left + 1;
end;
end;

procedure TForm1.BremseClick(Sender: TObject);
begin
if Timer1.Enabled then
Timer1.Enabled := False
else Timer1.Enabled := False;

//das obere ist irgendwie komisch: Warum heißt es in beiden Fällen ":= False"?
//Wenn es von false auf true und umgekehrt gehen soll, kannst du das auch so machen:
Timer1.Enabled := not Timer1.Enabled;
end;

procedure TForm1.Gas2Click(Sender: TObject);
begin
if Gas2.Caption = 'Gas' then begin
Timer2.Enabled := True;
Gas2.Caption := 'Gas s';
end else begin //der zweite Teil ist glaube ich wieder unnötig, oder? Wenn Gas2.Caption = 'Gas' ist, soll sie auf 'Gas' gesetzt werden?
Timer2.Enabled := False;
Gas2.Caption := 'Gas';
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer2.Enabled then
Timer2.Enabled:=False;
else Timer2.Enabled:=true;

//kürzer:
Timer2.Enabled := not Timer2.Enabled;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if Timer2.Enabled then
Hummer.Top := Hummer.Top + 1;

if Hummer.Top > Form1.Height then begin //hier hattest du "Height" übrigens schon drinstehen ;)
Hummer.top := 0;
Hummer.top := Hummer.Top + 1;
end else Hummer.Top := Hummer.Top + 0; //Das else ist wieder überflüssig ;);)
end;

procedure TForm1.LinksClick(Sender: TObject);
begin
if Links.Caption = 'Links' then begin
Timer3.Enabled:=True;
Links.Caption:='Links 1';
end else begin
Timer3.Enabled:=False;
Links.Caption:='Links';
end;
end;

procedure TForm1.Hummer2Click(Sender: TObject);
begin
Timer4.Enabled:=True;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
if Timer4.Enabled then
Hummer2.Top:=Hummer2.Top + 1
else Hummer2.Top:=Hummer2.Top + 0;

if Hummer2.Top > Form1.Height then begin
Hummer2.Top:=0;
Hummer2.Top := Hummer2.Top + 1;
end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
if Timer3.Enabled then begin
F430.Top := F430.Top - 10;
F430.Left := F430.Left +5;
end else begin
F430.Left := F430.Left + 0;
Timer3.Enabled := False;
end;
end;

end.


PS: Wenn die Zusammenfassung Timer2.Enabled := not Timer2.Enabled; nicht so einfach zu verstehen ist, einfach nochmal nachfragen! :zwinker:

lg,

_________________
Even the word doctor is false. Your real name is Hidden. :O
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 571
Dabei seit: 17.09.2008
Wohnort: Schleswig-Holstein, nahe Bad Bramstedt

WIN XP/2000&7Prof (Familie:Win 95,Win 98)
BeitragVerfasst: So 07.03.10 17:24  Antworten mit Zitat Beitrag melden
Entschuldigung, dieser Teil kann doch so gar nicht ausgeführt werden, wenn der Timer gar nicht an ist und die Procedure nur von diesem aufgerufen wird - und ich habe nirgendwo gesehen, dass sie extra mit Timer2.OnTimer aufgerufen wird (oder habe ich das nur übersehen?):
(in TForm1.Timer2Timer(Sender: TObject);):
ausblenden Delphi-Quelltext markieren
1:
2:
  if Timer2.Enabled then
Hummer.Top := Hummer.Top + 1;
Private Nachricht sendenPosting in privater Nachricht zitieren
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Moderator

Beiträge: 7322
Erhaltene Danke: 7
Dabei seit: 25.07.2004
Wohnort: Gelsenkirchen

W2k, WXPpro
D6pe, D7pro
BeitragVerfasst: So 07.03.10 18:35  Antworten mit Zitat Beitrag melden
Moin!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]
Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Private Nachricht sendenPosting in privater Nachricht zitieren
delphianer5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 16
Dabei seit: 06.03.2010



BeitragVerfasst: So 07.03.10 19:21  Antworten mit Zitat Beitrag melden
Danke für die schnelle und ausführliche Beantwortung meiner Fragen.

@Hidden:Danke.Ja jetzt wo du es sagst,hätte ich von alleine drauf kommen können^^.
Ich hab nur ein weiteres Problem.Das Bild wandert heraus aber es erscheint nicht unten.Wo ist der Fehler?
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if Hummer2.top>form1.Top
then
begin
Hummer2.top:=650;
Hummer2.Left:=70;
Hummer2.top:=Hummer2.Top - 1;
end
else
begin
Hummer2.top:=Hummer2.Top + 0;
end;

Ach ja stimmt,die Timer werden ja standardmäßig auf true gestellt,Danke für den Hinweis!
Ich werde in Zukunft nicht mehr so streng einrücken,danke für den Tipp!

@Stundenplan:Ja ich wollte an meinem ersten Tag im Forum nicht gleich mit 2 Threads das ganze Forum zu spammen,noch dazu das es ja eig. sich alles auf das selbe Thema bezieht.

Ich habs mir durchgelesen,danke an alle für die Tipps wie ich meinen ich nenns mal "Schreibstil" verbessern kann,lerne Info erst seit dem Sommer 2 Stunden pro Woche und bin sehr dankbar für solche wertvollen Tipps.

@ffgorcky:
Doch, der Teil wird ausgeführt und funktioniert so wie ich es möchte oder habe ich dich falsch verstanden?

@Narses:
Ja ok,ist nicht das erste Forum das ich nutze nur wie so oft findet man nicht eine gute Überschrift,da ich das Thema nicht so gut differenzieren konnte.Außerdem wollte ich wohl eher unbewusst mit einem allgemeinem Betreff möglichst viele Leute hier ansprechen die mir dann helfen.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Private Nachricht sendenPosting in privater Nachricht zitieren
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 3. Rang

Beiträge: 1895
Erhaltene Danke: 9
Dabei seit: 07.01.2008


Win7(Home)x64, FF 3.6.8
Delphi 2010 Professional
BeitragVerfasst: So 07.03.10 21:08  Antworten mit Zitat Beitrag melden
user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@Hidden:Danke.Ja jetzt wo du es sagst,hätte ich von alleine drauf kommen können^^.
Ich hab nur ein weiteres Problem.Das Bild wandert heraus aber es erscheint nicht unten.Wo ist der Fehler?

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if Hummer2.top>form1.Top
then
begin
Hummer2.top:=650;
Hummer2.Left:=70;
Hummer2.top:=Hummer2.Top - 1;
end
else
begin
Hummer2.top:=Hummer2.Top + 0;
end;
Du verschiebst das Bild um ein Pixel zurück, wenn es schon raus ist. dann ist es wieder drin, wandert beim nächsten TImer also wieder raus, dann wider ein Pixel rein.. Setze mal .Top auf 0, wenn das Bild raus ist.
Eine andere Möglichkeit ist, dass du das Bild um einen Betrag aus einer Variable multiplizierst, und diese dann negierst, sodass der Hummer sich in die andere Richtung bewegt(Hummer.Top := Hummer.Top + HummerTempo; if Hummer.Top > Form1. Height then HummerTempo := -Hummertempo;).

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Ich werde in Zukunft nicht mehr so streng einrücken,danke für den Tipp!
Tja, streng einrücken(dich also an die "Regeln" halten), solltest du schon weiter, das war vielleicht ein bisschen unglücklich formuliert. :gruebel: Nur die Regelformulierung, wann also eingerückt werden sollte, kannst du verbessern. Wie, habe ich oben beschrieben.
(Wenn du es nicht streng, das heißt inkonsistent machst, ist das für manche Lehrer glaube ich Benotungskriterium). So, wie ich es vorgeschlagen habe, passt es glaube ich zum offiziellen Styleguide, da kann man dann nichts für abziehen.

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@Stundenplan:Ja ich wollte an meinem ersten Tag im Forum nicht gleich mit 2 Threads das ganze Forum zu spammen,noch dazu das es ja eig. sich alles auf das selbe Thema bezieht.

Joar, wir wollen hier aber ruhig mehrere Threads. Trennbare Fragen sollten auch getrennt werden, so als Maßregel.

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habs mir durchgelesen,danke an alle für die Tipps wie ich meinen ich nenns mal "Schreibstil" verbessern kann,lerne Info erst seit dem Sommer 2 Stunden pro Woche und bin sehr dankbar für solche wertvollen Tipps.
Bin selber noch Schüler in der 13, lernt man mit dem Forum aber eigentlich ganz gut(besonders aus Problemen anderer).

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@ffgorcky: Doch, der Teil wird ausgeführt und funktioniert so wie ich es möchte oder habe ich dich falsch verstanden?
user profile iconffgorcky meinte, dass die Prozedur nur aufgerufen wird, wenn der Timer auch läuft. Damit kommt deine if-Abfrage immer nur in die erste Verzweigung, nie in die Zweite.
Deine else-Teile kannst du dir eben an vielen Stellen sparen, insbesondere dort wo sie nichts machen(else: +0 :P).

user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
@Narses:
Ja ok,ist nicht das erste Forum das ich nutze nur wie so oft findet man nicht eine gute Überschrift,da ich das Thema nicht so gut differenzieren konnte.Außerdem wollte ich wohl eher unbewusst mit einem allgemeinem Betreff möglichst viele Leute hier ansprechen die mir dann helfen.

Denk' mal ein wenig nach. Um auf "Bilder über die Form bewegen" zu kommen, braucht es nun wirklich keinen 2. Abschluss :beer:

lg,

PS: Änder mal den Titel, sonst kommt bald die 2. Aufforderung ;)

_________________
Even the word doctor is false. Your real name is Hidden. :O
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
delphianer5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 16
Dabei seit: 06.03.2010



BeitragVerfasst: So 07.03.10 23:31  Antworten mit Zitat Beitrag melden
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Du verschiebst das Bild um ein Pixel zurück, wenn es schon raus ist. dann ist es wieder drin, wandert beim nächsten TImer also wieder raus, dann wider ein Pixel rein.. Setze mal .Top auf 0, wenn das Bild raus ist.
Eine andere Möglichkeit ist, dass du das Bild um einen Betrag aus einer Variable multiplizierst, und diese dann negierst, sodass der Hummer sich in die andere Richtung bewegt(Hummer.Top := Hummer.Top + HummerTempo; if Hummer.Top > Form1. Height then HummerTempo := -Hummertempo;).

hä?^^
Hab das nicht so wirklich ganz verstanden.Kannst du mir nen passenden Quellcode zu dem Teil schreiben den ich mit copy+paste einfügen kann und die Erklärung dadran veranschaulichen?

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconffgorcky meinte, dass die Prozedur nur aufgerufen wird, wenn der Timer auch läuft. Damit kommt deine if-Abfrage immer nur in die erste Verzweigung, nie in die Zweite.
Deine else-Teile kannst du dir eben an vielen Stellen sparen, insbesondere dort wo sie nichts machen(else: +0 :P).

Achso,ich dachte immer es muss was bei "else" stehen.

Moderiert von user profile iconNarses: Zitate repariert und gekürzt.
Private Nachricht sendenPosting in privater Nachricht zitieren
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Nussknacker 2009 - 3. Rang

Beiträge: 1895
Erhaltene Danke: 9
Dabei seit: 07.01.2008


Win7(Home)x64, FF 3.6.8
Delphi 2010 Professional
BeitragVerfasst: So 07.03.10 23:46  Antworten mit Zitat Beitrag melden
user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Achso,ich dachte immer es muss was bei "else" stehen.
Psst ;) Du darfst da auch ruhig mal drüberschauen, selbst wenn es sich um Quelltext handelt, der für dich im Moment ventuell noch etwas schwerer zu lesen ist.^^
user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Timer1.Enabled then
F430.Left := F430.Left + 1;
//else F430.Left := F430.Left + 0; {hö? =P (verstehst du, was der Teil macht? Nach einem If muss nicht zwingend ein else folgen :))}

if F430.Left > Form1.Width then begin
F430.Left := 0;
F430.Left := F430.Left + 1;
end;
end;

_________________
Even the word doctor is false. Your real name is Hidden. :O
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 571
Dabei seit: 17.09.2008
Wohnort: Schleswig-Holstein, nahe Bad Bramstedt

WIN XP/2000&7Prof (Familie:Win 95,Win 98)
BeitragVerfasst: Mo 08.03.10 21:53  Antworten mit Zitat Beitrag melden
user profile icondelphianer5 hat folgendes geschrieben Zum zitierten Posting springen:
Wo ist der Fehler?
ausblenden Delphi-Quelltext markieren
1:
if Hummer2.top<form1.Top

Also ich denke mal, dass Du dort eher if Hummer2.top<0 machen möchtest, um zu sehen, ob Deine Komponente schon den oberen Rand erreicht hat. - So wie Du es geschrieben hast, guckt das Programm ja, wie weit es von dem oberen Bildschirmrand entfernt ist und wenn der Hummer2 von Deiner Titelleiste des Programms den gleichen Abstand hat, dann ist diese schon nicht mehr erfüllt.
- Noch besser fände ich dann alerdings, wenn Du das dann abbrichst, wenn der Hummer2 komplett nach oben rausgewandert ist - also so:
ausblenden Delphi-Quelltext markieren
1:
if (Hummer2.top<(form1.Top-Hummer2.Height)) then;


PS: Zu user profile iconHiddens komischem Quelltext mit dem if Timer1.Enabled then:
Das mit der Abfrage in dem Timer-Event, ob der Timer denn überhaupt an ist bringt nur dann etwas, wenn Du diese Procedure von einer anderen Procedure aus aufrufst, oder sie auch als OnClick-Ereignis oder so etwas deklarierst.

- Aber da solltest Du zu Anfang lieber nicht schon drauf eingehen, sondern Dich lieber erst mal um das wesentliche kümmern. - Das verwirrt sonst evtl. noch zu Anfang, wenn man zu viele Einzelheiten beachtet.
Private Nachricht sendenPosting in privater Nachricht zitieren
delphianer5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

(Threadstarter)

Beiträge: 16
Dabei seit: 06.03.2010



BeitragVerfasst: Mo 08.03.10 23:44  Antworten mit Zitat Beitrag melden
@Hidden:
Der Teil macht nichts,war ja so beabsichtigt,weil ich dachte es muss immer was hin.Wenn ich weiter drüber nachdenke ist das aber wirklich nicht zwingend notwendig.Danke für die Aufklärung!^^

@ffgorcky:
Danke!
Jetzt erkenne ich meinen Fehler,nen bisschen verkehrt herum gedacht.
Jetzt muss ich nur noch die Variablen eingeben wo es unten herauskommen soll und es passt alles aus einem Guss.
Wenn ich bei der nächsten Programmierung bei dem Programm keine Probleme hab und es damit fertig ist,speichere ich ab und überarbeite meinen Quellcode.

^^Erinnert mich an Mathe,Lehrer diktiert alles, man denkt nur "Bahnhof" und wenn man es dann Schritt für Schritt selektiert ist es gar nicht mehr so schwer.
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home