Hallo,
Ich suche nach einer Lösung, um beim Erstellen einer Schaltflächenbox innerhalb einer Funktion auf lokale Variablen zuzugreifen. In einem Beitrag hier wurde vorgeschlagen, Variablen dem Window-Namespace zuzuweisen. Ich glaube jedoch nicht, dass dies für die Berichte, die ich erstellen muss, funktioniert, da sie mehrere wiederverwendete Elemente im selben Fenster enthalten.
In meinem Beispiel versuche ich lediglich, die Werte meiner verketteten Liste auszugeben, aber ich werde in den endgültigen Skripten noch viel mehr machen wollen (alle funktionsfähig beim Testen/Schummeln mit globalen Variablen).
// General Component - List Box
make_a_list_box = Function( {list_in},
{Default Local},
l_box = List Box( list_in );
Return( l_box );
);
// General Component - Button linked to a specific list box
linked_button_box = Function( {button_name, target_list_box},
{Default Local},
b_box = Button Box( button_name, Print( target_list_box << Get Items ) ); // Name Unresolved: target_list_box
Return( b_box );
);
// Basic Module - Expect multiple in a shared window
report_module = Function( {list_in, button_name},
{Default Local},
report_list = make_a_list_box( list_in );
report_button = linked_button_box( button_name, report_list );
report = H List Box( report_list, report_button );
Print( report_list << Get Items );
Return( report );
);
// Example Window using multiple modules
New Window( "Test",
V List Box(
report_module( {"A", "B", "C"}, "Letter" ),
report_module( {"1", "2", "3"}, "Number" )
)
);
Sie können das Kontextfeld verwenden.
Names Default To Here(1);
make_a_list_box = Function({list_in},
{Default Local},
l_box = List Box(list_in);
Return(l_box);
);
// General Component - Button linked to a specific list box
linked_button_box = Function({button_name, target_list_box},
{Default Local},
b_box = Context Box(
box:target_list_box = target_list_box,
Button Box(button_name,
Print(box:target_list_box << Get Items)
)
);
Return(b_box);
);
report_module = Function({list_in, button_name},
{Default Local},
report_list = make_a_list_box(list_in);
report_button = linked_button_box(button_name, report_list);
report = H List Box(report_list, report_button);
Print(report_list << Get Items);
Return(report);
);
nw = New Window("Test",
V List Box(
report_module({"A", "B", "C"}, "Letter"),
report_module({"1", "2", "3"}, "Number")
)
);
Write();