AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

aktionen nacheinander ausführen

Ein Thema von xeLa- · begonnen am 31. Mai 2005 · letzter Beitrag vom 1. Jun 2005
Antwort Antwort
xeLa-

Registriert seit: 31. Mai 2005
5 Beiträge
 
#1

aktionen nacheinander ausführen

  Alt 31. Mai 2005, 17:25
naja ist eine raltiv dumme frage aber ich bin halt anfänger

wie kann ich dinge nacheinander ausführen lassen?
ich wollt z.b. mal 4 fun 4-gewinnt als delphi programm schreiben. einfach die reihen als edit felder (eigentlich egal was für felder) und unter jede reihe ein button. wenn man nun auf den button klickt soll das nächst mögliche feld in der jeweiligen reihe eingefärbt werden.
ich wollte das eigentlich mit einfachen if/then schleifen machen, bis dann eingefallen ist, dass das so nur bis zum 2. feld funktioniert.
mal so als beispiel

Delphi-Quellcode:
//procedure button1 click usw blabla
if edit1.color := clwhite then
begin
edit1.color := clgreen
end
else
edit2.color := clgreen
end;

//so und wenn ich die schleife jetzt weitermache mit

if edit2.color := clgreen then
begin edit3.color := clgreen
gehts logischerweise nicht

gibt unter garantie noch viel bessere/schönere wege aber für mich als newbie. will nicht nur stur irgendwo den code abschreiben sondern auch verstehen WAS ich geschrieben habe.
(ja ich weiß das ich die ";" vergessen habe ^_^)
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#2

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 17:33
Beginn beim tiefsten, also:
Delphi-Quellcode:
if edit4.Color = clWhite
then edit4.Color:= clgreen
else if edit3.Color = clWhite //...
  Mit Zitat antworten Zitat
xeLa-

Registriert seit: 31. Mai 2005
5 Beiträge
 
#3

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 17:39
lol ........... x_X
okay hätte nicht gedacht das ich so extrem blöd bin ^_^
danke °_^
kann geschlossen oder gelöscht werden
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 17:51
Zitat von xeLa-:
kann geschlossen oder gelöscht werden
Wozu denn ?? Ich will ja noch was schreiben

Zuerstmal:
Herzlich Willkommen in der DP

... juhu, schon 2 Leute Willkommen gegrüßt

Jetzt aber zum Thema:
Eine elegantere Art wäre Delphi-Referenz durchsuchenFindComponent zu verwenden. Hier ein Beispiel:
Delphi-Quellcode:
procedure Button1Click(Sender: TObject);
var
  i : Integer;
  MyEdit : TEdit;
begin

for i := 4 { was das Maximum ist ;) } downto 1 do
begin
  MyEdit := ( FindComponent( 'Edit' + IntToStr(i) ) as TEdit ); // Edit: kleiner Tippfehler
  if( MyEdit.Color = clWhite ) then
  begin
    MyEdit.Color := clGreen; // Edit: von clRed auf clGreen ausgebessert
    Break;
  end;
end;

end;
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
xeLa-

Registriert seit: 31. Mai 2005
5 Beiträge
 
#5

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 18:14
erstma danke fürs willkommen heißen ^_^
kommen bestimmt noch sehr viele fragen von mir
naja zum wesentlichen:
ist ja klar das es auf viel elegantere wege gibt, nur das problem ist, dass ich deinen code nicht wirklich verstehe. ^^
das bisher "komplexeste" programm, welches ich geschrieben habe, war ein taschenrechner. naja wobei der sogar relativ gut ist
also rechnen kann er schon relativ viel, habs sogar geschafft n ziffernblock einzubaun.
ich hätte natürlich bei google suchen können nach dem code für 4-gewinnt, aber, wie oben geschrieben, versteh ich gerne die sachen die ich schreibe ^_^
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 18:31
Dann will ich dir den obigen Code erklären:

Statt jedes Editfeld einzeln mit einer if-Abfrage zu versehen, habe ich Delphi-Referenz durchsuchenFindComponent verwendet. Diese Funktion verlangt einen String ( der Name der Komponente ), in deinem Fall wäre das Edit1, Edit2, Edit3, Edit4, ....
So nehme ich jetzt eine for-Schleife die von 4 hinunter bis 1 zählt, jedes Mal suche ich nach der Komponente 'Edit' + Zahl der Schleife, also wäre das dann Edit4, Edit3, Edit2, Edit1
Nun überprüfe ich, ob das Edit-Feld weiß ist, wenn ja, setze ich die Farbe auf grün und breche die Schleife mittels Break; ab, dadurch wird die Schleife kein weiteres Mal ausgeführt. Sollte die Farbe des Edit-Feldes nicht Weiß sein, so wird das nächste Edit-Feld überprüft, da ein neuer Durchlauf der Schleife folgt.
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 18:35
Eleganter (perfomanter etc.) wäre das ganze wenn man nicht mit FindComponent arbeitet, sondern sich das ganze in eine eigene Liste packt.

(wollt ich nur mal mit einwerfen damit neulinge nicht denken das FindComponent die eleganteste Methode ist (sie bekommen dank "Delphi für Kids" ja schon oftmals sugeriert das globale Variablen was tolles sind weil die in fast jedem beispiel auftauchen obwohl die in der Realität meist verabscheut werden))
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
xeLa-

Registriert seit: 31. Mai 2005
5 Beiträge
 
#8

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 18:39
perfekt jetzt erspar ich mir viel schreibarbeit mit den ganzen scheiß if then schleifen ^_^
gleich mal zur nächsten frage, ist zwar nichmehr unbedingt nötig weil mans ja auch schon so "spielen" könnte, aber ist eben "komfortabler"
so müsste ich ja unter jede reihe mit edit feldern 2 buttons machen, pro spieler eben einen. kann man delphi irgendwie sagen, dass nachdem das 1. feld grün gefärbt wurde das 2. rot zu färben? am besten gleich mit ner erklärung, wenns sich nicht eh einfach selbst erklärt.
danke im vorraus ^_^
zu SirThonberry
du kannst mir gerne erklären wie man das am besten macht wenn du grad nix zu tun hast^^
bin für jede hilfe dankbar!
auch wenn jemand ne seite mit nem richtig guten tutorial kennt wäre naiz! muss ich euch vieleicht nichmehr ganz so oft mit den billigfragen nerven ^_°
  Mit Zitat antworten Zitat
Benutzerbild von Brainstalker
Brainstalker

Registriert seit: 9. Jan 2004
Ort: Berlin
176 Beiträge
 
Delphi 2009 Professional
 
#9

Re: aktionen nacheinander ausführen

  Alt 31. Mai 2005, 21:34
Eine sehr einfach Möglichkeit wäre dafür eine Variable zu benutzen.
Nachdem du ein Feld gefärbt hast änderst du die Variable auf die Farbe von Spieler 2. Am Anfang des Programms setzt du die Variable auf die Farbe von Spieler 1.

Nehmen wir an Spieler 1 hat grün und Spieler 2 hat rot
Delphi-Quellcode:
var
  Farbe: TColor;


  // Im OnCreate des Forms beispielsweise:
  Farbe := clgreen;

  // überprüfen der Farbe
  if Farbe = clgreen then Farbe := clred
  else Farbe := clgreen;
Du musst dann natürlich die Variable zum färben der Felder benutzen.

[edit]Fabe XD
cled XD
Ich kann echt nicht schreiben[/edit]
Michael N.
  Mit Zitat antworten Zitat
xeLa-

Registriert seit: 31. Mai 2005
5 Beiträge
 
#10

Re: aktionen nacheinander ausführen

  Alt 1. Jun 2005, 12:30
stimmmt das ist ne gute möglichkeit danke für den tipp ^
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz