Delphi-PRAXiS
Seite 2 von 2     12   

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 Aktives MDIChild nach Schliessen eines MDIChild (https://www.delphipraxis.net/156051-aktives-mdichild-nach-schliessen-eines-mdichild.html)

wolfgang_SV 18. Nov 2010 17:22

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
Ich will es ja auch gar nicht wissen..

Handson wollte es wissen , zumindest hab ich so seine Anfrage verstanden.

Bummi 18. Nov 2010 17:27

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
Dafür weist wenigstens Du was eine MDI-Anwendung ist.:thumb:

wolfgang_SV 18. Nov 2010 17:33

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
ja du doch auch, denk ich.

ich weiß nur nichts mit deinem delphi-code anzufangen..

handson 19. Nov 2010 14:40

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
Der Sinn, wozu ich den Namen brauche ist recht einfach. Unten kurz oberhalb der Statusleiste ist ein TabControl. Für jedes offene MDI mache ich ein Tab auf, so dass man damit durch die einzelnen Childs durchklicken kann. Meine MDI sind immer maximiert und können nicht kleiner gemacht werden, daher kann man nicht anders wechseln.
Nun, wenn sich ein Child schließt, dann bekommt der Tab eine Meldung, dass er sich sich löscht. Das geht, aber ich möchte das Tab für das jetzige aktive Child auch in den Vordergrund bringen , also auch auf Aktiv setzen. Und daran scheitert es momentan bei mir.
Soweit die Problembeschreibung.

Bummi 19. Nov 2010 15:16

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
dann setze das Tab doch im OnActivate der MDI-Children.

Aber die Beschreibung klingt eher so als ob Du eine SDI-Anwendung haben wolltest bei der Forms auf einem Tabsheet gedockt werden...

wolfgang_SV 19. Nov 2010 15:23

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
der Aufruf sendmessage(client,wm_mdigetactive,0,0)
liefert dir das handle des aktiven MDI_childwindows zurück,
wobei client das handle des MDI_clientwindows ist..

handson 30. Nov 2010 08:39

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
Zitat:

Zitat von wolfgang_SV (Beitrag 1062602)
der Aufruf sendmessage(client,wm_mdigetactive,0,0)
liefert dir das handle des aktiven MDI_childwindows zurück,
wobei client das handle des MDI_clientwindows ist..

Irgendwie verstehe ich das nicht richtig... Wieso muss ich das Handle des MDI_clientwindows benutzen, wenn ich doch das als aktives haben möchte?
Kann man denn nicht irgendwie die Haupt-Anwednung fragen, welches seiner MDI's gerade aktiv ist? Gibt es denn nicht irgendein Event, dass ausgelöst wird, wenn gerade ein MDI geschlossen wird?

Guido R. 1. Dez 2010 17:58

AW: Aktives MDIChild nach Schliessen eines MDIChild
 
Hi !

Grundsätzlich hat Bummi hier Recht. Was Du beschreibst ist am Besten über ein TabSheet und gedockte Forms zu realisieren. MDIs sind dann überflüssig und die ganze Problematik stellt sich erst gar nicht.
Wenn Du Dir das einmal ansehen möchtest wie sowas funktioniert, dann such mal in YouTube nach "Delphi Programming Tutorial #32 - Dockable Forms" und "Delphi Programming Tutorial #33 - Dockable Forms 2"

Da Du aber offenbar schon mit den MDIs angefangen hast ...

Die Holzhammer-Methode wäre mit Hilfe tApplicationEvents.OnIdle in Deiner MainForm zu überprüfen, ob sich MainForm.ActiveMDIChild geändert hat. - (Würde ich aber nicht empfehlen)

Alternativ setzt Du den Tab mit dem OnActivate-Event der einzelnen MDI-Children. Schließt Du den aktuellen MDI-Child, bekommt ein anderes (sofern vorhanden) den Focus und löst diesen Event aus.

Solltest Du Zugang zu den TMS-Komponenten haben gibt es noch eine weitere sehr komfortable Lösung :
das tAdvOfficeMDITabSet - Hier fügst Du im Create Deines MDI-Childs den Befehl
Code:
MainForm.AdvOfficeMDITabSet.AddTab(MDIChild);
ein und die Komponente übernimmt alles weitere. Der Tab wird geschlossen, wenn der MDIChild geschlossen wird, Du kannst den Child auch über den Tab schließen etc...

Ich hoffe, das hilft Dir weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.
Seite 2 von 2     12   

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