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
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...