![]() |
Formular mehrmals öffnen -> Absturz
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:
Delphi-Quellcode:
Adresse ist global. Ich schätze mal, dadurch tritt der Fehler irgendwie auf, kann das sein?
procedure TfrmBuchdatenbank.sgSucheDblClick(Sender: TObject);
begin Adresse := TfrmAdresseBearbeiten.Create(Self); Adresse.Show; Adresse.SetFields(sgSuche.Cols[0].Strings[sgSuche.Row]); end; Vielen Dank, Morfio ... |
Re: Formular mehrmals öffnen -> Absturz
|
Re: Formular mehrmals öffnen -> Absturz
Ich habe es jetzt nur überflogen, aber mit
Delphi-Quellcode:
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.
Adresse := TfrmAdresseBearbeiten.Create(Self);
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?! |
Re: Formular mehrmals öffnen -> Absturz
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 ... |
Re: Formular mehrmals öffnen -> Absturz
Probiere mal das:
Delphi-Quellcode:
Du musst vorher aber die Eigenschaft Visible vom Formular im Objektinspektor auf False setzen.
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; |
Re: Formular mehrmals öffnen -> Absturz
Wenn ich das Formular auf Invisible stelle kommt: Untergeordnetes MDI-Formular kann nicht verborgen werden.
|
Re: Formular mehrmals öffnen -> Absturz
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. |
Re: Formular mehrmals öffnen -> Absturz
Ok,
dennoch vielen vielen Dank. Ich werde das Feature einfach anders implementieren und die Leute müssen damit halt zurecht kommen. Morfio ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz