![]() |
TMDIApp - Geisteranwendung?
Hallo,
also ich bin total verwirrt. Wenn ich in Delphi 2005 (oder auch in Delphi 6) diese Demo TMDIApp erstellen lasse, dann kommt da ja so ein kleiner halbfertiger MDI Texteditor. Das verrückte ist aber das obwohl bei im Dateimenü z.B. bei "Close" oder im gesamten "Windows" Menü KEIN code hinterlegt ist, funktionieren diese Menüeinträge. Wie kann das sein? |
Re: TMDIApp - Geisteranwendung?
Das müsste mit der TActionList erledigt werden.
Schau mal bei der Eigenschaft Action, da ist was eingetragen. Wenn du die Actions anschaust, wirst du bemerken, dass es eine Action namens FileExit1 gibt, bei der im OnExecute-Ereignis was eingetragen ist -> close; Damit wird das fenster geschlossen genauso bei den anderen Menüpunkten, bei den kein OnClick abgefragt wird. |
Re: TMDIApp - Geisteranwendung?
Zitat:
|
Re: TMDIApp - Geisteranwendung?
Im Menü der Application gibts im File-Untermenü ein ExitFileItem-Menüeintrag. Dort ist ein Eintrag Action, der Rot gekennzeichnet ist. Dort ist auch was eingetragen: FileExit1
FileExit1 ist eine Action, die der ActionList1 angehört. FileExit1 hat im OnExecute-Event das close stehen. Wenn ich das ausklammere, die Application nochmal kompiliere und ausführe, gehts nicht mehr zu. Wenn nun auf das Item geklickt wird, wird die Action ausgeführt, also auch das OnExecute-Ereignis aufgerufen, und somit das close ausgeführt. Also nix mit Geistertechnik, sondern reine VCL-Spielereien ;) |
Re: TMDIApp - Geisteranwendung?
ist ja alles richtig, ich beziehe mich aber nicht auf FileExit, sondern auf FileClose ... und das hat im OnExecute-Event GARNICHTS stehn und funktioniert trotzdem!?!?!
|
Re: TMDIApp - Geisteranwendung?
Oh, ok
Bis bei auf den wenigsten Actions ist ein OnExecute implementiert. Das kommt daher, weil es nicht Standard-Actions sind, sonder 'spezifische'. Wenn du in der ActionList schaust, kannst du normale und vorgefertigte Actions einfügen. Diese führen dann den Code z.B. zum schließen des Fensters, anordnen der Children ect. ohne das OnExecute aus. Das müsste der ganze 'Trick' sein. Compiler-Magics sind da ziemlich sicher nicht dahinter. |
Re: TMDIApp - Geisteranwendung?
Sowas nennt man auch OOP. :mrgreen:
Oft verwendeten Code in Klassen zu verpacken, damit man sich nicht immer und überall einen Wolf tippt... |
Re: TMDIApp - Geisteranwendung?
Zitat:
|
Re: TMDIApp - Geisteranwendung?
Ob MDI oder SDI erkennt man anhand des FormStyles (fsMDIChild, fsMDIForm ect.)
Welches MDI-Form erkennt es dann durch das Parent (was wahrscheinlich fsMDIForm sein muss) und die Eigenschaft ActiveMDIChild. Falls du mehr als eine Personal Edition deiner Delphi-Version hast, kannst du im fall per Strg+Click durch den Quellcode "surfen" ;) |
Re: TMDIApp - Geisteranwendung?
Zitat:
Das hätte übrigens die Frage unnötig gemacht, da Source code mehr sagt als 1.000 Worte. :zwinker: Ich habe hier gerade kein Delphi installiert, aber ich denke mal einfach, dass sie die Standard Methoden/Properties der VCL verwenden. Also Application.MainForm.ActiveMdiChild, Application.MainForm.Cascade,... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 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 by Thomas Breitkreuz