![]() |
MDI Aktionen von Hauptformular an Kind weitergeben
Hallo,
immer wieder merke ich, wie wenig Ahnung ich habe .... :( In einer MDI-Applikation habe ich im Hauptfenster im Menü z.B. einen Menüpunkt "Update" (mit Check-Funktion). Er soll dem aktiven Kindfenster entweder erlauben oder verbieten, neue Zeilen von der Datei einzulesen, wenn die größer geworden ist. Im Child-Formular hab ich bei Type TDMIChild unter public eine Variable update:boolean definiert. Wie kann ich diese vom Hauptfenster aus setzen? Wie ermittle ich das aktive Kind-Fenster? Oder ist es besser, eine Botschaft zu senden, die dann vom aktiven Kind-Fenster umgesetzt wird? (Und wie geht so etwas?). Bei der Erschaffung des Fensters ist es einfach, weil ich dort eine Variable habe, über die ich zugreifen kann: var Child:TMDIChild; begin Child:=TMDIChild.Create... - dann kann ich mit Child.update darauf zugreifen. Aber wie geht das im späteren Verlauf? |
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Den Menüpunkt Update solltest du dem TMainMenu des Kindfensters spendieren. Bei Delphi-MDI-Formularen wird das Hauptmenü des aktiven Kindfensters automatisch in das Hauptmenü des Elternfensters eingefügt. So hältst du zusammen, was zusammen gehört.
|
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Hi,
ja, das ist eine gute Idee. Aber wie funktioniert das sonst? Ich habe im Hauptfenster die Menüpunkte mit einer Aktionlist verbunden. Bei den Menüpunkten "Kopieren,..." etc. funktioniert das doch auch, dass sie irgendwie an das aktive Kindfenster weitergereicht werden. Wie funktioniert das denn? |
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Es gibt eine Eigenschaft ActiveMDIChild oder so ähnlich. Deren Wert kannst du dann casten. Elegant ist das allerdings nicht, weil es durchaus passieren kann, dass du mehrere Typen von Kindformularen hast, die unterschiedliche Aktionen zulassen. Dort wird es dann hässlich, weil du an ganz verschiedenen Stellen Änderungen machen musst, wenn du neue Formulare hinzufügst oder entfernst.
|
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Das Menü des Kindfensters ersetzt das Menü des Hauptfensters.
Heißt das, ich muss alle Menüpunkte des Hauptfensters beim Kind duplizieren? Die sind nämlich weg, sobald das Kindfenster ein eigenes Menü hat. |
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Probleme gibt es meines Wissens nur, wenn Hauptfenster und Kindfenster einen Top-Level-Menüpunkt mit dem selben Namen haben. Es kann natürlich auch sein, dass ich mich da täusche. Schau mal in der Hilfe nach.
|
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Also, das Menü des Kindfensters ersetzt komplett das des Hauptfensters. Menü-Oberpunkte, die das Kindfenster nicht hat, sind danach weg.
Bisher hab ich beim Erstellen der Applikation immer das Grundkonzept von Delphi unter "Datei, neu, Projekte, MDI-Anwendung" verwendet. Das beinhaltet ja schon die wesentlichen Elemente, unter anderem auch eine Toolbar mit Icons. Wenn ich nun dem Kindfenster ein eigenes Menü gebe, dann muss ich auch die Toolbar dorthin transferieren. Ich finde allerdings, dass das nicht so gut aussieht. Scheint aber wohl die einfachste Lösung zu sein. Gibt es nicht auch die Möglichkeit, an das Kind eine Nachricht zu senden, die dann von ihm bearbeitet wird, wenn es den Fokus hat? |
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Zitat:
Das Property GroupIndex steuert wo die Menuitems des Childform im Hautmenue eingeblendet werden. |
Re: MDI Aktionen von Hauptformular an Kind weitergeben
Zitat:
Beispiel: Dein Hauptfenster hat 5 Top-Level-Menüeinträge: Datei (GroupIndex = 0) Bearbeiten (GroupIndex = 1) Noch leer (GroupIndex = 5) Extras (GroupIndex = 8) Hilfe (GroupIndex = 9) Dein MDI-Fenster hat z.B. zwei Top-Level-Menüeinträge: Ansicht (GroupIndex = 2) Spezielle Funktionen (GroupIndex = 5) Dann besteht das zusammengesetzte Hauptmenü aus: Datei (GroupIndex = 0) Bearbeiten (GroupIndex = 1) Ansicht (GroupIndex = 2) Spezielle Funktionen (GroupIndex = 5) Extras (GroupIndex = 8) Hilfe (GroupIndex = 9) Schau dir am besten Mal die Hilfe zur Eigenschaft "GroupIndex" bei Menüs an. [Edit] Ui... zu viel geschrieben... und kein roter Kasten... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 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