![]() |
aktives MDIChild
Eigentlich hatte ich folgendes vor:
Habe in meinem MDIForm ein MainMenu eingefügt. Über dieses werden dann die einzelne Module, als MDIChild, meines Programmes gestartet. Nun wollte ich aber einigen MDIChilds auch ein eigenes MainMenu geben. Dadurch wurde aber das MainMenu meines MDIForm's mit dem MainMenu des aktuellen MDIChild's überschrieben. Somit konnte ich kein anderes MDIChild mehr öffnen. Das war Käse. Also dachte ich mir packst du alle Menu Items in das MainMenu vom MDIForm und aktiviert's bzw. deaktiviert's dann die gewünschten Menu Items. Nun stehe ich aber vor dem Problem wie ich ermitteln kann welches MDIChild gerade aktiv ist. Dazu wollte ich die Eigenschaft ActiveMDIChild benutzen doch mit der klappt das irgendwie nicht. Muss auch sagen das ich die Eigenschaft nicht ganz verstanden haben. Wie weiß ich nun welches MDIChild gerade den Focus hat? |
also das aktive MDIChildwindow bekommt man so heraus:
Code:
if ActiveMDIChild is TEditForm then
TEditForm(ActiveMDIChild)......; |
Vorher sollte man noch überprüfen, ob überhaupt ein aktives MDI Child existiert ;)
Code:
if ActiveMDIChild <> nil then
if ActiveMDIChild is TEditForm then TEditForm(ActiveMDIChild)......; ...:cat:... |
Moin Hawk,
angenommen, Du hast zwei verschiedene MDIChild Formulare, TForm2 und TForm3, dann müsste das so gehen:
Delphi-Quellcode:
procedure TForm1.IrgendEineMethodeVonTForm1(ggf. Mit Irgendwelchen Parametern);
var MDI1 : TForm2; MDI2 : TForm3; begin if (ActiveMDIChild is TForm2) then begin MDI1 := TForm2(ActiveMDIChild); // Mach was mit dem MDI1 exit; end; // Mit MDI2 dann analog zu MDI1 usw. end; |
Hallo,
wenn ich Dich richtig verstanden habe möchtest Du doch nur das Menü des Aktiven MDI-Child Fensters anzeigen. Wenn dem So ist : Verteile in Deinem MDI-Form den Groupindex der Menüpunkte so, das der Groupindex des MDI-Child-Fenster-Menü-Eintrags einen Groupindex Wert bekommt der sich entweder zwischen den Werten des Hauptformulars oder größer als dessen Werte bewegen. Beispiel Menüpunkt Groupindex Datei 0 Bearbeiten 1 Hilfe 3 Dein 1. Childfenster Fenster1 2 Dein 2. Childfenster Fenster2 2 Resultat bei aktivem Childfenster 1 Datei Bearbeiten Fenster1 Hilfe Resultat bei aktivem Childfenster 2 Datei Bearbeiten Fenster2 Hilfe Ich hoffe das war das was Du wolltest. |
Am leichtesten gehst aber mit dem GroupIndex
Im MainMenu des MDIForms die jeweiligen "GroupIndex" der MenuItems setzen (z. B. das erste hat 0, das zweite hat 5) Im MDIChild ein MainMenu erstellen und GroupIndex z. B. auf 2 sezten. Beim aktivieren des jeweiligen MDIChilds sollte dann das MainMenu des MDIForms automatisch gemerged werden. |
... es sollte gemerged werden.
Ich habe da noch das Problem wenn das Menü im Abgeleiteten Formular erweitert wird funktioniert das mit dem mergen nicht mehr richtig. Auch wird dann der Menü-Eintrag 2pixel höher gezeichnet als die anderen. Kennt jemand eine Menü-Komponente die mit MDI-Fenstern richtig funktioniert ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 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