hi,
wie füge ich eine Prozedur ein, oder schalte sie hinzu, wenn bestimmte Bedingungen erfüllt sind???
NICHT: IF and then...
hi,
wie füge ich eine Prozedur ein, oder schalte sie hinzu, wenn bestimmte Bedingungen erfüllt sind???
NICHT: IF and then...
Hi!
Es ist die Kombination: "Ich will verzweigen, aber bitte ohne IF-Statement" = "Ich will Kurven fahren, aber bitte ohne Lenken". ;-)
OK, aber ich weiss ja jetzt, was du machen willst. Es gibt aber keine elegante Möglichkeit sowas per Drag&Drop in der Delphi-GUI (bzw. dem Objektinspector) einzurichten, da muss man immer programmieren (also mit IF-Statements arbeiten).
Jedenfalls gibt's IMHO keine vernünftige andere Lösung.
Und deshalb stelle ich dir jetzt eine unvernünftige vor. ;-)
Aber auch hier muss man die Tastatur quälen (und das nicht zu knapp):
Nutze einen Array aus Procedurvariablen oder besser einen Array mit Objektinstanzen.
Das Array enthält x Elemente in y Reihen und bildet damit deinen Zeichenbereich ab.
Nun definierst du eine Klasse PunktAktion. Diese Klasse besitzt eine Methode Aktion(), in der nichts passiert (sie enthält keinen Programmcode)
Von dieser abstrakten Klasse leitest du zwei Nachfolger ab: MachNix und MachWas.
In MachWas überschreibst du die Methode Aktion(). Sie muss deine gewünschte Procedur sein, oder diese aufrufen.
OK, nun musst du einen Array von Klasse PunktAktion anlegen. Die einzelnen Elemente müssen nun initialisiert werden. die Stellen, an denen nichts passiert werden, bekommen eine Instanz der Klasse MachNix zugewiesen, die Elemente, an denen was ausgeführt werden soll, bekommen eine Instanz der Klasse MachWas.
OK, wenn du nun einen Punkt durch Zufall ausgwählt hast, dann führt du die Methode Aktion() des Elementes an den Koordinaten deines Punktes aus.
Klar soweit?
Ich finde das deshalb unvernünftig, weill ich die Datenmenge des Array für zu gross halte. Falls du dass mit 800x600 Punkten einrichten willst, hat das Array immerhin schon 480.000 Elemente.
Ich denke, es ist da besser die Aktionspunkte in einem getrennten Array zu sichern und nach jeder Zeichenoperation eine Punktsuche im Array zu starten und dann die Aktion anzustossen, wenn der Punkt im Array enthalten ist.
Bis denn
Andreas