mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
dynamiczne kontrolki button https://forum.mix-soft.pl/viewtopic.php?f=15&t=5269 |
Strona 1 z 1 |
Autor: | iluvathar [ 2013-10-31, 09:57 ] |
Tytuł: | dynamiczne kontrolki button |
Witam Poszukuje informacji czy z poziomu AmBasic możne stworzyć formularz posiadający dynamiczną listę kontrolek button. Idealnym rozwiązaniem jest sytuacja gdzie każdy z dynamicznych buttonów byłby podpięty pod inną funkcję. Niestety tak się chyba nie da więc spróbowałem w ten sposób ale cały czas dostaje błąd ominięcia definicji zmiennej. Kod: dispatch grid string sTabOpis(4) = "AAA", "BBB", "CCC", "DDD" int iTabClick(4) = 0,0,0,0 record rLoopRec string name_[100] int sub openNewMsg() select case name_ case "AAA" message sTabOpis(1) openNewMsg = 1 case "BBB" message sTabOpis(2) openNewMsg = 2 case "CCC" message sTabOpis(3) openNewMsg = 3 case "DDD" message sTabOpis(4) openNewMsg = 4 case "X" message "Close" openNewMsg = -1 case else message "ERR" error "" endselect endsub endrec int sub Click() message "ClickMe" Click = 2 endsub rLoopRec rLoop(4) rLoop(1).name_ = "AAA" rLoop(2).name_ = "BBB" rLoop(3).name_ = "CCC" rLoop(4).name_ = "X" int sub countButtons(string sOpis, int y, rLoopRec rValue) iTabClick(y) = Button sOpis, 600, 10 + (30 * (y - 1)), 100, 25, rValue.openNewMsg() endsub int sub loopButtons(int iSize) int iLoop for iLoop = 1 to iLoop > iSize countButtons(sTabOpis(iLoop), iLoop, rLoop(iLoop)) next iLoop endsub int sub Window() //Fotmularz form "opis", 800, 300 Control "Grid", grid, 4, 4, 586, 215 //Metoda generująca listę buttonyów loopButtons(size(sTabOpis)) Button "&Anuluj",400, 250, 100, 25, -1 int result = execform(OnCommand) //openNewWindow(result) //Rezultat operacji otwarcia formularza select case result case -1 error "" endselect endsub Int sub OnCommand(Int id, Int msg) endsub Window() Chciał bym aby każdy z dostępnych buttonów pełnił różną funkcję. Prosił bym o informację czy takie rozwiązanie jest wykonalne, może jakiś przykład. |
Autor: | rafal [ 2013-10-31, 17:04 ] |
Tytuł: | Re: dynamiczne kontrolki button |
Jak dla mnie to zbyt wysoki poziom. Nie bardzo byłem w stanie przeanalizować co jest do czego. Proponuję obsłużyć Twoje przyciski w OnCommand() Kod: dispatch grid string sTabOpis(4) = "AAA", "BBB", "CCC", "DDD" int iTabClick(4) = 0,0,0,0 record rLoopRec string name_[100] int sub openNewMsg() select case name_ case "AAA" message sTabOpis(1) openNewMsg = 1 case "BBB" message sTabOpis(2) openNewMsg = 2 case "CCC" message sTabOpis(3) openNewMsg = 3 case "DDD" message sTabOpis(4) openNewMsg = 4 case "X" message "Close" openNewMsg = -1 case else message "ERR" error "" endselect endsub endrec int sub Click() message "ClickMe" Click = 2 endsub rLoopRec rLoop(4) rLoop(1).name_ = "AAA" rLoop(2).name_ = "BBB" rLoop(3).name_ = "CCC" rLoop(4).name_ = "X" int sub countButtons(string sOpis, int y, rLoopRec rValue) iTabClick(y) = Button sOpis, 600, 10 + (30 * (y - 1)), 100, 25, 1 endsub int sub loopButtons(int iSize) int iLoop for iLoop = 1 to iLoop > iSize countButtons(sTabOpis(iLoop), iLoop, rLoop(iLoop)) next iLoop endsub int sub Window() //Fotmularz form "opis", 800, 300 Control "Grid", grid, 4, 4, 586, 215 //Metoda generująca listę buttonyów loopButtons(size(sTabOpis)) Button "&Anuluj",400, 250, 100, 25, -1 int result = execform(OnCommand) //openNewWindow(result) //Rezultat operacji otwarcia formularza select case result case -1 error "" endselect endsub int sub OnCommand(Int id, Int msg) // sprawdzamy od który przycisk został użyty int iLoop for iLoop = 1 to iLoop > Size(iTabClick) if iTabClick(iLoop) == id then message using "Wykonuje Akcje dla przycisku %s" + lf, sTabOpis(iLoop) endif next iLoop endsub Window() |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |