Autor Beitrag
Xardas008
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Mo 21.05.07 19:21 
Hi,

ich habe folgendes Problem, derzeit arbeite ich an einem Schulprojekt, 4 Gewinnt.

Vorweg nein ich brauche keine Hilfe bezüglich der Programmierung, ich habe halt nur ein Problem mit einzelnen Fenstern.

Derzeit habe ich mir das so vorgestellt: Beim starten öffnet sich ein Spashscreen (Einfaches Dialogfenster, noch nicht erstellt soll zum Schluss erst geschehen wenn noch genug Zeit da ist) direkt gefolgt von einem Fenster, wo der Spieler gefragt wird, ob er ein Neues Spiel starten will (öffnet ein weiteres Fenster wo die Spielernamen eingegeben werden, wobei ich noch nicht weiß wie ich diese dann an das Hauptfenster übergebe, wenns einer Weiß darf ers hier ruhig reinschreiben). Beim Laden halt das normale Ladenfenster wie man es aus Windows kennt, dafür gibts glaub ich ne extra Komponente wenn ich das richtig in Erinnerung habe, das sollte also kein Problem sein.

So jetzt habe ich aber folgendes Problem: Ich habe das Spielfeld, also das Hauptfenster, zu allererst erstellt und dann das Fenster für Neues Spiel erst später hinzugefügt.
Beim starten will er allerdings direkt das Hauptfenster öffnen.

Kann ich das irgendwo einstellen dass er eine andere Reihenfolge beim starten der Fenster nimmt? Oder wie kann ich das im Hauptfenster steuern.

Ich habe eben folgendes versucht: im Hauptfenster.FormCreate habe ich versucht, ein anderes Fenster zu öffnen und das Hauptfenster noch zu verstecken (sollte dann im anderen erst sichtbar gemacht werden). Wenn ich das Programm kompiliere, meckert er noch nicht, aber wenn ich es starte schmeißt er ne Exception raus. Ok Grund kann ich mir vorstellen, weil ich ein Formular in einem Ereignis öffnen will.

Gibt es eine möglichkeit für ein Ereignis, welches noch vor dem FormCreate ausgeführt wird, sprich bevor das eigentliche Fenster erstellt wird? Denn dort müsste das dann ja gesteuert werden, welches Fenster er öffnen soll.

Bitte um baldige Hilfe (sollte ich mich zu kompliziert ausgedrückt haben, bitte Text zerpflücken und Fragen stellen, damit ich versuchen kann dies etwas einfacher zu formulieren^^)
Xardas008 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Mo 21.05.07 20:01 
Ok also folgender Stand: Hab ein wenig rumexperimentiert, wie ich das ganze jetzt an ein anderes Fenster übergeben kann, weiß ich jetzt. Zum Zurücksetzen aller Variablen (was bei einem Neustart nötig ist) implemenitiere ich einfach eine Prozedur in der Hauptunit, welche aus der Unit Neues Spiel dann aufgerufen werden kann (Parameter werden dafür keine gebraucht).

Das setzen des Spielernamens funktioniert schonmal.

Habe jetzt nur noch ein kleines Problem: Die Reihenfolge in welcher die Forms beim Compilieren erstellt werden. Wo kann ich diese im Projekt später noch ändern?
Es soll so sein, dass beim Starten der Spashscreen erscheint (ist nicht schwer zu erstellen) und nach ca 10 Sekunden wird dann ein Dialogfenster geöffnet wo ich 2 Wahlmöglichkeiten habe, auch die sind kein Problem.

Das einzige was ich jetzt noch habe ist: Wie kann ich nachträglich unter Delphi einstellen, welches Formular das Primäre ist, welches er beim Programmstart anzeigt, im Moment nimmt er das, was beim Projekterstellen erstellt worden ist.

Das ist eine ganz simple Antwort, etwa wiefolgt: Ja ist möglich (dann mit kurzer Erklärung wie)
Nein ist nicht möglich (in dem Falle erstelle ich einfach ein neues Projekt und füge die alten Dateien manuell hinzu und hoffe das es klappt)
Xardas008 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Mo 21.05.07 20:19 
Sry dass es langsam wie Spam aussieht^^.

Aber wollte in nem Neuen Post erklären, wie man es nun macht.

Wenn man unter Delphi auf Projekt geht, und sich den Quelltext anzeigen lässt, erhält man etwa folgendes Bild:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
program Project_VierGewinnt;

uses
  Forms,
  Unit_VierGewinnt in 'Unit_VierGewinnt.pas' {Frm_VierGewinnt},
  Unit_NeuesSpiel in 'Unit_NeuesSpiel.pas' {Frm_NeuesSpiel},
  Unit_Start in 'Unit_Start.pas' {Frm_Start};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TFrm_VierGewinnt, Frm_VierGewinnt);
  Application.CreateForm(TFrm_NeuesSpiel, Frm_NeuesSpiel);
  Application.CreateForm(TFrm_Start, Frm_Start);

  Application.Run;
end.

So genau sah das bei mir aus.

Und so sieht es nun aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
program Project_VierGewinnt;

uses
  Forms,
  Unit_VierGewinnt in 'Unit_VierGewinnt.pas' {Frm_VierGewinnt},
  Unit_NeuesSpiel in 'Unit_NeuesSpiel.pas' {Frm_NeuesSpiel},
  Unit_Start in 'Unit_Start.pas' {Frm_Start};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TFrm_Start, Frm_Start);
  Application.CreateForm(TFrm_VierGewinnt, Frm_VierGewinnt);
  Application.CreateForm(TFrm_NeuesSpiel, Frm_NeuesSpiel);

  Application.Run;
end.


Einfach hier die Reihenfolge ändern, bei Application.CreateForm. Das was er ganz oben stehen hat unter Application.Initialize das wird auch als erstes geöffnet.

Das ich da nicht von selbst drauf gekommen bin.

Naja so ganz unnötig war mein Spamthread ja doch nicht, sollte jetzt ein anderer auf dieses Problem stoßen, findet er hier gleich die Lösung des Problems.
Naja irgendwie hab ich eben alles durch Probieren selbst rausgefunden^^.
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Mo 21.05.07 20:32 
LOL

Dann werd ich mal Dein Selbstgespräch unterbrechen :wink:

Hi

kannst auch im Menu Projekt unter Option die Startreihenfolge festlegen.
Der Effekt ist der selbe, als wenn man die Zeilen austauscht

Gruß

Aga
Xardas008 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win 7 Professional x64, Ubuntu 10.04, Windows Server 2008 R2
C#, Visual Studio 2008 Pro, Visual Studio 2010 Ultimate, Eclipse (Java)
BeitragVerfasst: Mo 21.05.07 21:11 
LOL

So gehts natürlich schneller. Hab grad nochmal geschaut dort^^, hab den Reiter ganz oben nicht gesehen wo drinsteht Hauptformular *gg*. Naja manchmal gehts halt nur auf dem Umständlichen Weg.