Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-04-24, 09:59x



Odpowiedz w temacie  [ Posty: 2 ] 
dynamiczne kontrolki button 
Autor Wiadomość

Rejestracja: 2012-05-27, 20:44
Posty: 11
Post 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.


2013-10-31, 09:57
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 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()

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2013-10-31, 17:04
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 2 ] 
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki wlasne kontrolki w AmBasic

w Programowanie

sebapr

8

5065

2009-04-15, 12:58

sebapr Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Udostępnienie zdarzeń kontrolki .NET w AmBasic

w Programowanie

lucyfer

7

4714

2016-11-04, 01:01

koronen Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. VBA - SBC - własne kontrolki w C# - uruchomiony proces

w Programowanie

andrej

3

2979

2011-08-22, 14:20

andrej Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Kontrolki .NET w formatkach AMBASIC Handel > 2015

w Programowanie

Kartomiotacz

1

2141

2016-12-30, 20:59

rafal Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 9 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant