AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Form in OnCreate Anzeige anzeigen lassen - Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Form in OnCreate Anzeige anzeigen lassen - Fehler

Ein Thema von Nagetier · begonnen am 19. Mai 2007 · letzter Beitrag vom 19. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Nagetier

Registriert seit: 21. Apr 2007
36 Beiträge
 
Delphi 7 Professional
 
#1

Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 15:59
Guten Tag

Ich habe folgendes Problem, sobald ich in der MainForm meines Programmes eine Anweisung wie "Form2.Show" einbinde, oder einen Button Klick, der dies erledigen soll, dann wirft mir mein Programm beim start eine EAccess Voiolation Meldung hin... und unterlegt mir folgendes im Code

Delphi-Quellcode:
program XYZ;

uses
  Forms,
  UiChem in 'UiChem.pas{Form1},
  Ablage in 'Ablage.pas{Form2},
  Rechner in 'Rechner.pas{Form3};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'XYZ';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2); {<<-- wird dann hellrot unterlegt}
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.
Mein Code Schnippsel im OnCreate ist folgender:

Delphi-Quellcode:
procedure TForm1.BtSplashClick(Sender: TObject);
begin
 Form2.Show;
 sleep(1000);
 Form2.Hide;
end;
Ich versuche diese Form Testweise als eine Art Splash Screen einzubinden, allerdings akzeptiert er einfach kein Form.Show im OnCreater meiner MainForm, was genau ist das los...?

Nager

Edit: Achja, ich weiß, dass die Methode ziemlich simpel ist etc. allerdings brauch ich den Splash nicht, damit das Programm laden kann(Wie im hiesigen Tutorial beschrieben ), denn das geht schnell, der soll einfach nur erscheinen...
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:10
Zitat von Nagetier:
Mein Code Schnippsel im OnCreate ist folgender:

Delphi-Quellcode:
procedure TForm1.BtSplashClick(Sender: TObject);
begin
 Form2.Show;
 sleep(1000);
 Form2.Hide;
end;
Der CodeSchnipsel ist doch nicht im OnCreate ("BtSplashClick") oder verstehe ich da was falsch? Funktioniert der Aufruf von Form2 beim Klick auf den Button auch nicht oder geht es da?

P@Tti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Nagetier

Registriert seit: 21. Apr 2007
36 Beiträge
 
Delphi 7 Professional
 
#3

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:13
Zitat von patti:
Zitat von Nagetier:
Mein Code Schnippsel im OnCreate ist folgender:

Delphi-Quellcode:
procedure TForm1.BtSplashClick(Sender: TObject);
begin
 Form2.Show;
 sleep(1000);
 Form2.Hide;
end;
Der CodeSchnipsel ist doch nicht im OnCreate ("BtSplashClick") oder verstehe ich das falsch?

P@Tti
Jein, das war nur ein versuch, im OnCreate wird dann BtSplash.Click ausgeführt
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:14
Wie man unschwer erkennen kann, wird form1 vor form2 erzeugt. Also folgende Reihenfolge:
Form1 erzeugen
Form1.onCreate
Form2 erzeugen

Du rufst nun aber im FormCreate eine Methode (show) eines Objektes(form2) auf, das gar nicht existiert. Setze das Ganze ins onShow, das müsste auch funktionieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:18
Habs bei mir rekonstruiert, funktioniert nur im OnShow, da er beim OnCreate Form2 noch nicht kennt (Erstellungsreihenfolge).
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Nagetier

Registriert seit: 21. Apr 2007
36 Beiträge
 
Delphi 7 Professional
 
#6

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:19
Zitat von Apollonius:
Wie man unschwer erkennen kann, wird form1 vor form2 erzeugt. Also folgende Reihenfolge:
Form1 erzeugen
Form1.onCreate
Form2 erzeugen

Du rufst nun aber im FormCreate eine Methode (show) eines Objektes(form2) auf, das gar nicht existiert. Setze das Ganze ins onShow, das müsste auch funktionieren.
Ok, stimmt dummer Denkfehler
Allerdings gibts dann immer noch den Fehler wenns nur im onShow steht, also noch schnell was vertauscht und es scheint zu gehen...

Delphi-Quellcode:
  Application.Initialize;
  Application.Title := 'XYZ';
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm3, Form3);
  Application.Run;
Wunderbar


edit: doch nicht... Jetzt kommt plötzlich ein Fehler das er Visible nicht bei OnShow und OnHide verändern kann...

Code sieht mittlerweile so aus:

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.Title := 'XYZ';
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.
und so...

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  Form1.Visible := false;
  Form4.Show;
  sleep(2000);
  Form1.Visible := true;
  Form4.Visible := false;
end;
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:24
oder so ...
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Nagetier

Registriert seit: 21. Apr 2007
36 Beiträge
 
Delphi 7 Professional
 
#8

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:25
Naja doch nicht irgendwie, wie du im Edit siehst, irgendwo is wieder so n saublöder Fehler drin...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:40
Du kannst doch visible nicht im onShow verändern! Am Ende setzt du nämlich visible auf true, sodass onShow aufgerufen wird-> nochmal visible auf true->nochmal onShow->usw.
Ist form1 dein Mainform? Dann hilft Application.showmainform:=false;
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Nagetier

Registriert seit: 21. Apr 2007
36 Beiträge
 
Delphi 7 Professional
 
#10

Re: Form in OnCreate Anzeige anzeigen lassen - Fehler

  Alt 19. Mai 2007, 16:55
Das mit dem Application.ShowMainform weiß ich jetzt net wos genau hinkommt, ich hab allerdings was gefunden per Google, was das ganze recht einfach macht...

Delphi-Quellcode:
program XYZ;

uses
  Forms,
  UiChem in 'UiChem.pas{Form1},
  Ablage in 'Ablage.pas{Form2},
  Rechner in 'Rechner.pas{Form3},
  Splash in 'Splash.pas{Form4};

{$R *.res}

begin
  Form4 := TForm4.Create (Application); {Splash Screen anzeigen}

  try
    Form4.Show;
    Form4.Update;

    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TForm2, Form2);
    Application.CreateForm(TForm3, Form3);


    Form4.Hide; {Splash Screen ausblenden}
  finally
    Form4.Free;
end;
  Application.Run;

end.
Allerdings kann ich jetzt keinen sleep Befehl einbinden, da er das nicht kennt, aber das lässt sich lösen indem man in die uses noch ein "SysUtils," einfließen lässt, dann kann ich einen sleep(2000) z.b einbinden, klappt wunderbar... endlich
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:35 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