Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Label
kevinsky1111 - Mo 29.06.09 06:25
Titel: Label
Ich muss für die schule ein spiel mit delphi programmieren und weiß nicht ob das was ich da geschrieben habe stimmt(bin ein Anfänger):
also die sachlage ist die, ich habe ein label das label hat die farbe cllimo wenn ich einen button (ist unwichtig) drücke dann erscheint eine zahl dadurch wird das label rot eingefärbt. Falls diese zahl nochmal vorkommt sollte mein label nicht noch mal rot werden sondern ich einem anderen label hineinschreiben "Sie haben verloren"
das ist der derzeitige code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| begin if label4.font.color=clred then if label4.font.color:=clred then label24.caption:='Sie haben verloren!'; end; |
nun stell ich mir die frage ob das richtig ist?
Moderiert von
Gausi: Delphi-Tags hinzugefügtModeriert von
Gausi: Topic aus Multimedia / Grafik verschoben am Mo 29.06.2009 um 07:39
alzaimar - Mo 29.06.09 06:51
Erstens klemmt deine Shift-Taste, zweitens kannst Du das doch probieren und drittens: Nein. Lies den Code mal vor, indem Du das auf Deutsch übersetzt.
"Wenn die Farbe vom Label rot ist, dann: Wenn die Farbe vom Label rot ist dann schreib in ein anderes Label 'Sie haben verloren'".
Quark? Quark!
Wenn der Button geklickt wird, schaust Du nach, ob die das Label schon rot ist. Wenn JA, gibst du aus 'Verloren', SONST färbst Du das Label rot.
Das Ganze nun zurück in Delphi übersetzen und: Fertig.
ffgorcky - Mo 29.06.09 08:52
Also möchtest Du ein Spiel schreiben, in dem Du zum Beispiel mit einem Würfel möglichst alle 6 unterschiedlichen Zahlen hintereinander würfelst?
Sprich: Du möchtest in etwa so was machen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure wieAuchImmerSieHeisst(); var derzeitigesLabel:TLabel; begin zahl:=random(5)+1; derzeitigesLabel:=FindComponent('Label'+IntToStr(zahl); if derzeitigesLabel.Color:=clred then MessageBox(Handle,'Sie haben leider erneut dieselbe Zahl gewürfelt!'+#13#10+'Damit ist das Spiel vorbei!','Leider verloren!',MB_OK) else derzeitigesLabel.Color:=clred; end; |
....oder habe ich Dein Problem gerade falsch verstanden?
kevinsky1111 - Mo 29.06.09 13:12
alzaimar hat folgendes geschrieben : |
Wenn der Button geklickt wird, schaust Du nach, ob die das Label schon rot ist. Wenn JA, gibst du aus 'Verloren', SONST färbst Du das Label rot.
|
ich habs geschafft aber da ist noch ein problem:
ich hab noch 8 dieser labels.
beim 1. funktionierts, doch beim 2. steht immer da 'Sie haben verloren'.
Wo steckt der Fehler?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| begin if label5.color=clred then label24.caption:='Sie haben verloren!' else begin if ergebnis=2 then Label5.Color := clred; end; end; begin if label6.color=clred then label24.caption:='Sie haben verloren!' else begin if ergebnis=3 then Label6.Color := clred; end; end; |
Moderiert von
Kha: Delphi-Tags hinzugefügt
jaenicke - Mo 29.06.09 13:19
kevinsky1111 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| begin if label5.color=clred then label24.caption:='Sie haben verloren!' else begin if ergebnis=2 then Label5.Color := clred; end; end; begin if label6.color=clred then label24.caption:='Sie haben verloren!' else begin if ergebnis=3 then Label6.Color := clred; end; end; | |
Wozu die begin..end Blöcke, wenn du gar keine if-Abfrage davor setzt und das immer ausführen lässt? :gruebel:
Zudem verstehe ich noch nicht ganz was das eigentlich werden soll? Mehrere Labels sollen parallel das selbe anzeigen oder wie?
kevinsky1111 - Mo 29.06.09 13:21
Weitere Frage:
Ich bin mir sicher das ich es so schreiben muss, doch was ist an diesen beiden zeilen falsch:
Delphi-Quelltext
1: 2:
| if label5.color=clred and ergebnis=2 then label24.caption:='Sie haben verloren!' |
Moderiert von
Narses: Delphi-Tags hinzugefügt
jaenicke - Mo 29.06.09 13:23
Delphi-Quelltext
1: 2:
| if Label5.Color = clRed and (ergebnis = 2) then Label24.Caption := 'Sie haben verloren!'; |
kevinsky1111 - Mo 29.06.09 13:29
dann bekomm ich das:
Delphi-Quelltext
1: 2:
| if label5.color=clred and (ergebnis=2) then label24.caption:='Sie haben verloren!' |
[Error] Unit1.pas(102): Operator not applicable to this operand type
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
jaenicke - Mo 29.06.09 13:30
Ja, beim ersten Vergleich fehlt noch die Klammer, die hab ich beim Highlighten vergessen...
Nimm doch mal ein kleineres Bild, das zerlegt ja das ganze Layout...
(Außerdem reicht der Link zu Wikipedia, am Bild sieht man ja eh nicht wie das Spiel läuft.)
Georg08 - Mo 29.06.09 13:31
schreibst du etwa für jedes label eine eigene if-abfrage?
steck das ganze doch in eine allgemeinere variante ;-)
Tilo - Mo 29.06.09 13:34
kevinsky1111 hat folgendes geschrieben : |
dann bekomm ich das:
if label5.color=clred and (ergebnis=2)
then label24.caption:='Sie haben verloren!'
[Error] Unit1.pas(102): Operator not applicable to this operand type |
kleiner Tipp: Nutze Formatierungstags (unter "Bereiche" über dem Editorfenster)
and ist höherwertig als "=" demnach müsste Du es so schreiben:
Delphi-Quelltext
1: 2:
| if (label5.color=clred) and (ergebnis=2) then label24.caption:='Sie haben verloren!' |
so hat jaenicke es gemeint.
sehe das Christian S. schon die Tags eingefügt hat.
jaenicke - Mo 29.06.09 13:34
Ja, vor allem geht eine Prüfung auf ein bestimmtes Ergebnis ja sowieso nicht. Man kann ja ggf. aussuchen welche Klappen man schließt... ;-)
kevinsky1111 - Mo 29.06.09 13:37
dannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnke Sebastian jänicke und alle die mir geholfen haben!
hast mir sehr geholfen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!