Autor Beitrag
ultraz06
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 15:33 
hi :)
ich habe folgendes problem, ich will wenn ich auf eine paintbox klicke immer das ein image verschwindet.
also es ist ein moorhuhn klon, also bei mausklick=schuss soll nach jedem schuss eine patrone in form eines images verschwinden

ich wollte es mit einer for schleife machen die vom begin des timers bis zu 0 diese aktion ausführt, aber ich weiß nicht wie ich es machen soll das immer eine andere patrone verschwindet beim mausklick

außerdem soll nach dem alle patronen nicht mehr sichtbar sind, auf die rechte maustaste nachladen gelegt werden, was wieder alle bilder darstellt.

ich habe bis jetzt folgendes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.PaintBox1Click(Sender: TObject);
var  n:integer;
     timer:integer;
     image:integer;
begin
timer:=timer2.Interval;
     for n:=timer to 0 do
      begin  case image of
      0: image1.visible:=false;
.
.
.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Di 27.01.09 15:43 
Bei jedem Schuss den Counter hochzählen, und eine Prozedur erstellen, die jenachdem wie der counter steht die Bilder anzeigt.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 15:45 
mhm versteh ich nicht so genau wie soll ich den counter hochzählen?
mit for schleife ?
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 15:47 
Moin,
ich weiß nicht, ob du schon ein Spielklasse hast. Wenn nicht und du dir auch keine anlegen möchtest, dann würde ich das von Dude566 mal ausweiten:
Definiere eine neue Eigenschaft in deiner Form:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  {...}TForm
{...}
private
  fKugeln:Integer;
  procedure SetKugeln(Value:Integer);
public
  property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
{...}

Damit kannst du die Kugeln besser steuern. Für MaxKugeln musst du natürlich noch einen Konstante bringen. In die SetKugeln:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure SetKugeln(Value:Integer);
var
  i:Integer;
begin
  fKugeln:=Value;
  For i:=0 to MaxKugeln do
    TImage(FindComponent('Image'+IntToStr(i))).Visible := (Value<=i);
end;
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Di 27.01.09 15:49 
Du musst halt ständig Prüfen ob die Maus innerhalb deines Formbereiches geklickt wird, und wenn dies zutrifft muss dann halt z.b. Inc(counter) getätigt werden.

Kann aber auch sein das ich mich irre, bin mir da nicht sicher.

Denke es gibt noch bessere Lösungswege.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 16:14 
mhm das klingt sehr kompliziert mit
property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer); usw
geht das auch irgendwie alles einfacher ?
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 16:54 
user profile iconultraz06 hat folgendes geschrieben Zum zitierten Posting springen:
mhm das klingt sehr kompliziert mit
property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer); usw
geht das auch irgendwie alles einfacher ?

Naja, das ist der einfachste und übersichtlichste Weg. Dadurch machst du das ganze abpassbar. Wenn du also zu irgendeinem Zeitpunkt deinen Code zu den Kugeln ändern willst, dann ändert du im Endeffekt nur diese ein Prozedur.
Ich würde dir empfehlen, dich einfach mal zu dem Thema zu belesen. Vielleicht lassen sich deine Probleme damit schon lösen. Oder du stellst hier konkretere Fragen, dann kann man dir besser helfen :wink: .
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 17:01 
naja ich wollte es auf diesen weg machen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
begin
anz:=7   ;
for n:=0 to anz do
begin
      begin  case image of
      0: begin image1.visible:=false;
                image2.visible:=true;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true;  end;
      1: begin image2.visible:=false;
                image1.visible:=false;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true; end;
end;
 end;
 end;

aber irgendwie geht das nicht :/
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 27.01.09 17:07 
Sry, ich kann mir noch nicht einmal im Ansatz vorstellen, was dieser Code eigentlich zum Ziel hat. Das kann aber auch an der eigenwilligen Einrückung liegen.
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 17:07 
user profile iconultraz06 hat folgendes geschrieben Zum zitierten Posting springen:
naja ich wollte es auf diesen weg machen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
begin
anz:=7   ;
for n:=0 to anz do
begin
      begin  case image of
      0: begin image1.visible:=false;
                image2.visible:=true;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true;  end;
      1: begin image2.visible:=false;
                image1.visible:=false;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true; end;
end;
 end;
 end;

aber irgendwie geht das nicht :/

OK. Du setzt das alles einzeln. Das würde ich dir nicht vorschlagen. Deshalb: Ich hole jetzt mal ein bisschen aus. Ich versuche dir mal meinen Ansatz zu erklären.
Also:
Dieses Property ist eine Eigenschaft, wie z.B. Tag, die du dem Formular hinzufügtst. Wenn du nun die Kugeln ändern willst, dann änderst du einfach die Eigenschaft deiner Form. Allerdings brauchst du dafür eine procedure, die für dich das Stellen übernimmt. Das ist die SetKugeln-Procedure. Dort wird der aktuelle Kugelnwert gespeichert (fKugeln:=...). Als nächstes wird jedes Image durchgegangen (Das Findcomponent findet Komponenten mit dem Namen, da du die Images durchnummeriert hast, eigenet sich das am besten), und geschaut, ob die Nummer des Images gleich oder kleiner deiner Kugelanzahl ist. Ist das der Fall, dann darf das Image angezeigt werden, sonst nicht.
Dein einziger Code, den du in deinem Formular noch zu schreiben hättest, wäre: Kugeln:=Kugeln-1;. Damit würdest du die oben beschriebene Befehlskette auslösen.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 17:14 
wenn ich nun meinen code behalten würde,
ausblenden 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:
procedure TForm1.PaintBox1Click(Sender: TObject);
var  n:integer;
     timer:integer;
     image:integer;
     anz:integer;
begin
anz:=7   ;
anz:=anz+1;
for n:=0 to anz do
begin
      begin  case image of
      0: begin image1.visible:=false;
                image2.visible:=true;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true;

                 end;
      1: begin image2.visible:=false;
                image1.visible:=false;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true;
                 end;
end;
 end;
 end;


dann passiert trotzdem nix :(
an was könnte das liegen, vllt in der falschen procedure oder fehler im text ?
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 17:19 
bei deinem code
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure SetKugeln(Value:Integer);
var
  i:Integer;
begin
  fKugeln:=Value;
  For i:=0 to MaxKugeln do
    TImage(FindComponent('Image'+IntToStr(i))).Visible := (Value<=i);
end;



  {...}TForm
{...}
private
  fKugeln:Integer;
  procedure SetKugeln(Value:Integer);
public
  property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
{...}


kommen fehlermeldungen das integer kein typenbezeichner sei usw
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 17:33 
user profile iconultraz06 hat folgendes geschrieben Zum zitierten Posting springen:
bei deinem code
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure SetKugeln(Value:Integer);
var
  i:Integer;
begin
  fKugeln:=Value;
  For i:=0 to MaxKugeln do
    TImage(FindComponent('Image'+IntToStr(i))).Visible := (Value<=i);
end;



  {...}TForm
{...}
private
  fKugeln:Integer;
  procedure SetKugeln(Value:Integer);
public
  property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
{...}


kommen fehlermeldungen das integer kein typenbezeichner sei usw

Das kommt davon, wenn man einfach mal drauf los tippt :oops: :wink: . An welcher Stelle kommt denn der Fehler?
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 17:38 
property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
kommt der fehler das set nicht geht später dann das
TImage(FindComponent('Image'+IntToStr(i))).Visible := (Value<=i);
findcomponent ungültige komponente ist
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 17:41 
user profile iconultraz06 hat folgendes geschrieben Zum zitierten Posting springen:
property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
kommt der fehler das set nicht geht später dann das
TImage(FindComponent('Image'+IntToStr(i))).Visible := (Value<=i);
findcomponent ungültige komponente ist

Ich habe das gerade mal in TDE 2006 ausprobiert und es geht. Zeig doch mal bitte den Quellcode.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 17:47 
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:
38:
39:
40:
41:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

  

procedure SetKugeln(Value:Integer);
var
  i:Integer;
begin
  fKugeln:=Value;
  For i:=0 to MaxKugeln do
    TImage(FindComponent('Image'+IntToStr(i))).Visible := (Value<=i);
end;



  {...}TForm
{...}
private
  fKugeln:Integer;
  procedure SetKugeln(Value:Integer);
public
  property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
{...}

mehr habe ich nicht zu dem thema
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 17:53 
Ich glaube, du hast da was falsch verstanden :wink: .
Dieser Code hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
 {...}TForm
{...}
private
  fKugeln:Integer;
  procedure SetKugeln(Value:Integer);
public
  property Kugeln:Integer read fKugeln set SetKugeln(Value:Integer);
{...}

Den musst du in die bestehende Form-Deklaration einfügen. Da steht doch am Anfang sowas wie
ausblenden Delphi-Quelltext
1:
2:
type
Form1 = TForm {...}

Und dort suchst du dir dann die einzelnen Punkte raus und ergänze das, was ich dir dazugeschrieben habe, ok?

Und die procedure fügst einfach vor dem lezten end. ein. Wenn du das gemacht hast, dann zeigst du mal itte nochmal den Quelltext.

Des Weiteren würde ich dir mal den Crashkurs Delphi von unserem hochgeschätzten, aber zur Zeit wenig anwesenden Chefentwickler empfehlen.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 27.01.09 17:57 
alles klar^^
eine frage habe ich noch ich habe jetzt habe ich erstmal das mit den visiblen gemacht
ausblenden 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:
procedure tform1.munition;
   var  n:integer;
        image:integer;
        anz:integer;
begin
anz:=5   ;
anz:=anz+1;
for n:=0 to anz do
begin
      begin  case n of
      0: begin  image1.visible:=false;
                image2.visible:=true;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true;
                end;
      1: begin  image2.visible:=false;
                image1.visible:=false;
                image3.visible:=true;
                image4.visible:=true;
                image5.visible:=true;
                 end;
if image1.visible=false then 1;

also ich möchte wenn die 0 erfüllt ist ,die 1 folgen lassen weil so macht er o und 1 gemeinsam
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 27.01.09 18:46 
Erstell mal bitte dazu einen neuen Thread. Das hat mit diesem Thema nicht mehr etwas zu tun.