Versteckte FensterHallo, ich habe ein Problem mit JMP-Fenstern, die sich hinter anderen (Nicht-JMP-) Anwendungen öffnen, wenn ich ein Add-In von mir ausführe. Die folgende Abfolge von Schritten zeigt das Problem, wie es auf meinem Laptop auftritt:
- Ich öffne JMP und ich öffne auch einen JMP-Datensatz.
- Ich öffne jetzt eine andere Anwendung (z. B. PowerPoint) und maximiere sie (sodass weder das JMP-Startfenster noch das Fenster mit dem Datensatz sofort sichtbar sind).
- Ich mache etwas in PowerPoint (z. B. eine Folie bearbeiten oder was auch immer), aber dann möchte ich zu meiner Analyse in JMP zurückkehren. Wenn Sie also PowerPoint geöffnet und maximiert lassen, bewege ich meine Maus über das JMP-Symbol am unteren Bildschirmrand und wähle das Fenster mit dem Datensatz aus, den ich analysieren möchte. Dieses Fenster befindet sich jetzt über PowerPoint (obwohl das JMP-Startfenster immer noch ausgeblendet ist hinter Power Point).
- Ich möchte jetzt mein Add-In ausführen und wähle es aus dem Menü oben im Datensatzfenster aus. Als erstes zeigt mein Add-In ein modales Dialogfenster an, in dem ich aufgefordert werde, die Spalten meiner Datentabelle auszuwählen, die ich analysieren möchte. Anschließend klicke ich einfach auf die Schaltfläche "OK", um fortzufahren. Wenn ich das Add-In aufrufe, erscheint tatsächlich das modale Dialogfenster ... aber Sowohl es als auch das Fenster mit dem Datensatz verschwinden sofort hinter PowerPoint (was dem Benutzer den Eindruck vermittelt, dass die Anwendung gerade abgestürzt ist).
Ich stelle fest, dass ich das JMP-Startfenster nach vorne bringe, anstatt das Add-In über das Datensatzfenster zu öffnen zuerst Wenn Sie dann das Add-In in einem der beiden Fenster ausführen, tritt das Problem nicht auf (oder um genau zu sein, verschwindet das Datenfenster immer noch hinter PowerPoint, aber das modale Dialogfenster bleibt oben - und die Ergebnisse der Analyse werden anschließend angezeigt oben auch).
Ich denke, dass die Lösung könnte Fügen Sie vor dem Start der Analyse ein einzeiliges Startskript in das Add-In ein, das das JMP-Startfenster zum aktuellen Fenster macht (dh es vor anderen Anwendungen öffnet, die gerade geöffnet sind), aber ich stelle fest, dass Die Funktion "Fensterliste abrufen" enthält das JMP-Startfenster nicht in der Liste. Daher kann ich nicht so darauf verweisen.
Kann jemand vorschlagen, wie ich das lösen kann? (Ich könnte natürlich allen Benutzern nur sagen, dass sie das Add-In nicht auf die oben beschriebene Weise verwenden sollen, aber ich würde es vorziehen, das Problem möglichst über Skripte zu verhindern.)
Danke vielmals.
DatentabelleSkriptingRe: Versteckte WindowsIch konnte dies unter JMP 15.2.1 unter Windows nicht replizieren.So rufe ich die meisten Fenster in Menüs für Add-Ins auf. Vielleicht gibt es etwas anderes als das, was Sie verwenden?
Innerhalb von addin.jmpcust:
<jm:command>
<jm:name>ABOUT</jm:name>
<jm:caption>About</jm:caption>
<jm:action type="path">$ADDIN_HOME(com.domain.subdomain)\addinAbout.jsl</jm:action>
<jm:icon type="none"></jm:icon>
</jm:command>
und irgendwo in der Datei addinAbout.jsl befindet sich eine New Window () -Funktion.
Re: Versteckte WindowsHallo IH,
Nur zur Bestätigung, ich führe dies in MS Windows aus (ich weiß nicht, ob das gleiche Problem auf einem Mac auftritt) und falls die Version relevant ist, führe ich JMP 15.0.2 aus, sodass meine Version älter ist als Ihre JMP 15.2.1 - aber ich habe Zugriff auf JMP 16EA Version 8 und sehe dort auch das gleiche Verhalten.
Kurz gesagt, wenn das JMP-Startfenster hinter einer vollständig maximierten Nicht-JMP-Windows-Anwendung verborgen ist (ich nenne es einfach "X", da es keinen Unterschied zu machen scheint, um welche Anwendung es sich handelt), wenn hinzugefügt wird -in wird ausgeführt, dann wird jedes vom Add-In erzeugte Ausgabefenster auch hinter X verborgen. Daraus schließe ich, dass das Problem behoben wäre, wenn ich einen Weg finden könnte, das JMP-Startfenster bei jeder Ausführung des Add-Ins sofort in den Vordergrund zu rücken.
Ich habe versucht, die Struktur der von Ihnen geposteten Datei addin.jmpcust mit der Struktur zu vergleichen, die mit dem von mir verwendeten Add-In-Builder generiert wurde, aber meine ist sehr viel länger und ich weiß nicht genau, wonach ich suche, also ich Ich vermute, ich muss eine Version des Add-Ins erstellen, die bis auf den Knochen gekürzt ist, und dann erneut um Hilfe bitten - eine Kopie des JSL-Skripts anhängen -, wenn ich es getan habe.
Ich bin mir sehr bewusst, dass so etwas fast unmöglich zu diagnostizieren ist, wenn es nicht repliziert werden kann. Deshalb melde ich mich zurück, wenn ich etwas Konkreteres zu tun habe.
Vielen Dank für deine Hilfe.
Re: Versteckte WindowsIch habe jetzt das Problem mit den versteckten Fenstern behoben, daher werde ich dieses Problem als behoben markieren, wenn ich dies poste.
Nur für die Aufzeichnung wurde das Problem dadurch verursacht, dass die Datentabelle minimiert wurde (was ich nur für kosmetische Zwecke getan hatte), bevor der Spaltenauswahldialog aufgerufen wurde. Wenn jemand in Zukunft auf ein ähnliches Problem stößt, kann das folgende kurze Skript helfen, die Ursache zu identifizieren. Dies müsste in ein Add-In kompiliert und dann über das Hauptmenü über der Datentabelle aufgerufen werden ( nicht über das JMP-Startfenster), sobald die Datentabelle über die Windows-Taskleiste geöffnet wurde.
Names Default to Here(1);
fnSelectColumn = function({dt}, {default local},
new window("Column Selection", << modal(1),
clb = ColListBox(dt, all, Output = (clb << get selected), << set max selected(1))
);
Output
);
expr_Load_DT = expr(
dt = current data table();
if(type(dt)=="Empty",
dt = open(PickFile( "Select the JMP data set to be analyzed:",, {"JMP Data Files|JMP"} ));
)
);
/*
================
START OF PROGRAM
================
*/
Intro = "There's another full-screen Windows application open right now, and you've just loaded the data table you can see ";
Intro = Intro || "behind this window from the Windows Taskbar, prior to selecting a column for analysis.\!r\!rHowever, the ";
Intro = Intro || "modal window containing the column selection dialog will disappear behind the other Windows application if the ";
Intro = Intro || "data table is minimized prior to the column selection dialog being displayed. (If it hasn't, there's no problem.)";
MinimizeYN = 1;
new window("Minimize the Data Table?", << modal(1),
VListBox(
HCenterBox(BorderBox(TextBox(Intro, << padding(5)), << padding(10), << sides(15))),
SpacerBox(size(0, 10)),
rb = RadioBox({"Minimize the data table after closing this window", "Don't minimize the data table after closing this window"},
MinimizeYN = (2 - (rb << get))
)
)
);
expr_Load_DT;
dt << minimize window(MinimizeYN); // THIS line is the one that causes the problem;
Output = fnSelectColumn(dt);
Caption("(You selected \!"" || Output[1] || "\!")"); wait(1.5); caption(remove);
/*
================
END OF PROGRAM
================
*/