![]() |
bei Form.create auf anderes Formular zugreifen
Hi@all!
Hab in der Suche nix anständiges gefunden, vielleicht weil ich nicht genau weiß, wie ich das der Suche beibringen soll. Folgendes Problem: Ich habe eine Hauptform. In der Form1.create Methode wird überprüft, ob Parameter übergeben worden sind. (Zum öffnen eines Files bsp. "C:\test.xyz".) Dann wird die Datei geöffnet und eingelesen. - Alles funktionierte einwandfrei - bis ich eine Verschlüsselung eingebaut habe. Hier muss nun ein Passwort eigegeben werden. Die Passworteingabe erfolgt über ein zweites Formular (Form2). Es passiert also folgendes:
Delphi-Quellcode:
Habt ihr da ne Idee? procedure Form1.create(...); begin [...] p:=ParamCount(); [...] //(Parameter werden richtig zusammengesetzt und in filename gespeichert) dateioeffnen(filename); [...] end; [...] procedure dateioeffnen(filename); begin Form2.showmodal; //hier ist das eigenliche Problem, weil ich noch nicht auf Form2 zugreifen kann, //selbst mit Form2.create bekomme ich es nicht zum laufen... passwort:=Form2.edit1.text; [...] end; Viele Grüße, Alleinherrscher |
Re: bei Form.create auf anderes Formular zugreifen
Mach es im OnShow oder OnPaint des Hauptformulares.
|
Re: bei Form.create auf anderes Formular zugreifen
Super, Danke, Luckie,
Aber kann mir jemand erklären, warum das sonst nicht geht? |
Re: bei Form.create auf anderes Formular zugreifen
Ich würde sagen, dass bei TForm.Create die Form hast grad kreiert wird, somit ist sie noch nicht komplett und kann noch nicht auf evtl. eingebundene Formulare zurückgreifen...!?
|
Re: bei Form.create auf anderes Formular zugreifen
Form1 wird normalerweise vor Form2 erzeugt. Die Reihenfolge steht in der .dpr Datei. Dort siehst du auch, wie das vor sich geht:
Delphi-Quellcode:
Dein Oncreate Ereignis wird ausgelöst, beim CreateForm. Form2 ist also noch nicht erzeugt... Das muss Du also manuell im OnCreate von Form1 machen, und im Projekt die Zeile Application.CreateForm(TForm2,Form2) rausnehmen. (Am besten über Menupunkt Projekt->Optionen)
begin
Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.Run; end. |
Re: bei Form.create auf anderes Formular zugreifen
Wäre der umgekehrte Weg - erst Passwort abfragen und dann das Formular erstellen - nicht sinnvoller?
mfg gfjs |
Re: bei Form.create auf anderes Formular zugreifen
Vielleicht wäre es mit einem Dialog einfacher zu lösen.
Grüße Faux |
Re: bei Form.create auf anderes Formular zugreifen
@faux: das kommt doch aufs gleiche heraus, auch ein Dialog muss erst erzeugt werden. Und gewissermaßen ist seine Passwortabfrage ja ein Dialog.
|
Re: bei Form.create auf anderes Formular zugreifen
Zitat:
Ich hätte eher so gemeint:
Delphi-Quellcode:
procedure TForm1.Create(Sender: TObject);
var PasswordDialog1: TPasswordDialog; begin PasswordDialog1 := TPasswordDialog.Create(self); ... if PasswordDialog1.ShowModal = mrOK then begin //code end; PasswordDialog1.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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