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