AGB  ·  Datenschutz  ·  Impressum  







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

Form in Programm

Ein Thema von arbu man · begonnen am 26. Aug 2005 · letzter Beitrag vom 31. Aug 2005
Antwort Antwort
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#1

Form in Programm

  Alt 26. Aug 2005, 21:19
Hi,
ich habe ein Programm das durch module beliebig erweiterbar sein soll, diese module greifen nicht auf das eigentliche Programm zu sie könnten sogar als eingenständige Anwendungen laufen. Diese Module sollen im Programm auf einer Form angezeigt werden.

Nun meine Frage wie binde ich diese Module am besten/einfachsten in mein Programm ein, einfache exe und dann über setparent oder über DLLs, und dann wie ?

Nach einigen ausprobieren hab ich mich dafür entschieden die module als exe zu speichern und bei dem aufruf das handle der form zu übergeben, im module selber weise ich dann der form eigenschaft parentwindow das übergebene handle zu leider wird das module nicht auf der form angezeigt.
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Form in Programm

  Alt 26. Aug 2005, 23:13
Hast du an das anschliessend ShowWindow gedacht... etwa so:
Delphi-Quellcode:
while Windows.SetParent(AnwH, FormH)=0 do begin end ;
ShowWindow(AnwH, SW_SHOWMAXIMIZED);
Dabei ist AnwH das Handle deines MainForms der Anwendung, die du einbinden willst, und FormH das Handle des Form in deiner Hauptanwendung, in der du die 2. Anwendung anzeigen willst.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#3

Re: Form in Programm

  Alt 26. Aug 2005, 23:28
juhu, die form wird angezeigt, DANKE !!!
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#4

Re: Form in Programm

  Alt 27. Aug 2005, 18:42
Da habe ich mich wohl zufrüh gefreut

Zwar wird die Form nun im Programm angezeigt aber ich kann die Form nicht mehr mit
ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE); Vor der Taskleiste verstecken, wie kann jetzt die Form/Anwendung vor der Taskleiste verstecken?
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Form in Programm

  Alt 28. Aug 2005, 20:10
Zitat von arbu man:
Vor der Taskleiste verstecken, wie kann jetzt die Form/Anwendung vor der Taskleiste verstecken?
Das würd mich auch brennend interessieren, hab nämlich genau dasselbe Problem
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#6

Re: Form in Programm

  Alt 29. Aug 2005, 00:05
Da habe ich was für euch (gefunden)...

stammt aus diesem Thread:

http://www.delphipraxis.net/internal...deletetabentry

Delphi-Quellcode:
unit TaskbarIntf ;
// Code: DelphiPraxis "SCP"

interface
uses
  ComObj,windows;

const
  CLSID_TaskbarList: TGUID = '{56FDF344-FD6D-11d0-958A-006097C9A090}';
type
  ITaskbarList = interface
    ['{56FDF342-FD6D-11d0-958A-006097C9A090}']
       function HrInit: HResult; stdcall;
       function AddTab(hwnd: Cardinal): HResult; stdcall;
       function DeleteTab(hwnd: Cardinal): HResult; stdcall;
       function ActivateTab(hwnd: Cardinal): HResult; stdcall;
       function SetActiveAlt(hwnd: Cardinal): HResult; stdcall;
  end;

 function DeleteTabEntry(Wnd: hWnd) : boolean;

implementation

function DeleteTabEntry(Wnd: hWnd) : boolean;
const
  IID_ITaskBarList: TGUID ='{56FDF342-FD6D-11D0-958A-006097C9A090}';
var
  FTaskbarList: ITaskBarList;
begin
  result := (Wnd <> 0);
  if result then
  try
    FTaskbarList := CreateComObject(CLSID_TaskbarList) as ITaskbarList;
    FTaskbarList.HrInit;
    result := (FTaskbarList.DeleteTab(Wnd) = S_OK);
  except
    On EOleSysError do
      result := false
    else
      raise;
  end;
end;
end.
Aufruf im DLL-Form - FormCreate

  TaskbarIntf.DeleteTabEntry(findwindow('TApplication', nil)); ...und schon ist der Taskbareintrag des DLL-Forms weg ...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Form in Programm

  Alt 29. Aug 2005, 07:25
Danke für deinen Beitrag, Jens. Heisst das, dass die Form in einer DLL vorliegen muss... Das ist leider nicht der Fall... Ich starte einfach eine andere EXE aus meiner Anwendung heraus, und stelle diese innerhalb eines Panels meiner Anwendung dar. Das klappt soweit.

Mit deinem Code krieg ich die Fremdandwendung jedoch nicht aus der Taskleiste weg. ODer was mach ich falsch.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#8

Re: Form in Programm

  Alt 29. Aug 2005, 07:39
Kann ich nicht wirklich sagen.

Ich habe damit die Taskbareinträge meiner DLL-Forms versteckt. Das ging soweit super.

Wenn es mit dem Application Handle nicht funktioniert, versuch doch mal DeleteTabEntry mit dem Form Handle (der zu versteckenden Form) aufzurufen ...
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Form in Programm

  Alt 29. Aug 2005, 08:21
Klappt leider auch nicht, hatte ich bereits probiert.

Naja, so schlimm ists jetzt auch wieder nicht für mich, wenn die Anwendung in der Taskbar sichtbar ist.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#10

Re: Form in Programm

  Alt 31. Aug 2005, 14:05
Hi, ich habe es geschafft, folgender code setzt die form auf das (durch paramstr übergebene panel.handle) Panel und versteckt die anwendung vor der taskleiste

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  if paramstr(1)<>'then begin
    ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE);
    while Windows.SetParent(self.Handle, strtoint(paramstr(1)))=0 do begin end ;
    ShowWindow(self.Handle, SW_SHOWMAXIMIZED);
  end;
end;
Danke an Alle!
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  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 19:43 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