Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Komponente auf fremdem Formular erzeugen? (https://www.delphipraxis.net/85070-komponente-auf-fremdem-formular-erzeugen.html)

E307 25. Jan 2007 14:38


Komponente auf fremdem Formular erzeugen?
 
Hallo zusammen! Kann ich mit Delphi eine Komponente (Bsp. einen Timer oder eine Listbox) auf dem Formular einer anderen Anwendung plazieren, von der ich das Handle kenne? Und wenn ja, wie? :gruebel:

SirThornberry 25. Jan 2007 14:44

Re: Komponente auf fremdem Formular erzeugen?
 
Wie willst du einen Timer dort plazieren? Ein Timer ist in dem Sinne ja nicht an ein Formular gebunden. Was würde dir das bringen? Ansonsten ist es möglich eine Listbox auf einem anderen Fenster zu plazieren.

E307 25. Jan 2007 15:39

Re: Komponente auf fremdem Formular erzeugen?
 
Der Timer war ein blödes Beispiel, wie kann ich eine ListBox o.Ä. auf dem fremden Formular platzieren, wenn ich nur das Handle kenne?

sirius 25. Jan 2007 15:54

Re: Komponente auf fremdem Formular erzeugen?
 
Ist es ein fremder Prozess?

E307 25. Jan 2007 15:57

Re: Komponente auf fremdem Formular erzeugen?
 
Nein, das Fenster wird von einer in mein Projekt eingebundenen DLL erzeugt.

sirius 25. Jan 2007 16:02

Re: Komponente auf fremdem Formular erzeugen?
 
Noch nie gemacht.

Aber mir fallen folgende Möglichkeiten ein:

- die schwierigste ist die API-Variante, also ohne VCL-
Komponenten

- die nächste ist einfach eine Listbox erstellen und das Listbox.parent= dein Handle setzen.
Vielleicht klappts
evtl musst du das Fensterhandle in ein TComponent packen

E307 25. Jan 2007 16:11

Re: Komponente auf fremdem Formular erzeugen?
 
Ich hab mal das versucht, weil meine Komponente (TJvFormMagnen, aus den Jedi-Komponenten) keine Parent-Eigenschaft hat:
Delphi-Quellcode:
AmpMagnet:= TJvFormMagnet.Create(TComponent(XWinHandle));
Ich bekomme eine Zugriffsverletzung, aber keine Fehlerstelle im Quelltext angezeigt.

MrKnogge 25. Jan 2007 16:16

Re: Komponente auf fremdem Formular erzeugen?
 
Sirus sagte das Parent, nicht der Owner.

Gruß

E307 25. Jan 2007 16:18

Re: Komponente auf fremdem Formular erzeugen?
 
Zitat:

Zitat von E307
Ich hab mal das versucht, weil meine Komponente (TJvFormMagnen, aus den Jedi-Komponenten) keine Parent-Eigenschaft hat!

Das teil hat keine PARENT- Eigenschaft!

[edit]Mit anderen Komponenten erhalte ich auch eine Zugriffsverletzung![/edit]

MrKnogge 25. Jan 2007 16:20

Re: Komponente auf fremdem Formular erzeugen?
 
Kannst du das oder ein Beispielprojekt mal anhängen ?
Würde mir die Zugriffsverletzung gern mal genauer ansehen.

E307 25. Jan 2007 16:55

Re: Komponente auf fremdem Formular erzeugen?
 
Ich habe schnell mal ein Demoprojekt erstellt, dass bei jedem mit Delphi2005 und den Jedi-Komponenten laufen sollte. Download Bei dem Projekt geht es um die Verwendung von WinAmp Visualisierungen in eigenen Projekten

E307 26. Jan 2007 15:28

Re: Komponente auf fremdem Formular erzeugen?
 
Wenn sowas garnicht möglich ist, kann ich auch versuchen, den Quellcode der verwendeten DLL zu verändern, allerdings weis ich nicht, ob das geht. Gibt es keine andere Möglichkeit? Wie macht man das mit der WindowsAPI?

[blabla]Mein 100ster Eintrag![/blabla]

E307 26. Jan 2007 21:20

Re: Komponente auf fremdem Formular erzeugen?
 
Kann ich denn das von der DLL erstellte Fenster in mein Fenster integrieren? (Parent?)

ste_ett 26. Jan 2007 22:22

Re: Komponente auf fremdem Formular erzeugen?
 
Einfach mit MSDN-Library durchsuchenSetPArent Parent setzen. :)

E307 27. Jan 2007 12:35

Re: Komponente auf fremdem Formular erzeugen?
 
Delphi-Quellcode:
Windows.SetParent(plghandle, WinVisForm.Handle);
plghandle=Das Fenster, das Child von WinVisForm sein soll

Der Code funktioniert leider nicht! Wenn man aber plghandle und WinVisForm.Handle vertauscht, wird das WinVisForm Child vom plghandle- fenster! Geht das nicht andersrum, so wie es sein soll?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz