Entwickler-Ecke
Dateizugriff - Formular in einer DLL aufrufen, wie?
Delete - Do 28.08.08 08:34
Titel: Formular in einer DLL aufrufen, wie?
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 - 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 - 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.
ensacom0 - 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 - Do 28.08.08 09:31
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 - Do 28.08.08 10:07
Ok, ich habe es jetzt so gemacht
Das steht in Form1;
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| 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
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 - Do 28.08.08 10:30
Habe gerade gesehen, wenn ich anstatt frm.free, frm.FreeOnRelease benutze dann bekomme ich keine Fehlermeldung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!