AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular mehrmals öffnen -> Absturz

Ein Thema von Morfio · begonnen am 5. Jan 2004 · letzter Beitrag vom 5. Jan 2004
Antwort Antwort
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#1

Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:02
Hallo,

ich habe ein Formular, das beim Start meiner MDI-Anwendung gleich nach dem Einloggen gestartet wird. Dieses Formular hat zwei Buttons, die versteckt sind. Innerhalb des Formulares befindet sich ein StringGrid. Klickt man einen Eintrag an, öffnet sich ein weiteres Formular, in dem man den Eintrag bearbeiten kann. Bis dahin kein Problem.

Innerhalb des zweiten Formulars sind aber wieder StringGrids. Und zusätzlich gibt es einen Button, mit dem man einen neuen Eintrag diesem StringGrid zuweisen kann. Klickt man auf diesen Button (Hinzufügen), öffnet sich erneut das erste Formular, auf dem die zwei versteckten Buttons nun angezeigt werden. Aus der Liste kann man nun einen Eintrag auswählen (einer der Buttons ist Wählen, der andere ist Abbrechen). Klickt man auf Wählen, wird der Eintrag auch übernommen. Bis hier auch kein Problem.

Innerhalb des Formulars kann man aber weitere von diesen zweiten Formularen öffnen, um Einträge zu editieren, zu löschen oder hinzuzufügen. Klickt man nun doppelt so einen Eintrag an, öffnet sich natürlich wieder das zweite Formular. Schließt man dieses wieder und klickt dann auf Abbrechen oder Wählen, so stürzt das gesamte Programme mit der Fehlermeldung:

Zitat:
Im Projekte BDB.exe ist eine Exception der Klasse EAccessviolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00CB134E. Lesen von Adresse FFFFFFFF'. Der Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Der Code, der dieses Fenster öffnet, lautet:

Delphi-Quellcode:
procedure TfrmBuchdatenbank.sgSucheDblClick(Sender: TObject);
begin
   Adresse := TfrmAdresseBearbeiten.Create(Self);
   Adresse.Show;
   Adresse.SetFields(sgSuche.Cols[0].Strings[sgSuche.Row]);
end;
Adresse ist global. Ich schätze mal, dadurch tritt der Fehler irgendwie auf, kann das sein?

Vielen Dank,

Morfio ...
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#2

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:04
Achso, zur Veranschaulichung noch ein Screenshot:

http://morfio.dyndns.org/db.jpg
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:23
Ich habe es jetzt nur überflogen, aber mit
   Adresse := TfrmAdresseBearbeiten.Create(Self); sagst Du: Erzeuge das Formular neu und weise es der Variablen Adresse zu. Wenn in Adresse schon was drin ist, egal... Das zuvor in Adresse gespeicherte Form ist dann also nicht mehr erreichbar.

Ergo: Jeder Zugriff des Formulars, wo zum Beispiel steht: Adresse.Caption, würde auf dem neuen Formular landen, Self.Caption dagegen immer noch auf dem richtigen.

Ich gehen aber mal davon aus, dass Du dort einfach mit Formularvariablen arbeitest, ohne zu wissen, welches Formular gemeint ist.

Du verwendest Show? Geht nicht ShowModal? Dann könntest Du die Variablen lokal halten und vermutlich wären die Probleme weg?!
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#4

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:45
Hi,

vielen Dank für die Hilfe. Genau das ist mein Problem momentan ... . Ich kenne mich mit Delphi dummerweise kaum aus und muß darin ein dickes Projekt realisieren (ich bin kurz vorm Abdrehen) und weiß ehrlich gesagt momentan nicht weiter.

Wenn ich ShowModal mache, kommt als Fehlermeldung: "Aus einem sichtbaren Fenster kann kein modales gemacht werden." ... . Hmm, vielleicht löse ich das anders ... ich weiß noch nicht.

Viele Dank,

Morfio ...
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:48
Probiere mal das:
Delphi-Quellcode:
procedure TfrmBuchdatenbank.sgSucheDblClick(Sender: TObject);
var Adresse : TfrmAdresseBearbeiten;
begin
   Adresse := TfrmAdresseBearbeiten.Create(Self);
   try
     Adresse.SetFields(sgSuche.Cols[0].Strings[sgSuche.Row]);
     Adresse.ShowModal;
   finally
     Adresse.Free;
   end;
end;
Du musst vorher aber die Eigenschaft Visible vom Formular im Objektinspektor auf False setzen.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#6

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:54
Wenn ich das Formular auf Invisible stelle kommt: Untergeordnetes MDI-Formular kann nicht verborgen werden.
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 09:59
OK, dass es sich um eine MDI-Anwendung handelt, habe ich nicht gewußt. Das ist in dem Sinne ja ein Sonderfall und mein Weg ist dann der völlig falsche!

Hierzu solltest Du aber gar keine globale Formular-Variable benötigen, aber mit MDI hatte ich nie richtig was zu tun, ich kann Dir da also leider nicht helfen.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Morfio

Registriert seit: 15. Dez 2003
53 Beiträge
 
#8

Re: Formular mehrmals öffnen -> Absturz

  Alt 5. Jan 2004, 10:03
Ok,

dennoch vielen vielen Dank. Ich werde das Feature einfach anders implementieren und die Leute müssen damit halt zurecht kommen.

Morfio ...
  Mit Zitat antworten Zitat
Antwort Antwort


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:01 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