Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FormCreate wird nicht ausgeführt (https://www.delphipraxis.net/138172-formcreate-wird-nicht-ausgefuehrt.html)

Vasco da Gama 4. Aug 2009 18:09


FormCreate wird nicht ausgeführt
 
Hallo!
Ich versuche mich derzeit mit Andorra 2D.
Mein Erstformular(Hauptmenü) funktioniert gut. Wenn ich allerdings ein zweites einbaue(zu, spielen), dann wird es nicht nur nicht schwarz, die ganze form create Procedure wird nicht ausgeführt...(Ich habe es mit mehreren ShowMessages probiert...)
Form Create:
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var i: Integer;
begin
  ReportMemoryLeaksOnShutdown := true;
  AdPerCounter2 := TAdPerformanceCounter.Create;

  AdDraw2 := TAdDraw.Create(self);
  AdDraw2.DllName := 'AndorraDX93D.dll';

  if AdDraw2.Initialize then
  begin
    Application.OnIdle := Idle;

    Form1.AdImageList.Restore;
    //Erzeugen des Partikelsystems
    partsys := TAdParticleSystem.Create(AdDraw2);
    //Zuweisen des Bildes
    partsys.Texture := Form1.AdImageList.Items[0].Texture;
    AdGUI2 := TAdGUI.Create(AdDraw2); //Erzeugen der Klasse
    AdGUI2.Skin.LoadFromFile('Bilder/sunna.axs'); //Laden des Skins
    AdGUI2.Cursors.LoadFromFile('Bilder/cursors.xml'); //Laden der Cursor
    AdGUI2.LoadFromFile('Bilder/gui2.axg'); //Laden der GUI
    AdConnector2 := TAdGUIConnector.Create(AdGUI2); //Erzeugen des GUI Connectors
    AdConnector2.ConnectEventHandlers(AdDraw2.Window); //Verknüfen mit dem Elternfenstersystem
    //SpriteEngine erzeugen
    AdSpriteEngine2 := TSpriteEngine.Create(nil);
    AdSpriteEngine2.Surface := AdDraw2;
    with AdDraw2.Display do
    begin
      Width := 800;
      Height := 600;
      BitDepth := ad32Bit; //Die Farbtiefe. Hierbei sind die Werte "ad16Bit" und "ad32Bit" erlaubt.
      DisplayMode := dmFullscreen;
    end;
  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display '+
                'mode or another video adapter.');
    Close;
  end;

  HintWindowClass := TGraphicHintWindow;
  Application.ShowHint := False;
  Application.ShowHint := True;
end;
danke schonmal mfG

mkinzler 4. Aug 2009 18:14

Re: FormCreate wird nicht ausgeführt
 
Wie/wo erzeugst du das Formular?

Vasco da Gama 4. Aug 2009 18:16

Re: FormCreate wird nicht ausgeführt
 
Delphi-Quellcode:
program Strategiespiel;

uses
  Forms,
  SSpiel in 'SSpiel.pas' {Form1},
  SpielForm in 'SpielForm.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

himitsu 4. Aug 2009 19:17

Re: FormCreate wird nicht ausgeführt
 
Ist diese Prozedur auch dem OnCreate der Form zugewiesen?

Vasco da Gama 5. Aug 2009 09:27

Re: FormCreate wird nicht ausgeführt
 
Danke, das wars.
Jetzt hab ich aber ein weiteres Problem:
Form2 ist so wie ich es wollte, aber Form1 ist nur mehr ein graues Fenster...
Danke, mfG...

Vasco da Gama 5. Aug 2009 11:36

Re: FormCreate wird nicht ausgeführt
 
Ok, nachdem ich in jedes Form Show das Idle neu gesetzt habe, läuft das erstmal, allerdings erhalte ich beim beenden eine Zugriffsverletzung:
Zitat:

Erste Gelegenheit für Exception bei $75B3FBAE. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 0048526B in Modul 'Strategiespiel.exe'. Lesen von Adresse 027F9F10'. Prozess Strategiespiel.exe (2360)
Die Form Creates und Destroys:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i, zufall:Integer;
begin
  Randomize;
  ReportMemoryLeaksOnShutdown := true;
  AdPerCounter := TAdPerformanceCounter.Create;

  AdDraw := TAdDraw.Create(self);
  AdDraw.DllName := 'AndorraDX93D.dll';

  if AdDraw.Initialize then
  begin
    Application.OnIdle := Idle;
    AdImageList := TAdImageList.Create(AdDraw);
    with AdImageList.Add('boy') do
    begin
      Texture.LoadGraphicFromFile('Bilder/boy.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('baker') do
    begin
      Texture.LoadGraphicFromFile('Bilder/baker.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('miller') do
    begin
      Texture.LoadGraphicFromFile('Bilder/miller.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('miner') do
    begin
      Texture.LoadGraphicFromFile('Bilder/miner.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;
    with AdImageList.Add('lumberjack') do
    begin
      Texture.LoadGraphicFromFile('Bilder/lumberjack.bmp',true,clFuchsia);
      PatternWidth := 96;
      PatternHeight := 96;
    end;

    with AdImageList.Add('BG') do
    begin
      Texture.LoadGraphicFromFile('Bilder/BG.bmp',true,clFuchsia);
      {PatternWidth := 96;
      PatternHeight := 96;   }
    end;
    AdImageList.Restore;
    //Erzeugen des Partikelsystems
    partsys := TAdParticleSystem.Create(AdDraw);
    //Zuweisen des Bildes
    partsys.Texture := AdImageList.Items[0].Texture;
    AdGUI := TAdGUI.Create(AdDraw); //Erzeugen der Klasse
    AdGUI.Skin.LoadFromFile('Bilder/sunna.axs'); //Laden des Skins
    AdGUI.Cursors.LoadFromFile('Bilder/cursors.xml'); //Laden der Cursor
    AdGUI.LoadFromFile('Bilder/gui.axg'); //Laden der GUI
    AdConnector := TAdGUIConnector.Create(AdGUI); //Erzeugen des GUI Connectors
    AdConnector.ConnectEventHandlers(AdDraw.Window); //Verknüfen mit dem Elternfenstersystem
    //SpriteEngine erzeugen
    AdSpriteEngine := TSpriteEngine.Create(nil);
    AdSpriteEngine.Surface := AdDraw;

    for i := 0 to 9 do
    begin
      with TFigur.Create(AdSpriteEngine) do
      begin
        zufall := random(5);
        case zufall of
          0: Image := AdImageList.Find('boy');
          1: Image := AdImageList.Find('baker');
          2: Image := AdImageList.Find('miller');
          3: Image := AdImageList.Find('miner');
          4: Image := AdImageList.Find('lumberjack');
        end;
        AnimActive := true;
        AnimLoop := true;
        AnimSpeed := 15;
        XSpeed := -(random(100)+50);
        SetLine;
      end;
    with TBackgroundSprite.Create(AdSpriteEngine) do begin
      Image:=AdImageList.Find('BG');
      z:=-1;
      Depth:=10;
    end;
end;

  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display '+
                'mode or another video adapter.');
    Close;
  end;



  TAdButton(AdGUI.FindComponent('Start')).X := (ClientWidth div 2) - (TAdButton(AdGUI.FindComponent('Start')).Width div 2);
  TAdButton(AdGUI.FindComponent('Start')).Y := (ClientHeight div 4) - (TAdButton(AdGUI.FindComponent('Start')).Height div 2);
  TAdButton(AdGUI.FindComponent('Start')).OnClick := Start;

  TAdButton(AdGUI.FindComponent('Optionen')).X := (ClientWidth div 2) - (TAdButton(AdGUI.FindComponent('Optionen')).Width div 2);
  TAdButton(AdGUI.FindComponent('Optionen')).Y := ((ClientHeight div 4) * 2) - (TAdButton(AdGUI.FindComponent('Optionen')).Height div 2);
  TAdButton(AdGUI.FindComponent('Optionen')).OnClick := Options;

  TAdButton(AdGUI.FindComponent('Beenden')).X := (ClientWidth div 2) - (TAdButton(AdGUI.FindComponent('Beenden')).Width div 2);
  TAdButton(AdGUI.FindComponent('Beenden')).Y := ((ClientHeight div 4) * 3) - (TAdButton(AdGUI.FindComponent('Beenden')).Height div 2);
  TAdButton(AdGUI.FindComponent('Beenden')).OnClick := Beenden;

  HintWindowClass := TGraphicHintWindow;
  Application.ShowHint := False;
  Application.ShowHint := True;
  {CL:=loadIni(DE);
  if CL<>nil then
  fillProps([form1],CL); }
end;

Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdConnector.Free;
  AdGUI.Free;
  AdSpriteEngine.Free;
  AdImageList.Free;
  AdPerCounter.Free;
  AdDraw.Free;
  partsys.Free;
end;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var i: Integer;
begin
  ReportMemoryLeaksOnShutdown := true;
  AdPerCounter2 := TAdPerformanceCounter.Create;

  AdDraw2 := TAdDraw.Create(self);
  AdDraw2.DllName := 'AndorraDX93D.dll';

  if AdDraw2.Initialize then
  begin
    Application.OnIdle := Idle;
    AdImageList2 := TAdImageList.Create(AdDraw2);
    AdImageList2.Restore;
    //Erzeugen des Partikelsystems
    partsys := TAdParticleSystem.Create(AdDraw2);
    //Zuweisen des Bildes
    //partsys.Texture := AdImageList2.Items[0].Texture;
    AdGUI2 := TAdGUI.Create(AdDraw2); //Erzeugen der Klasse
    AdGUI2.Skin.LoadFromFile('Bilder/sunna.axs'); //Laden des Skins
    AdGUI2.Cursors.LoadFromFile('Bilder/cursors.xml'); //Laden der Cursor
    AdGUI2.LoadFromFile('Bilder/gui.axg'); //Laden der GUI
    AdConnector2 := TAdGUIConnector.Create(AdGUI2); //Erzeugen des GUI Connectors
    AdConnector2.ConnectEventHandlers(AdDraw2.Window); //Verknüfen mit dem Elternfenstersystem
    //SpriteEngine erzeugen
    AdSpriteEngine2 := TSpriteEngine.Create(nil);
    AdSpriteEngine2.Surface := AdDraw2;
    with AdDraw2.Display do
    begin
      Width := 800;
      Height := 600;
      BitDepth := ad32Bit; //Die Farbtiefe. Hierbei sind die Werte "ad16Bit" und "ad32Bit" erlaubt.
      DisplayMode := dmFullscreen;
    end;
  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display '+
                'mode or another video adapter.');
    Close;
  end;
  Form2.Close;
  HintWindowClass := TGraphicHintWindow;
  Application.ShowHint := False;
  Application.ShowHint := True;
end;
Delphi-Quellcode:
procedure TForm2.FormDestroy(Sender: TObject);
begin
  AdGUI2.Free;
  AdConnector2.Free;
  AdSpriteEngine2.Free;
  AdImageList2.Free;
  AdPerCounter2.Free;
  AdDraw2.Free;
end;
Danke, mfG
EDIT:
Es wird auch nicht im Vollbild ausgeführt...

Vasco da Gama 5. Aug 2009 18:23

Re: FormCreate wird nicht ausgeführt
 
1. problem gelöst, partikelsystem doppelt ge-free-t :wall:

aber vollbild macht er nicht

Vasco da Gama 6. Aug 2009 08:18

Re: FormCreate wird nicht ausgeführt
 
Es heißt ja immer, für jede Frage neues Thema oder?
-Damit erledigt-


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz