Hallo,
jetzt bin ich nicht ganz sicher ob es ein Verständnis- oder Wissensproblem meinerseits gibt.
Ich habe mehrere unabhängige Anwendungen (.exe) für unterschiedliche Aufgaben. Die
MsSQL-Datenbank ist aber für alle Anwendungen dieselbe.
Manche Grunddaten, z.B. eine User-Verwaltung, werden von allen Anwendungen gleich benötigt, und so ist z.B. die Userverwaltung in eine
DLL ausgelagert. Hier der Aufbau der
DLL
Delphi-Quellcode:
library User;
uses
SysUtils,
Dialogs,
Classes,
ComCtrls,
Forms,
Ed_user in 'Ed_user.pas' {foedUser},
Di_uslog in 'Di_uslog.pas' {fodiUserLogin},
int_User in 'int_User.pas';
dm_ConDoQMa in '..\All_Form\dm_ConDoQMa.pas',
dm_User in 'dm_User.pas' {dmUser: TDataModule};
{$R *.RES}
exports
edUser,
GetUser,
InitUser0,
SetUser;
end.
und so der Aufruf von GetUser
Delphi-Quellcode:
procedure TintUser.GetUser;
const sBef = 'GetUser';
var
fDLL : function:TUser;
fIni: TIniFile;
begin
SetDLL;
if haDLL <> 0 then
begin
@fDLL := GetProcAddress(haDLL, sBef);
if uHilfs1.CheckDll(@fDLL, sBef, sDll, sUnit, sFehler) then
User:=fDLL; { GetUser aufrufen }
end;
try
{ Aktuelle Benutzer unter PC-Kennung eintragen }
if intUser.sIni<>'' then
begin
fIni := TIniFile.Create(intUser.sIni);
fIni.WriteString(intUser.sPC, 'LastUser', intUser.User.Name);
fIni.Free;
end;
except
end;
end;
Das Formular zum Login oder zum Ändern von Userdaten ist also in der User.dll, Die Daten-Connection wird über das für alle
DLL und EXE gleiche dm_ConDoQMa bereitgestellt.
Dieser Aufbau funktioniert seit Delphi 3 ohne Probleme.
Was ist aus deiner Sicht daran nicht korrekt?
Ich habe mich mit dem Thema
VCL bis jetzt nie wirklich beschäftigt. Hatte ja auch nie ein Problem.
Bis eben jetzt, wo ich erkennen wollte, dass Anwendung1.exe ein Formulat in User.dll aufruft und ich dann mitbekommen will, wenn Anwendung1.exe wieder den Focus bekommt. Beim User.dll ist das kein Problem, da ich mir auch die Daten aus der
DLL hole und damit die Daten nur innerhalb der
DLL aktualisieren muss.
Bei anderen Stammdaten werden die Daten aber nur in der
DLL verwaltet (angelegt oder geändert), aber in Anwendung1.exe in einer Liste angezeigt, d.h. die Anwendung hat eine eigen Verbindung zu der Tabelle. Und die sollte halt auch aktualisiert werden, wenn ich aus XX.dll zurück komme.
Für Aufklärung wäre ich sehr dankbar.
Grüße
Gerd