Hallo Leute,
ich habe bei meinem Programm selten genutzte Formulare in
DLL-Dateien ausgelagert.
Nun ist mir aufgefallen, dass wenn ich ein Formular aus der
DLL-Datei aufrufe, dass dieses Fenster separat in der Taskleiste angezeigt wird, was ich aber nicht möchte.
Bevor ich die Formulare in
DLL-Dateien ausgelagert hatte, wurde nur mein Hauptprogramm in der Taskleiste angezeigt, was den Vorteil hatte, wenn man auf das zuletzt geöffnete Formular zurück will, dass man dann nur auf die Anwendung in der Taskleiste klicken musste und schon kahm man auf sein zuletzt geöffnetes Fenster zurück. (Ich hoffe, Ihr versteht mich was ich meine)
Übrigens, in beiden Fällen (zuvor und jetzt in der
DLL), wurde bzw. wird das Formular als "ShowModal" aufgerufen.
Meine Frage:
Was muss ich ändern, damit das aufgerufene Formular aus der
DLL-Datei nicht in der Taskleiste erscheint.
Es soll aber als separates Fenster angezeigt werden und wenn ich in der Taskleiste aus meine Hauptanwendung klicke, dass dann das zuletzt geöffnete Fester angezeigt wird.
Ich hatte auch schon einige Versuche mit Parent und Fenster-
Handle versucht, hat aber irgendwie nie so richtig funktioniert.
Ich hoffe, Ihr die Profis könnt mir da evtl. weiter helfen.
Danke im Voraus!
PS. Die Suchfunktion hatte ich auch schon ausgiebig gequält, hat mir aber auch nicht viel weiter geholfen.
Hier mein Coder zuvor OHNE
DLL-Datei:
Delphi-Quellcode:
procedure TfrmHauptformular.Button1Click(Sender: TObject);
var
Formular: TForm;
begin
Formular := TfrmTest.Create(Self);
try
Formular.ShowModal;
finally
Formular.Free;
end;
end;
Ab hier die neue Version mit
DLL-Datei:
Hier mein Code welcher die
DLL-Datei anspricht:
Delphi-Quellcode:
procedure TfrmHauptformular.Button1Click(Sender: TObject);
var
ProcCall:
procedure;
hDLL: THandle;
begin
hDLL := LoadLibrary('
MeineTestDLL.dll');
if hDLL <> 0
then
begin
try
ProcCall := GetProcAddress(hDLL,'
DLLFormShow');
if Assigned(ProcCall)
then ProcCall
else ShowMessage('
Fehlerhafte DLL!');
finally
FreeLibrary(hDLL);
end;
end
else
ShowMessage('
DLL konnte nicht geladen werden');
end;
Und hier ist der Code in der
DLL-Datei, welche das Formular aufruft:
Delphi-Quellcode:
library MeineTestDLL;
uses
Forms,
SysUtils,
Classes,
Windows,
UnitTest in 'UnitTest.pas' {frmTest};
{$R *.res}
procedure DLLFormShow;
var
dllForm: TForm;
begin
dllForm :=TfrmTest.Create(Application);
try
dllForm.ShowModal;
finally
dllForm.Release;
end;
end;
exports
DLLFormShow;