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