Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi mehrere Anwendungen in einem Fenster anzeigen. (https://www.delphipraxis.net/146474-mehrere-anwendungen-einem-fenster-anzeigen.html)

yamaha007 20. Jan 2010 15:48


mehrere Anwendungen in einem Fenster anzeigen.
 
Hallo,

wie kann man mehrere Anwendungen gleichzeitig in einem Fenster anzeigen.

z.B. oben links eine Excel Datei, oben rechts ein WordDokument
unten links einen Browser mit Webseite usw

implementation 20. Jan 2010 16:28

Re: mehrere Anwendungen in einem Fenster anzeigen.
 
Du könntest die Handles suchen, und den Fenstern ein neues Parent zuweisen:
Delphi-Quellcode:
var
  Word, Excel: hWnd;
  Thread, WordThread, ExcelThread: Handle;
begin
  // Fenster suchen
  Word := FindWindow(nil,'Fenstertext');
  Excel := FindWindow(nil,'Fenstertext');
  // Parent setzen
  SetParent(Word, Form1.Handle);
  SetParent(Excel, Form1.Handle);
  // Threads suchen
  Thread := GetCurrentThreadID;
  WordThread := GetWindowThreadProcessId(Word,nil);
  ExcelThread := GetWindowThreadProcessId(Excel,nil);
  // Input verknüpfen
  AttachThreadInput(Thread,WordThread,true);
  AttachThreadInput(Thread,ExcelThread,true);
  // Fenster verschieben / Größe setzen
  MoveWindow(Word,0,0,500,500);
  MoveWindow(Excel,500,0,500,500);
  // Child-Style setzen
  SetWindowLong(Word,GWL_STYLE,GetWindowLong(Word,GWL_STYLE) or WS_CHILD);
  SetWindowLong(Excel,GWL_STYLE,GetWindowLong(Excel,GWL_STYLE) or WS_CHILD);
end;
[EDIT]
Falls du auch die Titelleisten weg haben willst:
Delphi-Quellcode:
SetWindowLong(Word,GWL_STYLE,GetWindowLong(Word,GWL_STYLE) and not (WS_CAPTION or WS_BORDER or WS_SIZEBOX));

mkinzler 20. Jan 2010 19:31

Re: mehrere Anwendungen in einem Fenster anzeigen.
 
Oder mit OleContainern

implementation 21. Jan 2010 08:51

Re: mehrere Anwendungen in einem Fenster anzeigen.
 
OleContainer gehen aber nicht mit jeder Anwendung, die müssen dafür schon COM-/OLE-fähig sein.
Wenn es nur um Word, Excel usw. geht, ist OLe wahrscheinlich die bessere Lösung, aber wenn du z.B. auch ein eigenes Programm darin laufen haben willst, wird meine Lösung einfacher.

mkinzler 21. Jan 2010 09:02

Re: mehrere Anwendungen in einem Fenster anzeigen.
 
Seine Nennungen waren als Office-Programme

implementation 21. Jan 2010 09:10

Re: mehrere Anwendungen in einem Fenster anzeigen.
 
Dann wird OLE sicherlich sinnvoller sein.
Meine Lösung hat nämlich noch den Nachteil, das Menüs nicht mehr sichtbar sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 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