![]() |
Zugriff auf DLL Procedure von DLL interner Form
Hallo zusammen!
Ich habe eine Frage, weil ich nicht mehr weiterkomme. Ich bin dabei, eine DLL mit Delphi zu erstellen, die integrierte Forms hat. Jetzt habe ich aber folgendes Problem: ich möchte von der Form aus eine Funktion oder Prozedur in der DLL starten, aber ich weiss nicht wie ich auf diese Zugriff bekommen kann. Ich hoffe mir kann jemand helfen. Ich hab den Quelltext auch angehängt. Code der DLL selbst:
Delphi-Quellcode:
Code des Forms, integriert in das Projekt für die DLL:
library DienstplanRDP_DLL;
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComObj, Frm_Info in 'Frm_Info.pas' {Frm_Test}; var oXL: Variant; {$R *.res} procedure DLL_Init();stdcall; begin oXL := GetActiveOleObject('Excel.Application'); end; procedure DLL_Terminate();stdcall; begin oXL := Unassigned; end; procedure Test_Excel();stdcall; var Tmp: String; begin Frm_Test := TFrm_Test.Create(nil); oXL.ActiveSheet.Cells[2, 1] := 'Test DLL'; Tmp := oXL.ActiveSheet.Cells[1,1]; ShowMessage(Tmp); Frm_Test.ShowModal; end; procedure Test_Frm(Tmp: String);stdcall; begin ShowMessage(Tmp); end; exports DLL_Init, DLL_Terminate, Test_Excel, Test_Frm; begin end.
Delphi-Quellcode:
unit Frm_Info;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrm_Test = class(TForm) Btn_OK: TButton; Txt_Box1: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Btn_OKClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frm_Test: TFrm_Test; implementation {$R *.dfm} procedure TFrm_Test.Btn_OKClick(Sender: TObject); begin // Hier sollte der Aufrauf einer Funktion stehen!? Frm_Test.Close; end; procedure TFrm_Test.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; end. Ich hoffe von Euch hat jemand eine Idee :-) Vielen Dank und Gruß Andreas |
Re: Zugriff auf DLL Procedure von DLL interner Form
Da ändert sich eigentlich nichts zum normalen aufrufen von "Form-Funktionen"...
würde dir schon fast empfehlen in den DLL Code sowas zu schreiben:
Delphi-Quellcode:
dann kannst du innerhalb deiner DLL die Form einfach nur mit Frm_Test.MachWas aufrufen...
initialization
Frm_Test:= TFrm_Test.Create; finalization Frm_Test.free; die Sache ist eben das du zum Aufrufen deiner Funktionen eine Inztanz der Form brauchst... Greetz Boombuler |
Re: Zugriff auf DLL Procedure von DLL interner Form
Hallo Andreas,
deine Form Frm_Test kann nur auf solche Funktionen zugreifen, die im interface einer Unit aufgeführt sind. Erzeuge einfach eine Unit SharedU und kopiere die gewünschten Funktionen dort hinein. Wenn du diese Unit dann in die uses-Liste deiner Unit Frm_Info aufnimmst, solltest du keine Probleme mehr mit dem Aufruf haben. Grüße vom marabu |
Re: Zugriff auf DLL Procedure von DLL interner Form
Hallo!
Vielen Dank erst mal für eure nette Hilfe! Verstehe ich es richtig, dass es im Prinzip keine Möglichkeit gibt auf die Funktionen die unter Library stehen direkt zuzugreifen, oder? Ich muss also eine neue Unit anlegen und von beiden (also von der Library und von der Form) darauf zugreifen, oder? Schöner würde ich es halt finden, wenn es direkt gehen würde, denn sonst müsste ich für Funktionen die ich von der DLL aus aufrufen möchte ja jeweils ne kleine Procedure schreiben...geht halt dann über 2 Ecken... Vielleicht noch ne Idee? :-) Danke und Gruß Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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