Delphi-PRAXiS

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/)
-   -   Prism Exception beim Erstellen eines Menüs (https://www.delphipraxis.net/71756-exception-beim-erstellen-eines-menues.html)

Alexander 20. Jun 2006 18:07


Exception beim Erstellen eines Menüs
 
Hallo,
ich erstelle dynamisch ein Submenü, bevor dieses aufpoppt. Beim ersten Anzeigen geht das auch gut, dann klicke ich ein Item an und das Menü geht logischer Weise wieder zu. Beim zweiten Anzeigen, kommt es dann zu der Exception:
Zitat:

Der Objektverweis wurde nicht auf eine Objectinstanz festgelegt.
Der Fehler tritt nicht auf, wenn ich das Click-Event des Sub-Items leer lasse.
Aber auch eine try-except Behandlung nützt im Click-Event nichts :?. Der Fehler tritt dennoch auf.

Hier mal der Source:
Delphi-Quellcode:
procedure TMainFrm.MenuItem21_Popup(sender: System.Object; e: System.EventArgs);
var
  filelist : StringCollection;
  i : Integer;
  anItem : MenuItem;
begin
  filelist := LastFiles.TLastFile.getFileList(System.IO.Path.GetDirectoryName(Application.ExecutablePath) + '\settings.xml');
  if (filelist <> nil) then
  begin
    MenuItem21.MenuItems.Clear;
    for i:=0 to filelist.Count-1 do
    begin
      anItem := MenuItem.Create(filelist[i], MenuItemLastFiles_Click);
      MenuItem21.MenuItems.add(anItem);
    end;
  end;
end;

procedure TMainFrm.MenuItemLastFiles_Click(sender: System.Object; e: System.EventArgs);
begin
  try
    if (Sender <> nil) then
      MDIHelper.TMDIHelper.CreateMDIChild((Sender as MenuItem).Text, Self, Self.LView_Dok);
  except
     on ex: Exception do MessageBox.Show(ex.message, 'Fehler');
  end;
end;
Den Fehler kann ich übrigens beliebig oft reproduzieren. Außerdem scheinen beide Methoden durchzulaufen, erst danach tritt der Fehler auf. Das Debugging klappt leider auch nicht so super, da jedes Mal bei der Rückkehr zu Delphi (zum Debugging) das Submenü des Mainmenüs wieder geschlossen wird. Und der Fehler tritt ja nur auf, wenn ein Item angeklickt wurde :roll:

Es weiß nicht zufällig, warum dieser Fehler auftritt?

Nachtrag: Die FileList ist übrigens i.O.. Der Fehler tritt auch nicht in der CreateMDIChild-Methode auf...

RavenIV 21. Jun 2006 08:32

Re: Exception beim Erstellen eines Menüs
 
die Definition von TMainFrm.MenuItemLastFiles_Click sieht für mich arg seltsam aus.
Ich kenne "Sender" bisher als TObject.

xaromz 21. Jun 2006 08:46

Re: Exception beim Erstellen eines Menüs
 
Hallo,
Zitat:

Zitat von RavenIV
die Definition von TMainFrm.MenuItemLastFiles_Click sieht für mich arg seltsam aus.
Ich kenne "Sender" bisher als TObject.

wir sind hier bei .Net, da gilt: System.Object = TObject.

Gruß
xaromz

RavenIV 21. Jun 2006 09:17

Re: Exception beim Erstellen eines Menüs
 
Zitat:

Zitat von xaromz
wir sind hier bei .Net, da gilt: System.Object = TObject.

ups. Das .net hab ich total übersehen.
dann nehme ich alles zurück und halte mich raus.

Alexander 25. Jun 2006 14:33

Re: Exception beim Erstellen eines Menüs
 
Geht hier ja wirklich um .NET. Was könnte ich denn falsch gemacht haben?

Khabarakh 25. Jun 2006 14:45

Re: Exception beim Erstellen eines Menüs
 
Hm, wird denn keine Codezeile vom Debugger markiert, wenn die Exception geworfen wurde?

Alexander 25. Jun 2006 14:58

Re: Exception beim Erstellen eines Menüs
 
Nicht wirklich. Er markiert schlauer Weise "Application.Run(TMainFrm.Create);" in der DPR :?...
Kann man also eigentlich vergessen...


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