Entwickler-Ecke

Sonstiges (Delphi) - in zweitem Fenster Programm ausführen


Mia9 - Di 21.12.10 21:07
Titel: in zweitem Fenster Programm ausführen
Hallo!
Ich möchte in einem erstem Fenster, dem Hauptfenster einen Button platzieren und wenn man auf diesem drückt öffnet sich ein zweites Fenster, in dem ein Programm abläuft. Dies habe ich zum Teil auch mit ()ShowModal hinbekommen. Aber das Problem ist, dass sich dann bei Button-Klick das zweite Fenster öffnet aber dass, das Programm sich nicht abspielt, also dass, das "Spiel" nicht läuft, es wird nur das zweite Fenster angezeigt, ohne dass in diesem etwas vonstatten geht. Kann mir jemand helfen?
Dankeschön.


bummi - Di 21.12.10 23:15

Ich habe keine Lust die fehlenden DFM's nachzubauen, vielleicht legst Du das ganze mal gezippt auf.
Was mir auffällt:
Du lässt den Timer schon im Create loslaufen, IMHO wäre hier OnShow der richtige Zeitpunkt.
Ob Application.Terminate das gewünschte ist kannst nur Du beurteilen, ich denke ein Close des 2. Forms sollte genügen.
Der Draw-Aufruf gehört ins OnPaint der Paintbox, ein neuzeichnen kannst Du mit Invalidate auslösen.


luckyluc - Di 21.12.10 23:33

habe jetzt die gezippte version hinzugefügt.


jaenicke - Di 21.12.10 23:39

Du solltest das Ereignis OnTimer des Timers auch mit deiner Timer-Methode Timer1Timer verbinden...
Schau mal im Objektinspektor unter Ereignisse bei dem Timer nach.


bummi - Mi 22.12.10 00:49

Ich habe Dir Unit2 mit eine paar Änderungen beigelegt


Mia9 - Mi 22.12.10 11:29

Danke bummi, aber wenn ich das so umsetzte (d.h. wenn ich in Paintbox die Draw Prozedur und in den Timer Paintbox1.Invalidate schreibe) macht das Programm gar nichts mehr, das heißt es wird kein Wurm gemalt noch wird dieser bewegt. (das habe ich in dem Programm ausprobiert, in dem sich nur ein Fenster befindet und wo das "Spiel" eigentlich auch läuft)
Auch das im Threadstart beschriebene Problem hat sich leider noch nicht gelöst, auch wenn ich das Ereignis OnTimer des Timers mit der Timer-Methode Timer1Timer verbinde. Hat jmd. noch eine Idee?


bummi - Mi 22.12.10 13:56

Hast Du meinen Anhang ausprobiert, läuft bei mir problemlos und ohne ruckeln/flimmern, die Schlange frisst jetzt sogar das Futter ;-). Du hattest im Draw noch was drin was störte ich meine sowas wie repaint o.ä.


Mia9 - Mi 22.12.10 14:11

Ja natürlich habe ich das ausprobiert,habe auch dieses repaint in Draw weggemacht, habe alles genau so wie du in Unit2 geändert hast, umgesetzt.... Es wird wie gesagt, wenn ich auf das Hauptfenster öffne und auf den Button Spiel drücke nur das zweite Fenster aber das eben ganz grau und leer angezeigt, ohne dass das Spiel darin abläuft. Verstehe ich nicht....


bummi - Mi 22.12.10 14:17

sicher doch mal Deinen Source weg und kopiere die Dateien von mir in den Ordner. Projekt erzeugen statt compilieren wählen falls da DCU's rumliegen die neuer sind als die Sourcedateien.

EDIT:

Du hattest ja vor allem im OI vergessen Form1.OnKeyDown und Timer1.OnTimer anzuhängen, das siehst Du im pas nicht.


Mia9 - Mi 22.12.10 15:32

Dein Rat hat tatsächlich funktioniert. Danke Bummi!