AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form Create?

Ein Thema von rocksoft · begonnen am 7. Jun 2005 · letzter Beitrag vom 12. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von rocksoft
rocksoft

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

Form Create?

  Alt 7. Jun 2005, 22: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
_Sebastian_

Registriert seit: 22. Jul 2004
Ort: Lübeck
72 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Form Create?

  Alt 7. Jun 2005, 22:55
if tmpf <> nil then tmpf.Close; Nach einem Free ist das Objekt nicht unbedingt NIL!
Musst dir irgendwie den Zustand dazu merken und ggf. dann neu erzeugen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Form Create?

  Alt 7. Jun 2005, 22:59
Nimm mal bei a) folgendes:
Delphi-Quellcode:
with Tform2.create(nil) do
try
  if ShowModal = mrOk then
    // ...
finally
  Free;
end;
P.S. Lesen/Schreiben von Adresse 00000.. weist oft auf einen Zeiger hin, der nil ist, wo aber noch drauf zugegriffen wird
  Mit Zitat antworten Zitat
Benutzerbild von rocksoft
rocksoft

Registriert seit: 8. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Form Create?

  Alt 8. Jun 2005, 03:43
Hi Sebastian & Julius,


@ _Sebastian_: Es wird aber immer nil werden, wenn keine form zugeordned wird, oder mach ich da ein denk fehler?

Und wie mach ich es am besten mit nicht Modalen Forms? oder besser gesagt wie verhindere ich den Adresse 00000.. fehler?

Besten Dank
Robert
Robert
--
mfg Robert
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Form Create?

  Alt 8. Jun 2005, 03:51
Zitat:
@ _Sebastian_: Es wird aber immer nil werden,
nein. aber mit freeandnil(); schon
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#6

Re: Form Create?

  Alt 8. Jun 2005, 07:12
Hallo,

so gehts:
Delphi-Quellcode:
  //erzeuge die Form
  fo:=tform.Create(self);
  fo.parent:=self; //eventuell auch übergeordnete Form
Du brauchst einen parent für deine Form.

Rainer
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Form Create?

  Alt 8. Jun 2005, 08:05
wenn das form einen parent bekommt dann dann ist es nicht mehr frei schwebend sondern liegt auf dem anderen form fest drauf. Es genügt eigentlich schon den Owner anzugeben (form1) damit form2 beim schließen des gesammt programmes frei gegeben wird. Wenn die AV manchmal kommt und manchmal nicht scheinst du irgendwo anders einen fehler zu haben...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#8

Re: Form Create?

  Alt 8. Jun 2005, 08:13
Hallo Thornberry,

ich weiss nicht was du für eine Delphiversion hast, aber bei mir geht ohne parent garnichts.
Du siehst ja auch an dem Beispiel, dass parent auf self gesetzt ist, also nicht an der übergeordneten Form hängt.
Ohne parent bekomme ich eine Fehlermeldung.

Rainer
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#9

Re: Form Create?

  Alt 8. Jun 2005, 09:10
Delphi-Quellcode:
var
  myForm: TMyForm;

begin
  try
    Application.CreateForm(TMyForm, myForm); // oder die params vertauschn, ich verwexel das ständig
    myForm.ShowModal;
  finally
    FreeAndNil(myForm);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von rocksoft
rocksoft

Registriert seit: 8. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#10

Re: Form Create?

  Alt 11. Jun 2005, 02:58
allo,

erstmals Danke an alle für die beiträge, bei barf00s muss ich noch ein wenig nach fragen

Application.CreateForm(TMyForm, myForm); Wieso jetzt gerade mit application anfangen, welche vorteile hat es dadurch oder welche nachteile hat es wenn man es so nicht mal.

Wieso deklariert man eine neue variable?

Delphi-Quellcode:
var
  myForm: TMyForm;
wenn man genau so gut den Name aus der Form benutzen kann? oder sollte man es besser sein lassen?

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
Form3:=Tform3.Create(nil); <-- Ohne Variable
Form3.show;
end;
Könnte dies ein grund sein wieso ich die fehler Meldung: Adresse 00000 bekomme?

Danke
Robert
Robert
--
mfg Robert
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 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