Autor Beitrag
Larien
Hält's aus hier
Beiträge: 12


D6 Pers
BeitragVerfasst: Sa 18.12.04 15:34 
Ich hab mal wieder probleme mit meinem Image files und hoffe jemand kann mir helfen (erwähnte ich, dass ich in Delphiprogrammierung ne niete bin ?! :roll: ):

Also: ich habe ein Forumlar mit einem Image-Rahmen und zwei buttons.
In den Image rahmen sollen nun hintereinander drei Bilder geladen werden. Dh. wenn ich button1 betätige soll bild 1 geladen werden, wenn ich diesen erneut betätige bild 2 usw.
soweit bekomm ich das auch hin :
Meine Prozedur für den Button 1 sieht also folgendermaßen aus :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm2.ButtonSp2vorClick(Sender: TObject);
begin
case a of
0: Image2.Picture.loadfromFile('Bild1.jpg')   ;
1: Image2.Picture.loadfromFile('bild2.jpg') ;
2: Image2.Picture.loadfromFile('bild3.jpg');
end;
a:=a+1; if a>2 then a:=0;
end;


wenn ich nun aber button 2 betätige, möchte ich das das vorherige Bild wieder in den Imagerahmen geladen wird: und hier liegt mein Problem und dachte dass würde funktionieren, wenn ich einfach die Prozedur von Button1 übernehme und einfach das mit der Variable verändere also : a:=a-1. Doch irgendwie bekomm ich es nicht hin, dass die Button2 prozedur mit dem gleichen Wert der Variable a, wie bei der Button1 Prozedur weiterrechnet. Das äußert sich dann darin das sich die Reihenfolge der Bilder verändert - nämlich nicht so wie ich's gerne hätt: Bild 1>2>3<2<1

Hmm, ich hoffe irgendjemand hat das eben geschriebene verstanden und kann mir helfen...


Zuletzt bearbeitet von Larien am So 19.12.04 22:35, insgesamt 1-mal bearbeitet
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Sa 18.12.04 15:47 
Dann musst du abfragen wer der Sender ist:
Bei Button1 eröhst du a, bei Button2 verminderst du a.
Oder habe ich die Frage falsch verstanden? :?

_________________
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 18.12.04 17:01 
als erstel mal musst du die Variable natürlich initialisieren. vll in form Create. Als nächstes sehe ich folgenden Fehler:
mein verkleinern der variable würdest du dann auch
if a>2 then a:=0; schreiben, was allerdings zur Folge hat, dass die Variable bis zum rand der Integerdefinition ins minus gehen kann. das musst du natürlich umdrehen in
if a<0 then a:=2; oder wenn er danach einfach nur das erste bild immer wieder laden soll, dann schreibst du a:=0;
Dann würde ich ausserdem mit 1 anfangen, statt mit 0, erstens, der übersichtlichkeit halber, 2. weil ich dann einfach Image2.LoadFromFile('Bild'+IntToStr(a)+'.jpg'); schreiben könnte, und das case of weglassen könnte.
Dann liese sich das ganze noch wie basti gesagt hat in eine einzige procedure zwängen, indem du abfragst, welcher button geklickt wurde:

ausblenden Delphi-Quelltext
1:
2:
3:
if sender=ButtonSp2vor then a:=a+1 else a:=a-1;
[alternativ liese sich das a:=a+1 verkürzen:}
if sender=ButtonSp2vor then Inc(a) else Dec(a);

so sollte es einich klappen.

Dann würde ich letzten endes noch die Inclination und die declination der variable vor das Laden der Bilder setzen.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Larien Threadstarter
Hält's aus hier
Beiträge: 12


D6 Pers
BeitragVerfasst: So 19.12.04 17:20 
Mhh also vielen Dank erstmal, ich hab das auch gleich nachdem ch's gelesen hab ausprobiert (so um 2-3.oo nachts :roll: ) aber so richtig funktionieren mag es trotzdem nicht...
also meine Prozedur hat nun folgenden Inhalt
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
begin
Image1.picture.LoadFromFile('C:\(...)\'+'Bild'+IntToStr(a)+'.jpg');

if Sender=Button1 then a:=a-1 else a:=a;
if Sender=Button2 then a:=a+1 else a:=a;

if a>3 then a:=1;
if a<1 then a:=3;


end;

und in Formcreate hab ich dann, so wie ich deine ANweisung verstanden hab, a den wert 1 zugewiesen. Das Programm läuft soweit nur das überhaupt nichts geschieht wenn ich eben die beiden Button betätige :/
(hiLfE!! - was hab ich falsch gemacht?)


Zuletzt bearbeitet von Larien am So 19.12.04 22:34, insgesamt 1-mal bearbeitet
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: So 19.12.04 18:29 
hast du beiden buttons die procedure zugewiesen? im objektinspektor unter ereignisse "onClick" in der dropdown liste das ereignis auswählen! also die procedure.
das else ist sowas von unsinnig, sorry, aber es tut ja nichts als a den selben wert zuweisen, den es schon vorher hatte. lass beide "else a:=a;" weg, und setz einen ; dahinter.
dann solltest du vll das
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if Sender=Button1 then a:=a-1 else a:=a;   
if Sender=Button2 then a:=a+1 else a:=a;   

if a>3 then a:=1;   
if a<1 then a:=3;

vor das
ausblenden Delphi-Quelltext
1:
Image1.picture.LoadFromFile('C:\(...)\'+'Bild'+IntToStr(a)+'.jpg');					

setzen.
ansonsten kann es passieren, dass er versucht Bild0 oder Bild4 zu laden, was es nicht gibt.(denk ich)
letzendlich solltest du vll doch getrennte Proceduren machen. ohne das if sender=...

PS: Wenn du nicht willst, das die moderatoren sauer werden ( ;) ), dann nimm ihnen etwas arbeit ab, und ersetze deine code-Tags mit delphi-tags. also statt

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
[code] 
begin
blabla
end;
[/code]

[delphi]
begin
blabla
end;
[/delphi]

dadurch werden die Quellcodes so schön ge highlighted... :D

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Larien Threadstarter
Hält's aus hier
Beiträge: 12


D6 Pers
BeitragVerfasst: Di 21.12.04 13:34 
Hey es funktioniert!! Dankeschön!!
Und das mit den Quellcodes hab ich auch geändert ... konnt ich ja nicht wissen :roll: