AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formulare aus DLL-Dateien anzeigen

Ein Thema von Stefan H. · begonnen am 26. Apr 2005 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
Stefan H.

Registriert seit: 10. Dez 2003
12 Beiträge
 
Delphi 6 Personal
 
#1

Formulare aus DLL-Dateien anzeigen

  Alt 26. Apr 2005, 13:11
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;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Formulare aus DLL-Dateien anzeigen

  Alt 26. Apr 2005, 22:31
ich glaub mit einem der Befehle gings
Delphi-Quellcode:
SetWindowPos(Handle, HWND_TOPMOST, Left,Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
SetWindowLong(Handle, GWL_HWNDPARENT, 0);
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
Das Hauptproblem liegt darin das die forms aus der dll nicht "Application" als Parent haben. Und somit zeigen sie in der Taskleiste das Form an. Wenn du die Forms als ToolWin declarierst dürfte das ganze nicht mehr vorkommen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz