AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriffsverletzung bei dynamisch erstellten Forms
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei dynamisch erstellten Forms

Ein Thema von Delix · begonnen am 4. Mai 2004 · letzter Beitrag vom 4. Mai 2004
Antwort Antwort
Delix

Registriert seit: 4. Mai 2004
Ort: Lippstadt
56 Beiträge
 
#1

Zugriffsverletzung bei dynamisch erstellten Forms

  Alt 4. Mai 2004, 11:32
Ich habe folgendes Problem:

Ich will Forms dynamisch in einer Prozedur wie folgt erstellen:

Delphi-Quellcode:
procedure TFMain.ShowFM(FormName);
var FFormClass: TFormClass;
    FForm: TForm;
begin
  FFormClass := TFormClass(FindClass('T'+FormName));
  FForm.Name:=FormName;
  ...
  FForm.Visible:=True;
end;
Das funktioniert auch.

Diese Forms wurden bisher in der klassischen Form erstellt:

Application.createForm(TFSTL,FSTL);

In dieser Form lief bisher alles. In der dynamischen Form habe ich das Problem, dass ich eine Zugriffsverletzung bekomme, wenn ich ein Control innerhalb des Forms anspreche (Edit1.Text:='blah..'), der Rest funktioniert.

Woran kann das liegen.

[edit=sakura] [delphi]-Tags. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Zugriffsverletzung bei dynamisch erstellten Forms

  Alt 4. Mai 2004, 11:40
Zitat von Delix:
Ich will Forms dynamisch in einer Prozedur wie folgt erstellen:
Delphi-Quellcode:
Procedure TFMain.ShowFM(FormName);
var FFormClass: TFormClass;
    FForm: TForm;
begin
  FFormClass := TFormClass(FindClass('T'+FormName));
  FForm.Name:=FormName;
  ...
  FForm.Visible:=True;
end;
Das funktioniert auch.
Nicht wirklich
Dir fehlt was:
Delphi-Quellcode:
Procedure TFMain.ShowFM(FormName);
var FFormClass: TFormClass;
    FForm: TForm;
begin
  FFormClass := TFormClass(FindClass('T'+FormName));
  FForm := FFormClass.Create(nil); // <=================================
  FForm.Name:=FormName;
  ...
  FForm.Visible:=True;
end;
Andreas
  Mit Zitat antworten Zitat
Delix

Registriert seit: 4. Mai 2004
Ort: Lippstadt
56 Beiträge
 
#3

Re: Zugriffsverletzung bei dynamisch erstellten Forms

  Alt 4. Mai 2004, 11:56
Sorry, hab natürlich einen Befehl vergessen!

Delphi-Quellcode:
Procedure TFMain.ShowFM(FormName);
var FFormClass: TFormClass;
    FForm: TForm;
begin
  FFormClass := TFormClass(FindClass('T'+FormName));
  Application.createForm(FFormClass,fForm);
  FForm.Name:=FormName;
  ...
  FForm.Visible:=True;
end;
Mit deiner Variante klappts aber auch nicht.

[edit=sakura] [delphi]-Tags Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Zugriffsverletzung bei dynamisch erstellten Forms

  Alt 4. Mai 2004, 12:03
@Delix: zur Info: 2.3.1 - Quellcode im Beitrag? So geht's

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
roderich
(Gast)

n/a Beiträge
 
#5

Re: Zugriffsverletzung bei dynamisch erstellten Forms

  Alt 4. Mai 2004, 12:30
Zitat:
In dieser Form lief bisher alles. In der dynamischen Form habe ich das Problem, dass ich eine Zugriffsverletzung bekomme, wenn ich ein Control innerhalb des Forms anspreche (Edit1.Text:='blah..'), der Rest funktioniert.
Wo greifst Du denn auf die Controls zu ? Wenn FForm eine lokale Variable ist, muß es wohl in einem Ereignis sein. Schau dir doch mal im Debugger an, wie Self an dieser Stelle ausschaut (ob Assigned, welche Klasse, Name, ComponentCount etc.).

Roderich
  Mit Zitat antworten Zitat
Delix

Registriert seit: 4. Mai 2004
Ort: Lippstadt
56 Beiträge
 
#6

Re: Zugriffsverletzung bei dynamisch erstellten Forms

  Alt 4. Mai 2004, 13:48
Das scheint die richtige Spur zu sein. Ich kann zwar auf FForm zugreifen aber self ist nil!!

Was sehr merkwürdig ist: Ein anderes Form, welches auf die gleiche Weise aufgerufen wird, funktioniert und self ist im Zugriff
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:49 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