DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re: Grundlagen: Erstellen eines Notebooks mit Abfragen der Variablen.

  • From: Rolf Mertig <rolf@XXXXXXX.com>
  • Organization: Mertig Research & Consulting
  • Subject: Re: Grundlagen: Erstellen eines Notebooks mit Abfragen der Variablen.
  • Date: Sat, 05 Dec 1998 21:33:09 +0100
  • To: Heiko Westphal <westphal@XXXXXXX.de>
  • Cc: dmug@XXXXXXX.ch
Heiko Westphal wrote:
> 
> Ich bin erst seit kurzem Mathematica-User, hoffe aber trotzdem, dass
> sich Einer erbarmt,  mir zu helfen.
> 
> Ich moechte gerne ein Notebook erstellen, dass mich  auf "Knopfdruck"
> (Button) nach den Variablen abfragt; diese dann uebernimmt und das
> Notebook dann neu berechnet.
> Dabei sollen teilweise Ergebnisse in andere Variablen uebergeben werden,
> die dann in anderen Berechnungen (aber im selben Notebook) auftauchen.
> 
> Desweiteren moechte ich gerne wissen ob eine Moeglichkeit besteht
> griechische Symbole oder Vaiable mit Index zu benutzen.
> 
> Ein Beispiel-Notebook sehr, sehr nett.
> 
> Mit bestem Dank im voraus
> und froehlichen Nikolaus
> 
> Heiko Westphal
> 
>   ------------------------

Lieber Herr Westphal,
bitte probieren Sie untiges notebook mal aus.
Es ist nichts besonderes, aber vielleicht als 
Ausgangspunkt hilfreich. 

MfG,
       Rolf Mertig

-----------------------------
Dr. Rolf Mertig
Mertig Research & Consulting  
Mathematica training and programming
Amsterdam, The Netherlands
http://www.mertig.com
-----------------------------


Notebook[{

Cell[CellGroupData[{
Cell["Front End Template Maker", "Title"],

Cell["Experimental code by rolf@XXXXXXX.com", "Subtitle"],

Cell["Version 0.01 ; December 1998", "Subsubtitle"],

Cell[CellGroupData[{

Cell["FETemplate", "Section",
  GeneratedCell->True],

Cell[CellGroupData[{

Cell["code", "Subsection"],

Cell["\<\
Options[FETemplate] = 
   {PromptCellStyle -> 
     {\"Subsection\", CellDingbat -> None, CellMargins -> {{8,
Inherited}, \
{2, 4}}, Editable -> False}, 
    FETemplateNotebookOptions -> 
     {Background -> GrayLevel[0.8], ShowCellBracket -> False, 
      WindowElements -> {\"HorizontalScrollBar\", \"VerticalScrollBar\",
\
\"MenuBar\"}, 
      WindowMargins -> {{Automatic, 1}, {Automatic, 2}}}, 
    FETemplateTitle -> 
     Cell[\"Input Variables\", \"Subsection\", TextAlignment -> Center,
\
CellDingbat -> None, 
      Editable -> False], FETemplateButton -> 
     Cell[BoxData[GridBox[{{ButtonBox[StyleBox[\" OK \", \"Subtitle\"], 
           RuleDelayed[ButtonFunction, OKFunction[]]], 
          ButtonBox[StyleBox[\" Close \", \"Subtitle\", Rule[FontColor,
\
RGBColor[0.7, 0, 0]]], 
           RuleDelayed[ButtonFunction,
NotebookClose[ButtonNotebook[]]]], 
          ButtonBox[StyleBox[\" Help \", \"Subtitle\"], 
           RuleDelayed[ButtonFunction,
NotebookPut[$FETemplateHelp]]]}}]], \
\"Text\", Editable -> False, 
      Active -> True, ButtonBoxOptions -> 
       {ButtonEvaluator -> Automatic, Active -> True, Background -> \
RGBColor[0.13, 0.4, 0.4]}, 
      TextAlignment -> Center]}; \
\>", "Input",
  InitializationCell->True],

Cell["\<\
OKFunction[] := (Cases[First[NotebookGet[ButtonNotebook[]]], 
        Cell[BoxData[_], ___, TaggingRules :> {_ -> _String}, ___], -1]
/. 
       Cell[a_, ___, TaggingRules :> {_ -> s_String}, ___] :> 
        Append[ToExpression[s, StandardForm, Hold],
First[MakeExpression[a, \
StandardForm]]] /. 
      Hold -> Set; $ExtraFunction); \
\>", "Input",
  InitializationCell->True],

Cell["\<\
$FETemplateHelp = Notebook[{Cell[\"Enter values into the white \
fields, then press the OK button\", 
      \"Text\"]}, WindowSize -> {FitAll, FitAll}]; \
\>", "Input",
  InitializationCell->True],

Cell["\<\
FETemplate[{entries__String, r___}, opts___Rule] := \
FETemplate[{{entries, r}}, opts]; \
\>", "Input",
  InitializationCell->True],

Cell["\<\
FETemplate[pr:{{_String, _String, ___}..}, opts___Rule] := 
  Block[{but, title, nbo, promptcellstyle}, 
   promptcellstyle = Sequence @@ Flatten[{PromptCellStyle /. {opts} /. \
Options[FETemplate]}]; 
    but = FETemplateButton /. {opts} /. Options[FETemplate]; 
    nbo = Sequence @@ Flatten[{FETemplateNotebookOptions /. {opts} /. \
Options[FETemplate]}]; 
    title = FETemplateTitle /. {opts} /. Options[FETemplate]; 
    NotebookPut[Notebook[Append[Prepend[Flatten[Table[{Cell[pr[[i,1]], \
promptcellstyle], 
           Cell[If[Length[pr[[i]]] === 2, BoxData[\"\"],
BoxData[pr[[i,3]]]], \
\"Input\", 
            TaggingRules -> {\"variable\" -> pr[[i,2]]}, CellFrame ->
True, 
            CellMargins -> {{9, Inherited}, {4, 0}}, Background -> \
GrayLevel[1], 
            CellTags -> \"EnterCell\"]}, {i, Length[pr]}]], title],
but], \
nbo, 
      WindowSize -> {FitAll, FitAll}]]]\
\>", "Input",
  InitializationCell->True]
}, Open  ]],

Cell[CellGroupData[{

Cell["Examples", "Subsection"],

Cell[CellGroupData[{

Cell[" 1", "Subsubsection"],

Cell["FETemplate[{\"var1\", \"x\", 4}]; ", "Input"],

Cell["x", "Input"],

Cell["\<\
After clicking on \"OK\", the variable x gets the value 4 (or \
whatever is put in place of 4).
In order to execute an extra function (after the assignment x=4), give a
\
value to $ExtraFunction.\
\>", "Text"],

Cell["\<\
For example, if you wish to evaluate the notebook with the
new input parameters, you could copy the following into an Input Cell
into \
your notebook:\
\>", "Text"],

Cell["\<\
diesesnotebook = InputNotebook[]; 
$ExtraFunction := (SelectionMove[diesesnotebook, All, Notebook]; \
SelectionEvaluate[diesesnotebook]); \
\>", "Text"],

Cell["To generate a button you can evaluate, e.g. :", "Text"],

Cell["\<\
CellPrint[Cell[BoxData[ButtonBox[StyleBox[
      \\(enter var1\\), \"Section\"], 
     ButtonFunction :>
      FETemplate[{\"var1\", \"x\", 4}], 
     ButtonEvaluator-> Automatic]], 
   NotebookDefault, Active -> True]]\
\>", "Input"]
}, Open  ]],

Cell[CellGroupData[{

Cell[" 2", "Subsubsection"],

Cell["\<\
FETemplate[{{\"var1\", \"x\"}, {\"var2\", \"y\", \"42.6\"}, {\"var3\
\", \"z\", \"\\\"string\\\"\"}}]; \
\>", "Input"],

Cell["Here no default value for x is given.", "Text"],

Cell["InputForm[{x, y, z}]", "Input"]
}, Open  ]]
}, Open  ]]
}, Open  ]]
}, Open  ]]
},
FrontEndVersion->"X 3.0",
ScreenRectangle->{{0, 1152}, {0, 864}},
WindowSize->{548, 470},
WindowMargins->{{91, Automatic}, {Automatic, 79}},
Magnification->1
]


Verweise:
Grundlagen: Erstellen eines Notebooks mit Abfragen der Variablen.
Heiko Westphal, 05.12.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