Autor Beitrag
bole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 107
Erhaltene Danke: 15

win 10

BeitragVerfasst: Do 12.04.12 19:24 
Hallo Zusammen

Ich habe ein Problem mit der abfolge der Start Ereignisse. Ich habe ein Formular und darauf ein Tabsheet. Diese Tabsheet wird beim Start durch des Ereignis TabSheet.OnShow ausgefüllt. So weit so Gut aber leider wird dieses Ereignis vor dem OnActivate Ereignis des Formulares aufgerufen. Darin wird eine verbindung zur DB erstellt die beim Ausfüllen noch nicht sheht...

Die DB kann ich auch nicht im OnCreate Ereignis öffnen, das gibt eine Exception.

Gibt es eine Möglichkeit die Abfolge der Startereignisse zu ändern? Oder muss ich in den Sauren Apfel beissen und zuerst abfragen ob die DB verfügbar ist (Wenn ja: füllen; wenn nein: DB zuerst öffnen)

Vielen Dank für Eure Hilfe.

Gruss

Bole

_________________
ein programm macht nicht das was du willst sondern was du schreibst!
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 12.04.12 20:05 
Ändern kannst Du sie nicht ....

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: Do 12.04.12 21:29 
Ein Versuch wäre, das Pagecontrol komplett zu verstecken (im OE), dann, im OnShow des Formulars das Pagecontrol auf Visible setzen, dadurch könnte das OnShow erst jetzt ausgeführt werden.

Edit: gerade gesteste, geht :)
Einloggen, um Attachments anzusehen!
_________________
In Erfurt gibt es eine Pension, in der es gemütlich ist, Google einfach nach Pension Fiege ;)

Für diesen Beitrag haben gedankt: bole
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 12.04.12 22:04 
Warum benutzt du denn die Ereignisse so wie du sie nutzt? :gruebel:

OnCreate --> Sachen, die im Formularobjekt immer vohanden sind, erzeugen (passiert einmal im Lebenszyklus des Formulars)
OnShow --> Vorgänge ausführen, die bei jeder Anzeige des Formulars passieren sollen (passiert bei jedem Anzeigen durch Show/ShowModal)
OnActivate --> Vorgänge ausführen, die jedesmal beim Aktivieren des Formulars (z.B. durch Anklicken) passieren sollen (passiert ggf. immer wieder während das Formular lebt)

Für mich liest sich das so, als ob entweder alles in OnShow gehört oder du in OnShow die DB erzeugst / initialisierst und dir dann eine Message schickst, in deren Behndlung du dann die Verbindung aufbaust. Das eignet sich dann, wenn du die Verbindung erst machen willst nachdem das Formular schon sichtbar ist.

Für diesen Beitrag haben gedankt: bole
bole Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 107
Erhaltene Danke: 15

win 10

BeitragVerfasst: Do 12.04.12 23:37 
Vielen Dank für die zahlreichen Tipps!

Das ist ein an und für sich kleines Programm mit nur einem Formular. Eigentlich denke ich das initalisieren der DB sollte einmal am Anfang gemacht werden. Also im OnCreate Ereignis. Leider bekomme ich da eine Zugriffsverletzung. Ich vermute die Unit mit der DB Anbindung (ado) ist noch nicht bereit.

Allerdings habe ich keine Erfahrung mit Datenbankeanbindung mit Delphi... Ich habe das erste mal mit Hilfe dieses Tutorials www.delphi-treff.de/...atenbank/einleitung/ so etwas gebastelt und bin eigentlich schon froh das es soweit läuft und meine Abfragen funktionieren... :D

Ich denke ich werde der einfachkeit halber die Lösung von user profile icontrm nehmen.

Gruss

Bole

_________________
ein programm macht nicht das was du willst sondern was du schreibst!
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 12.04.12 23:48 
eigentlich sollte es kein Problem sein die DB zu öffnen. Ist die Connection in eine Datenmodul, wenn ja ist dieses bereits erzeugt?

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 14.04.12 00:38 
Da in dem Tutorial ein Datenmodul benutzt wird, wird das wohl in der Tat das Problem sein. Daher kurz zur Erklärung:
Standardmäßig erzeugt Delphi der Reihe nach alle Formulare und Datenmodule. Danach werden diese dann ggf. sichtbar gemacht. Das OnCreate des Formulars passiert logischerweise bei dessen Erzeugung. Da du das Datenmodul nach dem Formular erzeugt hast, ist dieses daher noch gar nicht an der Reihe gewesen und nich nicht erzeugt.

Lösungsmöglichkeiten:
Entweder erzeugst du das Datenmodul manuell vorher oder du initialisierst die Datenbank schlicht im OnCreate des Datenmoduls. :zwinker: