Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi bei Form.create auf anderes Formular zugreifen (https://www.delphipraxis.net/64959-bei-form-create-auf-anderes-formular-zugreifen.html)

alleinherrscher 10. Mär 2006 13:03


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:

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;
Habt ihr da ne Idee?

Viele Grüße,
Alleinherrscher

Luckie 10. Mär 2006 13:04

Re: bei Form.create auf anderes Formular zugreifen
 
Mach es im OnShow oder OnPaint des Hauptformulares.

alleinherrscher 10. Mär 2006 13:09

Re: bei Form.create auf anderes Formular zugreifen
 
Super, Danke, Luckie,

Aber kann mir jemand erklären, warum das sonst nicht geht?

fLaSh11 10. Mär 2006 13:12

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...!?

Jelly 10. Mär 2006 13:20

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:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.
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)

gfjs 11. Mär 2006 06:07

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

faux 11. Mär 2006 08:49

Re: bei Form.create auf anderes Formular zugreifen
 
Vielleicht wäre es mit einem Dialog einfacher zu lösen.

Grüße
Faux

SirThornberry 11. Mär 2006 08:54

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.

faux 11. Mär 2006 09:09

Re: bei Form.create auf anderes Formular zugreifen
 
Zitat:

Zitat von SirThornberry
@faux: das kommt doch aufs gleiche heraus, auch ein Dialog muss erst erzeugt werden. Und gewissermaßen ist seine Passwortabfrage ja ein Dialog.

Schon klar, aber er kann ihn im OnCreate erzeugen, was er bei einer Form eher nicht kann (bzw soll).
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 13:28 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