![]() |
Neues Forumular? + wie öffnen?
Hallihallo allerseits,
ich hab n prob mit delphi 2005. ich habe ein neues Formular erstellt über 'Neue Einträge'-->'Delphi-Dateien'-->'Formular'. Wie kann ich jetzt auf Objekte von beiden Formularen von beiden aus zugreifen? ich habs mit formularname.objekt probiert aber das klappt net. was habe ich falsch gemacht, bzw wo muss man was wie definieren damit der zugriff möglich ist und wie erzeugt man im laufenden programm per event ein neues formular, bzw. macht es sichtbar? thx im vorraus 4 ya helP eLem3ntx + Floh :D |
Re: Neues Forumular? + wie öffnen?
Hallo,
prüfe zunächst folgende Punkte: 1. Sind die Formulare mit globalen Variablennamen versehen? 2. Sind die 'Objekte', auf die Du zugreifen willst, als private oder public deklariert? Bei private oder protected ist kein Zugriff möglich, bei public immer. 3. Wird das zweite Formular durch das Projekt erzeugt (siehe Quelltext der Projektdatei oder Projektoptionen kontrollieren)? Für eine Alternative hängt es davon ab, ob das zweite Formular mit Show oder mit ShowModal angezeigt werden soll. Für Show kommt in Frage:
Delphi-Quellcode:
Für ShowModal kommt in Frage, das zweite Formular nicht automatisch zu erzeugen (in den Projektoptionen aus der entsprechenden Liste entfernen), sondern manuell:
procedure TWinForm1.Button1_Click(sender: Object; e: EventArgs);
begin WinForm2.Show; end;
Delphi-Quellcode:
Darüberhinaus müssen die Formulare sich unter NET nicht unbedingt gegenseitig kennen. Der Datenaustausch kann auch bzw. sollte über Ereignisse stattfinden. Ich glaube aber, das führt jetzt noch zu weit.
procedure WinForm1.Button1_Click(sender: Object; e: EventArgs);
var frm: TWinForm2; begin frm := TWinForm2.Create(self); try // übergib irgendwelche Daten an frm if frm.ShowModal = System.Windows.Forms.DialogResult.OK then begin // tue irgendetwas, z.B. hole Angaben zurück end; finally // hier bin ich mir noch nicht klar, ob der Garbage Collector solch eine Anweisung // überhaupt benötigt oder nützt oder ob es NET eher durcheinander bringt frm.Free; end; end; Gruß Jürgen PS. 1. Die Verfahren von Delphi.NET und C# unterscheiden sich etwas; deshalb kann ich genaue sofortige Lösung, sondern nur Tipps zur Fehlersuche angeben. 2. Ich schreibe zz. fast ausschließlich C#; bitte nicht sauer sein, wenn meine Code-Schnipsel nicht exakt stimmen. |
Re: Neues Forumular? + wie öffnen?
Heyho Jürgen Thomas, danke für deine Antwort hat gut funktioniert jedoch wenn ich die erste Form schließen lasse (Form1.Close) dann wird die zweite Form auch geschlossen. Wie kann man dass umgehen?
|
Re: Neues Forumular? + wie öffnen?
Zitat:
Wenn das elementare Versuche Deinerseits sind, solltest Du das zurückstellen. Gruß Jürgen |
Re: Neues Forumular? + wie öffnen?
versuchs mal mit:
form1.visible:=false; oder form1.destroy; hab ich eben selbst erst hier im forum gefunden, da ich das selbe problem hatte |
Re: Neues Forumular? + wie öffnen?
|
Re: Neues Forumular? + wie öffnen?
Formulare werden nicht mit
![]() ![]() Beschreibung Mit Release können Sie das Formular aus dem Speicher entfernen. Release gibt das Formular erst frei, nachdem die Ausführung der Ereignisbehandlungsroutinen des Formulars und seiner untergeordneten Komponenten beendet ist. Die Methode stellt auch sicher, dass alle Botschaften in der Ereigniswarteschlange des Formulars vor dessen Freigabe bearbeitet werden. Jede Ereignisbehandlungsroutine für das Formular oder für dessen untergeordnete Objekte sollte Release anstelle von Free (Delphi) oder Delete (C++) benutzen. Ansonsten kann ein Speicherzugriffsfehler auftreten. Hinweis: Release gibt die Steuerung sofort an die aufrufende Routine zurück und wartet nicht, bis das Formular freigegeben wird. Gruss Thorsten |
Re: Neues Forumular? + wie öffnen?
Die Hinweise mit
![]() ![]() Es bleibt aber der weitere Hinweis: Zitat:
Zitat:
Gruß Jürgen |
Re: Neues Forumular? + wie öffnen?
Zitat:
Eine andere Variante ist, dass Zweite-Formular als Showmodal anzuzeigen, dann reagiert das Hauptformular erst wieder auf Benutzeraktionen, wenn das Zweite-Formular geschlossen wurde. Gruss Thorsten |
Re: Neues Forumular? + wie öffnen?
Wenn man showmodal nicht will, ist es wohl deutlich leichter, das Hauptformular mit Hide zu verbergen als das ganze OnClose vollzuschreiben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 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 by Thomas Breitkreuz