∴   Checkbox és rádiógombok használata

             Y/N helyett...

2014.05.02. 18:44

A jól megszokott karakteres képernyő egyik talán kevésbé ismert "grafikus" lehetősége a jelölőnégyzetek és a rádiógombok használata. A fenti videóban ennek egy lehetséges megvalósítását mutatom be. Meg kell mondjam, ezt tényleg csak mint érdekességet mutatom be, 13 évnyi AS/400-as programozói munkám során még sohasem használtam. Ennek oka az, hogy vannak hátrányai. A legnagyobb az az, hogy a védelme (pl. egy adatmódosításkor) elég nehéz. Itt ugyanis nem lehet használni a jól bevált Protect Field-et (DSPATR(PR)). Az SDA ugyan értelmezi és be is lehet rá állítani, de fordításkor hibát jelez,

"Specified keyword not allowed with SNGCHCFLD, MLTCHCFLD or PSHBTNFLD", azaz a megadott kulcsszó nem megengedett SNGCHCFLD, MLTCHCFLD vagy a PSHBTNFLD használatakor.

Persze lehet trükközni, például rekordokra bontani a rádiógombokat és nem EXFMT-t használni, hanem csak WRITE-ot. De mindenkinek azt javaslom, gondolja meg hogy hol, miért használná.

Most azonban nézzünk kicsit bele a programba. Kiválasztottam a 3. rádiógomb sort, ami a képernyőfájlban így néz ki:

     A            F1R3           2Y 0B 12 51SNGCHCFLD((*NUMROW 3))
     A                                      CHOICE(1 &RB031)
     A                                      CHOICE(2 &RB032)
     A                                      CHOICE(3 &RB033)
     A            RB031         10A  P
     A            RB032         10A  P
     A            RB033         10A  P

A NUMROW értéke itt 3, ami azt jelenti, hogy a 3 választási lehetőség egymás alatt fog elhelyezkedni. Ha ezt 2-re állítjuk, akkor az első kettő lesz egymás alatt, a harmadik pedig külön, az első mellett.

Az értékek (RB031..RB033) hossza itt most 10 karakter, de ezt módosítani lehet (és kell is), ha hosszabb a kiválasztható érték. Ezeket a változókat a programban töltjük fel értékekkel.

A SNGCHCFLD (single-choice selection field) kulcsszó mondja meg a programnak, hogy csak egyetlen választás lehetséges.

Az F1R3 változó értéke lesz a kiválasztás eredménye. Ha ez 1, akkor az elsőt választották, míg ha 2, akkor a másodikat, és 3, ha a harmadikat.

A programban másik használt kulcsszó a MLTCHCFLD (Multiple-Choice Selection Field), ahol több értéket is ki lehet választani. Most azonban csak az első választási lehetőséget mutatom be, a többi értelemszerűen hasonló módon működik - csak a számozás emelkedik.

     A                                      CHOICE(1 &CB01)
     A                                      CHCCTL(1 &CB01CHC)
     A            CB15CHC        1Y 0H
     A            CB01          10A  P

Itt a CB01 (10 karakter hosszú) változó lesz a megjelenített érték, míg az eredményt, az esetleges kiválasztást a CB01CHC tartalmazza.

A program kódja itt, a képernyő forráskódjai itt található.

 

A bejegyzés trackback címe:

https://as400programozas.blog.hu/api/trackback/id/tr186097935

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

zummazumm 2014.08.06. 16:25:45

A jó pap is holtig tanul, erről nem is tudtam hogy van.
süti beállítások módosítása