AGB  ·  Datenschutz  ·  Impressum  







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

Form nach SetParent wieder lösen

Ein Thema von padavan · begonnen am 28. Jul 2005 · letzter Beitrag vom 1. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23      
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#1

Form nach SetParent wieder lösen

  Alt 28. Jul 2005, 18:34
Guten Abend Delphianer,

ich habe ein Hauptformular auf welchem ich bei Bedarf ein weiteres Fenster öffnen kann.
Ich möchte ein Feature programmieren, dass dieses zweite Fenster in meinem Hauptformular gefangen ist, oder bei Bedarf auch gelöst werden kann.
Das Fangen habe ich so realisiert:

  windows.SetParent(findwindow(nil,PCHar('Form_Listview')),Form1.Handle); Funktioniert auch wunderbar.
Hehe, jetzt weiß ich nur nicht, wie das Formular (welches übrigens zur Laufzeit erst generiert wird) wieder aus meinem Hauptformular lösen kann und es quasi wieder an den Desktop übergebe.

Hat jemand ne Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Form nach SetParent wieder lösen

  Alt 28. Jul 2005, 18:37
Im PSDK steht auch nichts. Aber was passiert, wenn du 0 übergibst als Handle?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Form nach SetParent wieder lösen

  Alt 28. Jul 2005, 18:39
schau doch einfach mal was der parent ist bevor du ihn neu setzt.
Desweiteren kannst du auch einfach machen
FormListView.Parent := Form1;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 06:12
Leider hatte ich kein Glück mit

  windows.SetParent(findwindow(nil,PCHar('Form_Listview')),0); Und wer das Handle vorher hatte, hab ich auch nicht rausbekommen, da mir der dafür passende Befehl noch nicht untergekommen ist..

  GetHandle(... war so ein Ansatz bzw.

  GetParentHandle(... Ein seltsamen Effekt hatte der Versuch mit 0 als Handle übergeben allerdings.
Nachdem ich das Versucht hatte und feststelle, dass es nicht funzt,
habe ich den urspünglichen Zustand wiederhergestellt.
Leider ohne Erfolg, jetzt ließ sich das 2te Formular gar nicht fangen. Eigenartig, oder?

Hab dann langsam an meinem Verstand gezweifelt und es mit einem anderen Formular versucht, welches ich Testweise erzeugt hab - damit ging´s.
Aber das, welchem ich 0 übergeben hab, dass will sich nicht mehr fangen lassen

  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 06:49
Hallo padavan,

wenn es nur um das Einfangen und Freigeben geht, dann würde ich das so machen:

Delphi-Quellcode:
procedure TMainForm.CaptureButtonClick(Sender: TObject);
begin
  with FloatingForm do
  if Assigned(Parent)
    then Parent := nil
    else Parent := self;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 08:04
SetParent liefert dir doch das vorherige Handle zurück
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 08:37
aha,
gut, dann werde ich dass mal checken.


Vielen Dank für die schnellen Antworten
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 12:55
Alternative probiers mit
SetParent(DeinFensterHandle,GetDesktopWindow()); MfG
Ben
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 13:10
desweiteren gibt es auch die Funktion GetParent
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 17:01
leider kein Glück bisher.

Als erstem mal weiß ich jetzt weshalb des SetParent auf einmal nicht mehr ging.
Nach dem ich 0 übergeben hab, als Versuch die Form_listview wieder zu lösen, war auf einmal die Caption gelöscht, das heißt die Form hatte keinen Namen mehr und wurde deshalb auch nicht mehr gefunden. Ich hab die Caption wieder eingeben, aber vergebens, wird wieder gelöscht.
Dann hab ich´s zur Laufzeit zugewiesen immer direkt vor SetParent --> dann gings.

ABER:
Mein ursprüngliches Problem hab ich immernoch nicht lösen können.
Habe folgendes Versucht:

var Handler: HWND //global
Delphi-Quellcode:
procedure zum Fangen
  Handler := Windows.GetParent(findwindow(nil,PChar('Form_Listview')));
  windows.SetParent(findwindow(nil,PCHar('Form_Listview')),Panel_Listview.Handle);
Delphi-Quellcode:
procedure zum Lösen
  windows.SetParent(findwindow(nil,PCHar('Form_Listview')),Handler);
Compilieren geht ohne gemecker, aber leider ohne Funktion leider noch nicht gegeben
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:51 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