Hi,
Zitat von
Simon1988:
hey, also Form1.MiniSC.MBMap.Obj ist hierbei ein JObjekt und wurde folgender maßen erzeugt :
...
soweit ich das gesehen habe ist es auch kein fehler aufgetreten .. MBMap wurde erzeug.
Die MBMenuBar (abstammung von der MenuBar in Java) wird nun erzeugt .. dafür muss ich diese MBMap übergeben
Delphi-Quellcode:
...
Obj := jvm.JniEnv.NewObject(
cls, ConstructorMid, [Form1.MiniSC.MBMap.Obj]);
if Obj =
nil then
ShowMessage('
Fehler beim erzeugen der Instanz');
und bei der übergabe oder was auch immer kommt der fehler .. es könnte aber auch sein, dass der fehler nicht an der MBMap liegt , sondern ich einfach keine MenuBar ereugen kann, weil mir ein komponent fehlt .. oder weil ich keine Grafiken erzeugen kann ?! MBMenuBar = Menüleiste
Ja, worin genau dein Fehler liegt kann ich mangels kompeletten Code nicht sagen. Wenn die Erzeugung der MBMap nicht fehlschlägt, dann sollte eigentlich alles geklappt haben. Das dir also die Komponente fehlt ist sehr unwahrscheinlich. Interessanter finde ich hingegen, dass du die Instanz im zweiten Konstruktor aufruf als Form1.MiniSC.MBMap.Obj übergibst, während sie eigentlich nur als Obj angelegt wird. Ob du hier mit einem with Form1.MiniSC.MBMap arbeitest oder die Referenz entsprechend kopierst oder oder oder kann ich natürlich nicht sagen, aber das wäre eine mögliche Fehlerquelle.
An sich sieht es sonst richtig aus. Hab es auch noch mal mit zwei sehr einfachen Klassen getestet (aber das einfach ist egal, entweder es klappt oder eben nicht), keine Probleme. Man kann ein JObject übergeben und es wird (wenn es vom richtigen Typ ist) auch gecastet und funktioniert. Deshalb solltest du wirklich nochmal schauen, was du für einen Parameter du wirklich übergibst. Am besten initialisierst du einfach mal Form1.MiniSC.MBMap.Obj mit nil und schaust halt vor dem Aufruf des Konstruktors der MBMenuBar nach, ob die Variable wirklich <> nil ist.
Gruß Der Unwissende