Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   .NET-Sprachen (https://www.delphipraxis.net/82-net-sprachen/)
-   -   Prism Prism XE2.5 - MenuStrip verschwindet nach Programmausführung (https://www.delphipraxis.net/168539-prism-xe2-5-menustrip-verschwindet-nach-programmausfuehrung.html)

MGC 27. Mai 2012 23:10


Prism XE2.5 - MenuStrip verschwindet nach Programmausführung
 
Hallo zusammen,
ich teste gerade Delphi Prism und stolpere beständig über das gleiche Problem.
Lege ich einen MenuStrip an, füge ein Menu und einen Menupunkt (Beenden) hinzu, dann scheint noch alles okay.
Doch fülle ich das Click-Ereignis mit self.Close, dann sind sämtliche MenuStrip-Einträge anschließend in der IDE verschwunden. Obwohl sie im Code noch verfügbar sind, bekomme ich sie einfach nicht mehr angezeigt. Nach erneutem Compilieren sind sie dann auch im ausfgeführten Form weg.

Mache ich etwas falsch oder handelt es sich hier um einen bug? Und wie kann ich diesen ärgerlichen Umstand umgehen?

Schmeiße ich nämlich die entsprechenden Codezeilen manuell raus, bekomme ich die Exe-Assembly gar nicht mehr compiliert.:glaskugel:

Phoenix 29. Mai 2012 07:32

AW: Prism XE2.5 - MenuStrip verschwindet nach Programmausführung
 
Stehen die Menüeintrage im [FormName].Designer.pas - File noch drin?
Die Datei ist für den Designer und zur Laufzeit relevant für alles, was mit dem Form zu tun hat.

Leitet Deine Klasse von was anderem als System.Windows.Forms.Form ab? (Ein bekanntes Problem mit dem WinForms Designer im VS, auf die Idee kommt anscheinend aber auch nur Delphianer).

Wird InitializeComponent in dem Code-Teil der Partial class aufgerufen? (Das ist die Methode im Designer-File, die die ganzen Controls initialisiert).

MGC 29. Mai 2012 21:27

AW: Prism XE2.5 - MenuStrip verschwindet nach Programmausführung
 
Hallo Sebastian,

vielen Dank für Deine Antwort.

Zitat:

Zitat von Phoenix (Beitrag 1168462)
Stehen die Menüeintrage im [FormName].Designer.pas - File noch drin?
Die Datei ist für den Designer und zur Laufzeit relevant für alles, was mit dem Form zu tun hat.

Ja, hier stehen die Menü-Einträge noch drin. Als das große Verschwinden begonnen hat, hab eich nach einigen Versuchen sämtliche Verweise aus der Main.pas und der Main.Designer.pas entfernt. Woraufhin sich die Anwendung gar nicht mehr compilieren ließ.
Habe ich die Einträge drin gelassen und einfach wieder gleichnamige Einträge dem MenuStrip hinzugefügt, wurden diese mit einer 1 am Ende erneut hinzugefügt (was ich auch in gewisser Weise irgendiwe erwartet hatte. Also 1.-Eintrag: dateiToolStripMenuItem / erneuter 2.-Eintrag: dateiToolStripMenuItem1)


Zitat:

Zitat von Phoenix (Beitrag 1168462)
Leitet Deine Klasse von was anderem als System.Windows.Forms.Form ab? (Ein bekanntes Problem mit dem WinForms Designer im VS, auf die Idee kommt anscheinend aber auch nur Delphianer).

Sämtliche von mir verwendeten visuellen Komponenten wurden bisher nur über die IDE eingefügt und keien Ableitung verändert. Hab es auch nochmals geprüft, die Basisklasse ist System.Windows.Forms.Form.

Zitat:

Zitat von Phoenix (Beitrag 1168462)
Wird InitializeComponent in dem Code-Teil der Partial class aufgerufen? (Das ist die Methode im Designer-File, die die ganzen Controls initialisiert).

Ja, wird aufgerufen und steht am Ende der Partial Class
Delphi-Quellcode:
type
  MainForm = partial class
  {$REGION Windows Form Designer generated fields}
  private
    components: System.ComponentModel.Container := nil;
    toolStripContainer1: System.Windows.Forms.ToolStripContainer;  
    tsslARCSatus: System.Windows.Forms.ToolStripStatusLabel;
    ARCstatusStrip: System.Windows.Forms.StatusStrip;
    MainMenuStrip: System.Windows.Forms.MenuStrip;
    toolStrip1: System.Windows.Forms.ToolStrip;
    dateiToolStripMenuItem: System.Windows.Forms.ToolStripMenuItem;
    beendenToolStripMenuItem: System.Windows.Forms.ToolStripMenuItem;
    method InitializeComponent;
  {$ENDREGION}
  end;
Seltsam, spiele nebenher mit der IDE udn heute habe ich den Fehler noch nicht reproduzieren können. Das Menü wurde zwar mal in der IDE nicht mehr angezeigt, war jedoch nach dem compilieren immer wieder vorhanden. Und nach Anklicken der Komponente im Bereich für nicht-visuelle Komponenten, ist der MenuStrip auch im Form-Designer wieder erschienen.
Ich habe noch immer keine Ahnung woher das seltsame Verhalten kam.

Im Form-Designer habe ich bisher nur wenig experimentiert. Taste mich dort erst einmal langsam heran. Allerdings habe ich im Bereich statisches und dynamisches Linken der Assemblies, sowie Assemblies laden mit late Binding bereits viel mehr Zeit invesitiert. Schließlich hat mich für die Portierung meiner Labor-Applikationen die Art der Implemtierung meines Schnittstellensystems in .NET brennend interssiert.
Ich muss schon zugeben, Module lassen sich in .NET mit sehr viel weniger Aufwand in die Kernanwendung einbinden.

Viele Grüße,
Marc

MGC 3. Jun 2012 16:26

AW: Prism XE2.5 - MenuStrip verschwindet nach Programmausführung
 
Das Problem scheint gelöst zu sein. Während mich dieses Verschinden des MenuStrips anfangs regelmäßig heimgesucht hat und dann plötzlich nicht mehr vorkam, habe ich nochmals alle möglichen Änderungen nachverfolgt und festgestellt, dass mehrere Updates im Bereich .NET-Framework und auch Visual Studio direkt vor dem Ausbleiben des Problems installiert wurden.

Möglicherweise hing es damit zusammen.
Dennoch vielen Dank für die schnellen Antworten und Hilfestellungen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 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