mojaSymfonia FORUM
https://forum.mix-soft.pl/

ExecForm(OnCommands, 0) tryb 0
https://forum.mix-soft.pl/viewtopic.php?f=15&t=1361
Strona 1 z 1

Autor:  jerko [ 2009-11-03, 14:16 ]
Tytuł:  ExecForm(OnCommands, 0) tryb 0

Szukam informacji w temacie. Mozliwości oprogramowania, krótkiego przykładu itp.

Autor:  rafal [ 2009-11-03, 16:13 ]
Tytuł: 

Dokumentacja pisze:

Wartość określająca stan okna dialogu:

1 okno dialogu jest modalne, do chwili zamknięcia tego okna niemożliwy jest dostęp do innych okien programu

0 tryb specjalny, należy samodzielnie zdefiniować procedurę sterującą oknem
- 1 okno dialogu jest niemodalne, możliwy jest dostęp do innych okien programu


W helpie brzmi to ciekawie. Przyłączam się do pytania.

Autor:  byrusia [ 2009-11-03, 16:54 ]
Tytuł: 

tzw formatka interaktywna
bardzo fajna rzecz ale delikatnie rzecz ujmujac "upierdliwa"
czlowiek u nas niezle sie nameczyl zanim to roszyfrowal

w helpie fk mamy opis i przyklad



OnCommand - podprogram


Podprogram standardowo nazwany OnCommand (istotna jest składnia, a nie nazwa, ale najczęściej zachowana jest również nazwa) jest używana w raportach do kontroli działania okna dialogowego, po jego wyświetleniu poleceniem ExecForm. Podprogram powinien zostać zdefiniowany zgodnie z potrzebami okna dialogowego, a następnie podany jako parametr polecenia ExecForm. Sposób wykonania został zaprezentowany w przykładzie do tego opisu.

Przykład
Kod:
Int ch1, ch2, id2, id3, id4, id5

//Zdefiniowanie podprogramu OnCommand z obsługą poleceń Save i Load

Int Sub OnCommand(int id, int msg)

//Zapisanie do zmiennych stanu widocznego w dialogu

If id == id4 Then Save

//Ustawienie stanu elementów dialogu zgodnie ze stanem zmiennych

If id == id5 Then Load

EndSub

//Wyświetlenie dialogu z prezentacją działania poleceń

Form "Zastosowanie poleceń Save i Load", 448, 288

//Pola wyboru do pokazu stanu zmiennych

id2 = ChkBox "Pole wyboru nr 1", ch1, 50, 30, 250, 24

id3 = ChkBox "Pole wyboru nr 2", ch2, 50, 60, 250, 24

//Pole wyboru uruchamiające zapisanie do zmiennych stanu widocznego w dialogu

id4 = Button "&Zapamiętaj stan elementów", 132, 112, 200, 24, 1

//Przycisk uruchamiające ustawienie stanu elementów na podstawie zmiennych

id5 = Button "&Ładuj dane ze zmiennych", 132, 152, 200, 24, 1

Button "&Anuluj", 296, 204, 100, 24, -1

Button "O&K", 72, 204, 100, 24, 2

Int wyjdz = ExecForm OnCommand

//Zakończenie raportu bez prezentowania wyników

If wyjdz != 2 Then Error ""

//Prezentacja wyników do wydruku

If ch1 == 1 then

Print "Pole wyboru nr 1 zostało zaznaczone",LF

Else

Print "Pole wyboru nr 1 nie zostało zaznaczone",LF

EndIf

If ch2 == 1 then

Print "Pole wyboru nr 2 zostało zaznaczone",LF

Else

Print "Pole wyboru nr 2 nie zostało zaznaczone",LF

EndIf

a to jest u nas z mozliwoscia zapisania ( kod jest oczywiscie czesciowy ;P)

Kod:
ExecForm(OnCommandS)
int sub OnCommandS(int id, int msg)
                select case id
                               case 0
                                               id = idnrzlec
                               case idnrzlec, idokrzn, idnrzlec, idmodel, idsernr, idnapr
//                           case idreczn

                               case else
                                               goto kon_sub
                endselect
               
                Save      //zatwierdzam wartości
                if id == idnrzlec then
                               if i_numerzlec   then
                                               Enable(idnrzlece,1)

                                               SetVal(idmodel, 0)
                                               Enable(idmodel,0)
                                               SetVal(idsernr, 0)
                                               Enable(idsernr,0)
                                               SetVal(idnapr, 0)
                                               Enable(idnapr,0)
                                               SetVal(idokrzn, 0)
                                               Enable(idokrzn,0)
                               else
                                               Enable(idnrzlece,-1)

                                               Enable(idmodel,1)
                                               Enable(idsernr,1)
                                               Enable(idnapr,1)
                                               Enable(idokrzn,1)
                               endif
                               Save
                endif

//            if !i_numerzlec then
//                           Enable(idnrzlece,-1)
//            else
//                           Enable(idnrzlece,1)                       
//            endif

                if !i_model then
                               Enable(idmodele,-1)
                else
                               Enable(idmodele,1)
                endif

                if !i_serialno then
                               Enable(idsernre,-1)
                else
                               Enable(idsernre,1)
                endif

                if !i_naprawiajacy then
                               Enable(idnapre,-1)
                else
                               Enable(idnapre,1)
                endif

                if !i_okrzn then
                               Enable(idlpdat,-1)
                               Enable(idodozn,-1)
                               Enable(idddozn,-1)
                               Enable(idodoznt,-1)
                               Enable(idddoznt,-1)
                else
                               Enable(idlpdat,1)
                               Enable(idodozn,1)
                               Enable(idddozn,1)
                               Enable(idodoznt,1)
                               Enable(idddoznt,1)
                endif

                Load      //odświeżam wartości na formatce
                kon_sub:
endsub


mam nadzieje ze to cos pomoze...

Autor:  rafal [ 2009-11-03, 17:00 ]
Tytuł: 

Chyba nie o to chodziło.
To co się dzieje wewnatrz okna jest niezależne od sposobu wyświetlenia okna.

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/