AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi mehrere Anwendungen in einem Fenster anzeigen.
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Anwendungen in einem Fenster anzeigen.

Ein Thema von yamaha007 · begonnen am 20. Jan 2010 · letzter Beitrag vom 21. Jan 2010
Antwort Antwort
yamaha007

Registriert seit: 16. Jul 2009
17 Beiträge
 
RAD-Studio 2009 Ent
 
#1

mehrere Anwendungen in einem Fenster anzeigen.

  Alt 20. Jan 2010, 16:48
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
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

Re: mehrere Anwendungen in einem Fenster anzeigen.

  Alt 20. Jan 2010, 17:28
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:
SetWindowLong(Word,GWL_STYLE,GetWindowLong(Word,GWL_STYLE) and not (WS_CAPTION or WS_BORDER or WS_SIZEBOX));
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: mehrere Anwendungen in einem Fenster anzeigen.

  Alt 20. Jan 2010, 20:31
Oder mit OleContainern
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#4

Re: mehrere Anwendungen in einem Fenster anzeigen.

  Alt 21. Jan 2010, 09:51
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: mehrere Anwendungen in einem Fenster anzeigen.

  Alt 21. Jan 2010, 10:02
Seine Nennungen waren als Office-Programme
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#6

Re: mehrere Anwendungen in einem Fenster anzeigen.

  Alt 21. Jan 2010, 10:10
Dann wird OLE sicherlich sinnvoller sein.
Meine Lösung hat nämlich noch den Nachteil, das Menüs nicht mehr sichtbar sind.
  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:13 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