![]() |
dll mit Fenster
hallo zusammen,
ich wollte eine dll programmieren die ein fenster anzeigt... hier der code der dll:
Delphi-Quellcode:
hier der code der exe die die dll benutzen soll:
library Project5;
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit3 in 'Unit3.pas' {Form3}; {$R *.res} procedure start; begin Unit3.Form3.Show; end; exports start; begin end.
Delphi-Quellcode:
ich bekomme jedoch eine zugriffsverletzung wenn ich nun über den button das fenster anzeigen lassen will...
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; const DLLNAME = 'project5.dll'; procedure start; external DLLNAME; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin start; end; end. wenn ich in der funktion der dll z.b. ein simples ShowMessage('Hallo') nehme dann zeigt er mir die Messagebox auch an... was mache ich falsch? lg paperboy |
Re: dll mit Fenster
Hast du Form3 in Unit3 auch irgendwie mittels Create vorher erstellt? In einem VCL-Projekt wird der Code dazu ja automatisch generiert, in einer DLL so nicht...
|
Re: dll mit Fenster
oh das wusste ich nicht... danke dir..
mit Form3:= TForm3.Create(nil) vor dem Form3.Show hats jetzt geklappt... lg paperboy |
Re: dll mit Fenster
gibt es auch eine möglichkeit ein fenster aus dem hauptprogramm durch code aus der dll anzeigen zu lassen?
tschuldigung für den doppelpost... wollte eigentlich auf edit klicken! |
Re: dll mit Fenster
Ja, indem du eine Callbackschnittstelle definierst.
Du hast eine Prozedur im Hauptprogramm und übergiebst die Adresse dieser Prozedur an die DLL. Diese Ruft die dann bei Bedarf auf. |
Re: dll mit Fenster
könntest du dazu vllt ein kleines beispiel nennen? wäre dir sehr dankbar... hab grad mal gegoogelt aber die was ich dort gefunden hab ist doch sehr verwirrent..
|
Re: dll mit Fenster
Erzeuge eine Prozedur/Funktion in der Dll, welche das Fenster Erzeugt, eine sie das Fenster anzeigt, eine die es ausblendet, eine die es zerstört usw. Diese kannst du dann exportieren
|
Re: dll mit Fenster
das problem ist das ich nicht weis wie... ich kann ja schlecht in der dll Form1.Create Form1.Show etc.. benutzen wenn form1 aus meinem hauptprogramm kommt...
wenn dies für einen neuling eine übertriebene aufgabe ist bitte nicht scheuen mir das klipp und klar zu sagen... ich bin am lernen und hatte gedacht das dies vllt nicht unbedingt zu schwer wäre... |
Re: dll mit Fenster
Schaue Dir mal diese kleine
![]() |
Re: dll mit Fenster
aber wenn ich das richtig verstehe wird die funktion ja im hauptprogramm aufgerufen?!
ich möchte nachdem ich ein fenster aus der dll durch einen button auf der hauptform angezeigt habe nun durch einen knopfdruck auf dem dll-fenster wieder das hauptfenster angezeigt bekommen... falls diese funktion in dem beispiel genau das tut entschuldige ich mich und knie mich nochmla rein.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz