AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi OnCreate wird nur einmal nach Programmstart ausgeführt
Thema durchsuchen
Ansicht
Themen-Optionen

OnCreate wird nur einmal nach Programmstart ausgeführt

Ein Thema von Svenkan · begonnen am 12. Aug 2007 · letzter Beitrag vom 12. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:05
Ich hab ein ziemlich großes Problem!
Nachdem ich die versch. 'Forms' aus meinem Menü nicht mehr über eine definierte Funktion, sondern .ShowModal aufrufe, wird auch jeweilige FormCreate nur beim ersten Aufrufen ausgeführt.
Das komische ist auch: wenn ich etwas geändert hab, wird dies nicht verworfen, sondern ist beim nächsten Aufruf immer noch genauso erhalten.
Wie kann ich das verhindern bzw. es wieder vernünftig ans Laufen bringen?
Sven Kannenberg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:07
Die Formulare werden auch nicht freigegeben sonder nur ausgeblendet.
Markus Kinzler
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:10
Moin Svenkan,

also so ganz schlau werde ich aus Deinem Posting nicht.
Wenn Du die Formulare in der Projektdatei erzeugen lässt, wird OnCreate natürlich nur einmal aufgerufen, ansonsten müsstest Du die Formulare dynamisch erzeugen.
Bei den zu Programmstart erzeugten Formularen bewirkt ein Close lediglich ein visible := false

Wenn die Formulare immer wieder gleich aussehen sollen, könntest Du sie im OnShow entsprechend initialisieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:14
Vorher habe ich das ganze über eine Prozedur geöffnet:

Delphi-Quellcode:
procedure ShowGeneralSettings;
begin
  with TGrundeinstellungen.Create(Application) do
  try
    ShowModal;
  finally
    Free;
  end;
end;
Also müsste ich das Ganze dementsprechend auch irgendwie wieder freigeben können.
Mit .Free oder FreeAndNil meckert der Compiler aber rum und ich bekomm nen Zugriffsfehler.
Sven Kannenberg
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:26
Moin Svenkan,

Zitat von Svenkan:
Vorher habe ich das ganze über eine Prozedur geöffnet:

Delphi-Quellcode:
procedure ShowGeneralSettings;
begin
  with TGrundeinstellungen.Create(Application) do
  try
    ShowModal;
  finally
    Free;
  end;
end;
Also müsste ich das Ganze dementsprechend auch irgendwie wieder freigeben können.
Mit .Free oder FreeAndNil meckert der Compiler aber rum und ich bekomm nen Zugriffsfehler.
Wenn Du uns zeigst, wie Du es bisher gemacht hast, und nicht, wie jetzt, wird es aber etwas schwierig einen Fehler zu finden
Ausserdem könnte es auch hilfreich sein zu erfahren, was der Compiler anmeckert.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:33
Öffnen:

Delphi-Quellcode:
procedure THauptform.Grundeinstellungen1Click(Sender: TObject);
begin
  Grundeinstellungen.ShowModal; // Fenster grundeinstellungen öffnen
  IF Grundeinstellungen.ModalResult = mrOK then
    Datenneuladen1.OnClick(Datenneuladen1);
end;
Im OnClose:

FreeAndNil(Grundeinstellungen); Fehlermeldung beim Schließen der Form siehe Anhang.
Miniaturansicht angehängter Grafiken
debugger_d7_vplan_122.jpg  
Sven Kannenberg
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:42
Moin Svenkan,

wird das Formular irgendwo dynamisch erzeugt?
Wenn nicht sollte es auch nicht freigegeben werden, wenn ja:
Das OnClose-Ereignis hat den Parameter Action. Um das Formular im OnClose freizugeben, müsstest Du den dort auf caFree setzen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 19:52
Also ich hab nix an der Erstellung geändert.
Dementsprechend werden die wohl alle autom. beim Programmstart erzeugt.
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#9

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 20:11
ich würde das automatische erstellen der forms aus dem projekt herausnehmen und
dann in deinem onclick event des hauptforms
folgendes machen:

Delphi-Quellcode:
  with TGrundeinstellungen.Create(Self) do
  try
    ShowModal;
  finally
    Free;
  end;
wüsste nicht wo da das problem liegen soll.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: OnCreate wird nur einmal nach Programmstart ausgeführt

  Alt 12. Aug 2007, 20:35
im OnClose das ganze frei zu geben knallt natürlich. Das OnClose wird vom Formular selbst ausgelöst. Du musst dir das ungefähr so vorstellen
· rufe OnClose auf wenn Procedure zugewiesen ist
· Du machst irgendwas im OnClose (im schlimmsten Fall frei geben
· prüfen ob im OnClose das Action geändert wurde und dann das Formular verstecken, frei geben, nichts machen etc. => ups, jetzt knallt es weil du das Formular während der Abarbeitung aus dem Speicher geschmissen hast

Wenn du im OnClose frei geben willst setzte "Action" auf caFree aber gebe nicht selbst das Formular frei während es mit der Abarbeitung von Events (OnClose) etc. beschäftigt ist.

Zu deiner Frage im Allgemeinen:
- "OnCreate" heißt in etwa "beim Kreieren/Erstellen"
- "OnClose" heißt "beim Schließen"
- "OnDestroy" heißt "beim zerstören/freigeben"
- "OnShow" heißt "beim anzeigen"
dementsprechend ist auch klar das OnCreate nur einmal (beim kreieren) augelöst wird und nicht beim anzeigen was ja ein Show wäre.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 03:49 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