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 2 von 3     12 3      
marabu

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

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 18:27
Hallo padavan,

du hast doch eine VCL application - warum musst du den Container-Wechsel unbedingt über das Win32 API versuchen? Windows.SetParent() ist nicht ganz dasselbe wie TForm.SetParent(), in der VCL werden da schon noch ein paar Dinge mehr abgewickelt, als bloß ein Handle einzusenden. Die VCL-konforme Lösung hatte ich dir ja schon gegeben.

marabu
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#12

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 18:29
Zitat von marabu:
Hallo padavan,
du hast doch eine VCL application - warum musst du den Container-Wechsel unbedingt über das Win32 API versuchen?
Das frage ich mich schon die ganze Zeit...
Vor allem ist das Suchen eines Fensters nach Namen IMHO nicht sehr schlau, da dir da alles Mögliche unterkommen kann, das genauso heißt. (Zum Beispiel ein Form aus einer anderen Instanz deiner App!)
  Mit Zitat antworten Zitat
padavan

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

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 19:15
Ein Beispiel wäre hilfreich....
  Mit Zitat antworten Zitat
marabu

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

Re: Form nach SetParent wieder lösen

  Alt 29. Jul 2005, 19:23
Wenn dir mein Beispiel von Heute 07:49 Uhr nicht gefällt, dann sag einfach warum nicht und die kriegst ein Neues.

marabu
  Mit Zitat antworten Zitat
padavan

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

Re: Form nach SetParent wieder lösen

  Alt 30. Jul 2005, 13:41
Na weil ich´s nicht gebacken bekommen hab.


Habe dein Codefragment offenbar nicht richtig umsetzen können....
Ich versuch´s aber nochmal. Es ist wahrscheinlich genau das, was ich suche.

Zu der Frage oder den Hinweisen die sich wunderten, weshalb ich dieses Problem mit SetParent versucht hatte --> da ich es nicht besser wusste.

Danke
  Mit Zitat antworten Zitat
padavan

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

Re: Form nach SetParent wieder lösen

  Alt 30. Jul 2005, 13:52
Ich nochmal
Weiß gar nicht, was es da nicht zu verstehen gab.
Hab´s eben nochmal probiert und es klappte auf anhieb.
procedure TMainForm.CaptureButtonClick(Sender: TObject);
Delphi-Quellcode:
begin
  with FloatingForm do
  if Assigned(Parent)
    then Parent := nil
    else Parent := self;
end;
Hab den Felher gemacht und es direkt in meinem Projekt ausprobiert, wahrscheinlich gab´s Seiteneffekte und deshalb ging´s nicht.

Ich wollte die zweite Form halt in einem Panel fangen, welches auf der ersten Form liegt, damit die Reihenfolge der Komponenten, welche ich festgelegt habe auch weiterhin eingehalten wird. Das heißt, die eingefange Form2 soll dann unter umständer nicht im Vordergrund auf Form1 liegen, je nach Zustand.

Also vielen Dank nochmal!
  Mit Zitat antworten Zitat
marabu

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

Re: Form nach SetParent wieder lösen

  Alt 30. Jul 2005, 14:01
Hallo padavan,

die VCL-Lösung ist wirklich einfach. Du kannst sie noch um das eine oder andere feature aufpeppen, wie z.B. Sicherstellung der Sichtbarkeit, Beschränkung auf die client area vom parent, Rahmen wegnehmen beim Einfangen, etc.

Der Code gehört in das Action-Element, mit dem du dann das Einfangen und Lösen der form steuern willst. Die action kannst du dann mit einem button oder menuItem auslösen. Wenn du noch Probleme hast, gib ein Zeichen.

Freundliche Grüße vom marabu

Habe ich jetzt wirklich 10 Minuten für diese paar Zeilen gebraucht? Naja, ich lass den Text mal so stehen, vielleicht ist er ja auch interesant für dich.
  Mit Zitat antworten Zitat
padavan

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

Re: Form nach SetParent wieder lösen

  Alt 30. Jul 2005, 17:28
Vielen Dank das du mir nochmal Hilfe anbietest...
(ein unangenehmes Gefühl, wenn man ständig nerven muss.....)

Das einzige was mir jetzt noch fehlt ist, dass ich die 2te Form in eine Panel auf der 1ten Form fangen kann.
Das hab ich jetzt mal so versucht:

  Form_listview.ParentWindow := Form1.Panel_listview.handle; Aber genau wie bei der SetParent-Sache hab ich auch hier wieder keine Ahnung wie ich´s wieder lösen kann und quasi dem Desktop übergeben kann.
Habe es mit deinem Codefragment versucht:
Delphi-Quellcode:
procedure TMainForm.CaptureButtonClick(Sender: TObject);
begin
  with FloatingForm do
  if Assigned(Parent)
    then Parent := nil
    else Parent := self;
end;
aber da springt dann die Form2 nur zwischen dem Panel in Form1 und der Form1 hin und her.
  Mit Zitat antworten Zitat
marabu

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

Re: Form nach SetParent wieder lösen

  Alt 30. Jul 2005, 20:12
Hallo padavan,

in diesem Forum eine Frage zu stellen muss niemandem unangenehm sein. Du nervst auch nicht. Nerven geht anders...

Im Anhang findest du ein Demo-Projekt, bei dem eine MainForm eine FloatingForm einfängt und auf einem Panel festsetzt. Ich hatte dir schon im letzten Beitrag angedeutet, dass es da vielleicht noch ein paar Dinge zu regeln gibt. Unter anderem willst du gewiss nicht, dass deine Form nach dem Einfangen unsichtbar ist, weil z.B. FloatingForm.Top größer als PinPanel.Height ist...

Schau es dir einfach mal an. Wenn du irgendwas nicht verstehst, dann kann es auch ein Fehler von mir sein. Im Zweifelsfalle einfach nachfragen. Und bedenke es ist nur eine Demo. Aus meiner Sicht fehlt noch Vieles.

marabu
Angehängte Dateien
Dateityp: zip pintest_205.zip (4,7 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
padavan

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

Re: Form nach SetParent wieder lösen

  Alt 30. Jul 2005, 22:08
Hallo marabu,

Mensch, du hast dich ja ganz schön ins Zeug gelegt.
Auf jeden Fall hab auch ich´s jetzt begriffen.
Vielen Dank nochmal

Falls du mal sehen möchtest, wozu es gut war einfach mal den Anhang runterladen und den Dreamplayer starten.
Wenn du dann ein paar Titel reingeladen hast (oben links) kannst du mit dem Button "TAGList" (rechts unten klein und unscheinbar) "deine Starthilfe" bewundern.

Gruß
Padavan

PS: Das Ding ist nicht sonderlich ausgereift, bin noch ein ziemlicher Anfänger, deshalb auch nicht über die gigantisch hohe Versionsnummer wundern
Angehängte Dateien
Dateityp: zip dreamplayer_v7_3_161.zip (1,87 MB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:31 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