Thema: Delphi Form Create?

Einzelnen Beitrag anzeigen

Benutzerbild von rocksoft
rocksoft

Registriert seit: 7. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#1

Form Create?

  Alt 7. Jun 2005, 21:49
Hallo,

ich werde einfach nicht ganz schlau, hab schon den Forum schon par mal hoch und runter durchgesucht,
aber bin mir dann immer noch nicht sicher wie es richtig oder besser gemacht wird.

Modales Fenster öffnen:

a)
Delphi-Quellcode:
procedure TForm1.Btn_Showmodal1Click(Sender: TObject);
begin
  form2 := Tform2.create(nil); <<- - mit nil
  try
    if form2.showmodal = mrok then
    begin
      //.. irgenwas
    end;
  finally
    form2.free;
  end;
end;
b)
Delphi-Quellcode:
procedure TForm1.Btn_Showmodal2Click(Sender: TObject);
begin
  form2 := Tform2.create(self); <<-- hier mal mit self
  try
    if form2.showmodal = mrok then
    begin
      //.. irgenwas
    end;
  finally
    form2.free;
  end;
end;
c)
Delphi-Quellcode:
procedure TForm1.Btn_Showmodal3Click(Sender: TObject);
var
MeineForm:Tform2; <-- mit Variablen
begin
  MeineForm := Tform2.create(self); <-- könnte auch (nil) sein
  try
    if MeineForm.showmodal = mrok then
    begin
      //.. irgenwas
    end;
  finally
    MeineForm.free;
  end;
end;
Die nicht modale
1)
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
 Form3:=Tform3.Create(nil); <-- Ohne Variable
 Form3.show;
end;
--
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caFree
end;


2)
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
neuesfenster:Tform3; <-- mit Variable
begin
 neuesfenster:=Tform3.Create(nil);
 neuesfenster.show;
end;
--
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action := caFree
end;
ich benutze zuzeit die Form a und 1, und leider habe ich es mit:
Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000. zu tun.
Es ist aber nicht immer, hängt es vom zufall ab? daher denke ich da lauft was falsch, und so rufe ich die Forms auf bei nicht modalen Forms

Delphi-Quellcode:
procedure Tform1.DisplayForm(i: Byte); //LMDFormDisplay VLC
var // ist änlich wie frames
  tmpc: TForm;
  tmpf: TCustomForm;

begin
  tmpf := fd.ActiveForm;
  if tmpf <> nil then tmpf.Close;

  case I of
   0: begin
        Form2 := TForm2.Create(nil);
        tmpc := Form2;
      end;
   1: begin
        Form3 := TForm3.Create(nil);
        tmpc := Form2;
      end;
   2: begin
        Form4 := TForm4.Create(nil);
        tmpc := Form2;
      end;
   3: begin
        Form5 := TForm5.Create(nil);
        tmpc := Form2;
      end;
  else
    tmpc := nil;
  end;
  if tmpc <> nil then
  begin
    FD.AddForm(tmpc, true);
  end
  else
    FD.AddForm(Form10, true);
end;
Ich hoffe das jemand hier ein wenig Licht rein bringen kann, schon mal im Dank im vorraus
Robert
--
mfg Robert
  Mit Zitat antworten Zitat