DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re: Benutzeroberflaeche - selbstgemacht ?

Matthias Zenker <zenker@XXXXXXX.de> wrote:
> ...
> 
> * eine maske, um text und/oder zahlen eingeben zu koennen.

Tja, leider scheint es (ausser dem unhandlichen Input["comment"]) keine 
einfache benutzer- und programmiererfreundliche Eingabemaske zu geben.
Na ja, vielleicht irgendwann in den naechsten 10 Jahren ... (-:).

Derweil kann man sich mit einem kleinen Trick zumindestens etwas behelfen:

Angenommen ein Benutzer soll Werte in eine Funktion f[x,y,z] eingeben und 
die Funktion soll dann per Knopfdruck ausgefuehrt werden.
Z.B.:
f[x_,y_,z_]:=(test=x+y+z)

Eine (zugegebenermassen etwas umstaendliche) Moeglichkeit ist sich eine
Hilfsfunktion  "ein[commentar, wert]" zu definieren, mit:

Clear[ein];
ein[_,b_]:=b;
ein/:MakeBoxes[ein[any_,b_],fmt_]:=
  TagBox[RowBox[{"\t\t",
        StyleBox[
          RowBox[{TagBox[MakeBoxes[any,fmt],Editable\[Rule]False,
                Selectable->False,DeletionWarning->True],
              StyleBox["=",Editable->False,Selectable->False,
                Deletable->False]}],FontColor\[Rule]RGBColor[0,0.6,0],
          Editable->False,Deletable->False],
        TagBox[MakeBoxes[b,fmt],Editable->True],"\n"}],
    InterpretTemplate[ein[#,#2]&]]

(* *************************************************
Bitte obiges ausfuehren und dann folgende Zelle evaluieren:
Nach Eingabe der Werte in die Platzhalter wird bei Klicken
des OK Knopfs die Funktion f ausgefuehrt und test bekommt
einen Wert zugewiesen.
 ************************************************** *)

nb=NotebookPut[
    Notebook[{
        Cell[TextData[
            "Bitte Werte in die \[Placeholder] Felder eingeben, 
dann auf OK clicken."],"Text"],
        Cell[BoxData[
            "f[ein[x, \[Placeholder]], ein[y, \[Placeholder]], 
ein[z, \[Placeholder]]]"],"Input"],
        Cell[BoxData[
            ButtonBox[StyleBox["OK","Title"],
              ButtonFunction
                \[RuleDelayed](SelectionMove[ButtonNotebook[],After,Notebook];
                  NotebookWrite[ButtonNotebook[],
                    Cell["NotebookClose[InputNotebook[]]","Input",
                      CellOpen\[Rule]False]];
                  SelectionMove[ButtonNotebook[],All,Notebook];
                  SelectionEvaluate[ButtonNotebook[]]),
              ButtonEvaluator\[Rule]"Local"]],NotebookDefault,
          Editable\[Rule]False,Active\[Rule]True,
          TextAlignment\[Rule]Center]}]];
NotebookFind[nb,"Input",All,CellStyle]
mist=FrontEndExecute[{FrontEndToken[nb,"SelectionConvert","StandardForm"]}];

(* ************* *)
Natuerlich ist das nur ein simples Beispiel und nicht das Ei des Kolumbus ...


--

Rolf Mertig
Mertig Research & Consulting,          Amsterdam, Holland
Mathematica training and programming
Development and distribution of FeynCalc 
http://www.mertig.com


Verweise:
Benutzeroberflaeche - selbstgemacht ?
Matthias Zenker, 31.03.1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:44