Autor Beitrag
ensacom
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.08.08 08:34 
Hallo, ich habe eine DLL in der ich zwei Formulare habe.
Wie ich nun ein Formular au der DLL von meiner Hauptanwendung aus starte ist mir bekannt.

Nur wie mache ich folgendes?

Ich rufe Formular1 in der DLL von meiner Hauptanwendung auf.
Auf Formular1 in der DLL befindet sich ein Button über den ich Formular2 in der DLL aufrufen will.
Wie mache ich das?

Ein normales Formular2.ShowModal bringt mir nur einen Fehler ruft aber das Formular nicht auf.

Kann mir da einer weiterhelfen?


Danke
Mike19
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: Do 28.08.08 08:39 
Hallo,

Zitat:

Ein normales Formular2.ShowModal bringt mir nur einen Fehler ruft aber das Formular nicht auf.


helfen kann bestimmt einer, aber wobei ? Fehler treten immer auf, aber welche?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 28.08.08 08:46 
Die komplette Fensterverwaltung muss innerhalb der Dll erfolgen. Füge Funktionen für die Steuerung von aussen ein, welche du im Interface der Dll bereitstellst.

_________________
Markus Kinzler.
ensacom0
Hält's aus hier
Beiträge: 5

WindowsXP, Linux Mint
Delphi7
BeitragVerfasst: Do 28.08.08 09:20 
Ok, ich weiß woran es liegt.
Die Form muss ja auch erst mal erstellt werden.

Form1 wird erstellt wenn ich sie über mein Hauptprogramm aufrufe.
Wie kann ich alle Formen erstellen wenn ich Form1 aus meinem Hauptprogramm aufrufe um anschließend von Form1 in der DLL aus auf die anderen Formulare zugreifen zu können?

Danke
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Do 28.08.08 09:31 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses
  Form2;

{...}

procedure TForm1.OpenForm2;

var   frm: TForm2;

begin
  frm := TForm2.Create (nil);
  frm.ShowModal;
  frm.Free;
end;
ensacom0
Hält's aus hier
Beiträge: 5

WindowsXP, Linux Mint
Delphi7
BeitragVerfasst: Do 28.08.08 10:07 
Ok, ich habe es jetzt so gemacht
Das steht in Form1;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  Form zum bearbeiten oder neue anlegen eines Sachbearbeiters aufrufen   +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

procedure Tfrm_ListBearbeiter.ShowEditBearbeiterForm;
var
  frm: Tfrm_EditBearbeiter;
begin
  frm := Tfrm_EditBearbeiter.Create(nil);
  try
    frm.ShowModal;
  finally
    frm.Free;
  end;
end;




Wenn ich nun Form1 in der DLL aus der Hauptanwendung aufrufe und dann Form2 mit folgender Zeile aufrufe,
erhalte ich nachdem ich mein Hauptform geschlossen habe erhalte ich eine EAccessViolation in module bearbeiter.dll at usw Fehlermeldung

ausblenden Delphi-Quelltext
1:
    ShowEditBearbeiterForm;					



Wenn ich allerdings ins onClose der zweiten Form in der DLL das free für die Form reinsetze und das frm.free aus der oben angegebenen Procedure zum erstellen der Form entferne, dann geht es.


Woran liegt das?
ensacom0
Hält's aus hier
Beiträge: 5

WindowsXP, Linux Mint
Delphi7
BeitragVerfasst: Do 28.08.08 10:30 
Habe gerade gesehen, wenn ich anstatt frm.free, frm.FreeOnRelease benutze dann bekomme ich keine Fehlermeldung.