AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Komponente - Constructor MainForm.Hide = Access Violation???
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente - Constructor MainForm.Hide = Access Violation???

Ein Thema von p.abend · begonnen am 3. Dez 2007 · letzter Beitrag vom 6. Dez 2007
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
p.abend
(Gast)

n/a Beiträge
 
#1

Komponente - Constructor MainForm.Hide = Access Violation???

  Alt 3. Dez 2007, 13:35
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 13:40
Wo wird denn die Komponente erzeugt?

Sie darf auf jeden Fall NICHT im MainForm-Create sein. Also wenn deine Hauptform Form1 heisst und du die Komponente auf Form1 packst bzw. in Form1.OnCreate erzeugst, ist klar, dass es da knallt. Denn da gibt es noch keine "MainForm" im Programm, sondern erst, nachdem FormCreate durchgelaufen ist (... und wahrscheinlich noch 'n paar Events später).
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#3

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 13:45
Zitat von p.abend:
Hallo !

Wenn ich die Anwendung mit der Komponente ausführe bekomme ich eine Access Violation, vermutlich mal wegen meiner MainForm.Hide Anweisung, aber wie kann man soetwas denn sonst machen?
"Soetwas"? Was willst du denn machen?

Auf jeden Fall ist es eine schlechte Idee 'soetwas' im Constructor des Mainforms zu veranstalten.

Ich rate jetzt mal:
Versuch im Constructor ein Flag zu setzen, das definiert, ob das Mainform oder das RegForm angezeigt werden soll

dann im Projektquelltext so etwas aehnliches wie:
Delphi-Quellcode:
...
Application.CreateForm(TfrmMain, frmMain);
if frmMain.statusFlag then
  Application.Run
else
begin
  frmMain.RunRegDlg
end;

Dazu muesstest Du eben noch die Methode RunRegDlg implementieren, die den entsprechenden Dialog anzeigt
Delphi-Quellcode:
frmRegDlg:=TfrmRegDlg.create(self);
frmRegDlg.showmodal;
frmRegdlg.free;
self.close;
[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
p.abend
(Gast)

n/a Beiträge
 
#4

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 15:07
Also.. erstmal danke für das feedback!

Das ganze soll eine Komponente sein, die prüft ob eine Registrierungsdatei für die Anwendung vorhanden ist, oder nicht. Wenn nicht, dann soll nicht das mainForm angezeigt werden, sondern aus meiner Komponente ein Registrierungsformular.

Da das Programm ohne Registrierung nicht nutzbar sein soll, möchte ich das direkt nach dem Start prüfen und ausführen.

Die Idee die dahinter steckt ist, das ich meine Programme mit einfachem setzen meiner Komponente auf das Hauptformular schütze.

Wie das geht und ob das im Constructor geht ist eben die Frage. Das ist meine erste Komponente. Ich habe den Constructor gewählt, weil der ja beim Anwendungsstart ausgeführt wird.

Wichtig ist nur, das die Komponente das alles selber regeln soll, ohne das man später eine Zeile Code eingeben muss.
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#5

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 15:17
Okay, dann mach es so wie ich oben geschrieben habe.

Setze ein Flag im constructor

Wenn das Flag gesetzt ist, entweder im Hauptprogramm den Reg-Dialog starten

oder im OnShow-event das Flag ueberpruefen und ggf. den RegDialog von dort aus starten.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 15:27
Wenn du es nicht über Flags und Properties lösen kannst, dann könnten dir noch Messages helfen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 17:26
Delphi-Quellcode:
if Assigned(Application.MainForm) then // nur wenn es schon eine Mainform gibt
   Application.MainForm.Hide; // dann verstecken
Andreas
  Mit Zitat antworten Zitat
p.abend
(Gast)

n/a Beiträge
 
#8

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 17:32
Danke! Das werde ich mal ausprobieren. Melde mich dann wieder!
  Mit Zitat antworten Zitat
p.abend
(Gast)

n/a Beiträge
 
#9

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 19:31
Also das...

Delphi-Quellcode:
..
if Assigned(Application.MainForm) then // nur wenn es schon eine Mainform gibt
   Application.MainForm.Hide; // dann verstecken
...
Funktioniert im Constructor nicht. Das Fenster wird ganz normal angezeigt.

Wie kann ich denn mit meiner Komponente auf das onShow Event von MainForm zugreifen? Denn Die Komponente soll ja alles steuern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#10

Re: Komponente - Constructor MainForm.Hide = Access Violatio

  Alt 3. Dez 2007, 19:41
Und wenn Du es mal mit Application.ShowMainForm := false versuchst? Ist nur so ein Gedanke.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 05:06 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