This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Manipulieren von Notebooks /

Fortgeschrittenes Thema: Ausführen von Notebook-Anweisungen direkt in der BenutzeroberflächeFortgeschrittenes Thema: Die Struktur von Zellen

2.10.6 Taste-Boxen und aktive Elemente in Notebooks

Innerhalb einer Notebook-Zelle lassen sich ButtonBox-Objekte konstruieren, die, wann immer man darauf klickt, bestimmte Aktionen ausführen. Paletten-Tasten, Hyperlinks und andere aktive Notebook-Elemente sind in Mathematica als ButtonBox-Objekte implementiert.

Wird ein ButtonBox-Objekt in eine Zelle eingegeben, wird es sich zunächst genau wie jeder andere Ausdruck verhalten: Durch Anklicken kann man es auswählen, editieren usw. Sobald man aber für die Zelle die Active-Option eingestellt hat, z. B. mit dem Zelle aktiv (Cell Active)-Menübefehl im Menü Zelleigenschaften (Cell Properties), dann wird die ButtonBox aktiv: Klickt man nun darauf, so wird die für die Taste spezifizierte Aktion durchgeführt.

Hier ist eine Taste.

In[1]:= ButtonBox["Expand[SelectionPlaceholder]"] // DisplayForm

Out[1]//DisplayForm=

Wenn die Taste in einer aktiven Zelle erscheint, wird Sie ihren Inhalt jedesmal dann einfügen, wenn Sie angeklickt wird.

Hier ist eine typische Palette.

In dem zur Palette gehörenden Ausdruck entspricht jede Taste einem ButtonBox-Objekt.

Grundlegende ButtonBox-Objekts

Durch die Einstellung der Option ButtonStyle können Vorgaben spezifiziert werden, die dann festlegen, wie ein Knopf dargestellt wird und welche Aktion er ausführen soll. Über die Menübefehle Taste erstellen (Create Button) und Taste bearbeiten (Edit Button) lassen sich einige Standardeinstellungen für ButtonStyle bearbeiten.

Standardeinstellungen für die ButtonStyle-Option

Hier ist der Ausdruck, der zu einer CopyEvaluateCell-Taste gehört.

So sieht die Taste aus.

Hier ist ein Notebook mit einer Auswahl.

Dies geschieht, wenn man anschließend die Taste betätigt.

Optionen, die die Aktion von Tasten beeinflussen

Eine bestimmte ButtonStyle-Einstellung gibt die Werte aller anderen Tastenoptionen vor. Wie im Abschnitt 2.8.11 erläutert wird, beeinflussen diese Optionen die Knopfanzeige. Andere beeinflussen die auszuführende Aktion.

Die Aktion einer Taste wird letztendlich durch die Einstellung der Option ButtonFunction bestimmt. Diese Einstellung gibt die Mathematica-Funktion an, die beim Betätigen der Taste ausgeführt werden soll. In der Regel wird diese Funktion aus einer Kombination diverser Anweisungen zur Manipulation von Notebooks bestehen.

So wird zum Beispiel eine Paste-Taste in seiner Grundform eine ButtonFunction haben, die durch NotebookApply[SelectedNotebook[ ], #]& bestimmt wird, während eine Hyperlink-Taste eine durch NotebookLocate[#2]& bestimmte ButtonFunction hat.

Wird eine Taste betätigt, so werden zwei Argumente an ihre ButtonFunction übergeben. Das erste wird durch ButtonSource und das zweite durch ButtonData spezifiziert.

Bei ButtonData handelt es sich um einen festen Ausdruck, der definiert wird, nachdem die Taste erzeugt wurde. ButtonSource verändert sich dagegen üblicherweise in Abhängigkeit vom Tasten-Inhalt oder von der Umgebung, in der die Taste erscheint.

Mögliche Einstellungen für die ButtonSource-Option

ButtonContents ist in der Regel die Einstellung für ButtonSource einer einfachen Paste-Taste. Das bedeutet: Was auch immer in der Taste angezeigt wird, wird als erstes Argument der Tasten-Funktion übergeben. Die Tasten-Funktion kann dann das Argument nehmen und es an NotebookApply übergeben, wobei es dann in das Notebook eingefügt wird.

Mit einer anderen Einstellung für ButtonSource als ButtonContents können Tasten erzeugt werden, die verschiedene Aspekte ihrer Umgebung in ihre Verarbeitung einbeziehen. So wird zum Beispiel bei der Einstellung ButtonSource->Cell das erste Argument der Tasten-Funktion der Ausdruck sein, der die gesamte Zelle darstellt, in der sich die Taste befindet. Wenn man die Tastenfunktion dieses Ausdrucks manipulieren läßt, kann erreicht werden, daß der Knopf eine globale Wirkung auf die gesamte Zelle hat, zum Beispiel diese umstrukturiert.

Einstellungen für die ButtonEvaluator-Option

Sobald die Argumente für eine ButtonFunction ermittelt wurden und ein Ausdruck konstruiert wurde, stellt sich die Frage, wohin der Ausdruck zur Evaluierung gesendet werden soll. Mit der Option ButtonEvaluator für eine ButtonBox läßt sich dies spezifizieren.

Wenn der Ausdruck eine Reihe von Mathematica-Funktionen enthält, wird man im allgemeinen keine andere Wahl haben, als ihn in einem Mathematica-Kern zu evaluieren. Wenn der Ausdruck aber nur einfache Anweisungen zur Manipulation von Notebooks enthält, ist es möglich, den Ausdruck direkt in der Benutzeroberfläche auszuführen, ohne den Kern dabei einzubeziehen. Dies wird durch Einstellen der Option ButtonEvaluator->None erreicht.

Ausdrücke, die direkt in der Benutzeroberfläche ausgeführt werden können

Die Standard-Notebook-Benutzeroberfläche kann, wie im vorigen Abschnitt erwähnt, nur einen begrenzten Satz Anweisungen handhaben, und zwar all diejenigen, die zum FrontEnd`-Kontext gehören. Diese Anweisungen reichen aber, um alle Aktionen, die mit Standard-Knopfstilen wie Paste, EvaluateCell und Hyperlink verknüpft sind, implementieren zu können.

Beachten Sie, daß selbst ein zur Benutzeroberfläche gesandter Ausdruck nur dann ausgeführt werden kann, wenn er in FrontEndExecute gehüllt ist.

Fortgeschrittenes Thema: Ausführen von Notebook-Anweisungen direkt in der BenutzeroberflächeFortgeschrittenes Thema: Die Struktur von Zellen