Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu

Úvod do jazyka OPL (11)

aktualizováno 
Pokračujeme v pokročilejším programování v OPL.

Úvod do jazyka OPL 6/10


Editovatelné hodnoty

Další odstavce budou popisovat příkazy dialogu definující řádky, na kterých můžeme hodnoty měnit. Všechny tyto příkazy mají dva povinné parametry: prvním z nich je jméno proměnné, jejíž hodnota bude použita k inicializaci dialogu a do níž bude při úspěšném ukončení dialogu uložen výsledek. (Úspěšné ukončení dialogu je jakékoliv jiné než klávesou Esc.) Druhým parametrem je "výzva" - text zobrazený vlevo od měněné hodnoty.

Editace textu a hesla

dEDIT promenna$, vyzva$
dEDIT promenna$, vyzva$, delka%

Přejeme-li si mít možnost text na řádku měnit, použijeme příkaz dEDIT. Za tímto příkazem uvedeme jméno řetězcové proměnné, která bude obsahovat editovaný text. Dalším parametrem definujeme výzvu zobrazenou v levém sloupci vedle editovaného textu. Poslední - nepovinný - parametr slouží k nastavení šířky políčka, ve kterém bude text zapisován. (Šířka políčka se uvádí v počtu průměrně širokých znaků.) Srovnejte první a druhý dialog z následujícího příkladu:

INCLUDE "Const.oph"

PROC dialog5:
  LOCAL j$(20), p$(20)
  j$="žádné" : p$="nemá"
  dINIT "První"
  dEDIT j$, "Jméno"
  dEDIT p$, "Příjmení"
  IF DIALOG
    PRINT "Jméno = "; j$; " "; p$
  ENDIF
  REM --- druhý dialog ---
  dINIT "Druhý"
  dEDIT j$, "Jméno", 10
  dEDIT p$, "Příjmení", 10
  IF DIALOG
    PRINT "Jméno = "; j$; " "; p$
  ENDIF
GET
ENDP

Heslo

dXINPUT promenna$, vyzva$

Podobný příkazu dEDIT je i příkaz dXINPUT, který slouží ke vstupu hesla. Tento příkaz má pouze dva parametry - jméno proměnné a text, který bude zobrazen vlevo od ní. Počáteční hodnota proměnné, která následuje za dXINPUT, je ignorována a místo textu se na displeji z důvodu utajení zobrazují pouze hvězdičky. Políčko pro vstup textu má pevnou délku a maximální délka hesla, která může být zadána, je 16 znaků (v souboru CONST.OPH je uvedena konstanta KDXInputMaxLen%).

Políčko k zaškrtnutí

dXINPUT promenna%, vyzva$

Příkazem dCHECKBOX vložíte do dialogu políčko k zaškrtnutí. Za příkazem následuje jméno 16bitové celočíselné proměnné (a%). Při zobrazení dialogu bude políčko zaškrtnuto, pouze bude-li mít tato proměnná nenulovou hodnotu. Bude-li dialog ukončen jinak než klávesou Esc, tak bude do této proměnné uložena hodnota nula nebo jedna podle toho, zda bude čtvereček zaškrtnutý nebo ne.

Vstup čísla

dLONG promenna&, vyzva$, min&, max&
dFLOAT promenna, vyzva$, min, max

Příkazy dLONG a dFLOAT vložíte do dialogu řádek, na kterém můžete zadávat celé číslo nebo číslo s pohyblivou desetinnou čárkou. Za proměnnou, do které bude uložen výsledek (pro dLONG je 32bitová (a&) a pro dFLOAT reálná), a textem výzvy následuje u obou příkazů minimální a maximální povolená hodnota. Jsou-li povolené všechny hodnoty, je nutné použít konstanty KMinFloat, KMaxFloat nebo KMinLong&, KMaxLong& definované v souboru CONST.OPH.

Vstup data

dDATE promenna&, vyzva$, min&, max&

K zadávání data slouží v OPL příkaz dDATE. Datum je uloženo v 32bitové proměnné jako počet dnů od 1. ledna 1900 a parametry tohoto příkazu jsou stejné jako parametry příkazu dLONG, včetně maximální a minimální povolené hodnoty.

Pro převod data na požadované číslo slouží funkce pocet&=DAYS(den%, mesic%, rok%). Obrácený převod 32bitového čísla na datum je možný příkazem SECSTODATE.

PROC vypocet:
  LOCAL suma, od&, do&, ano%, pocet&
  suma=0.0 : ano%=1 : od&=DAYS(DAY, MONTH, YEAR) : do&=od&+28
smycka::
  dINIT "Rozložení na splátky"
  dFLOAT suma, "Celkem", 0.0, KMaxFloat
  dDATE od&, "Od", DAYS(1,1,1950), DAYS(31,12,2100)
  dDATE do&, "Do", DAYS(1,1,1950), DAYS(31,12,2100)
  IF DIALOG=0 : STOP : ENDIF 
  pocet&=(do&-od&)/7
  dINIT "Výsledek"
  dTEXT "Suma", FIX$(suma, 2, 20)
  dTEXT "Počet týdnů", NUM$(pocet&, 20)
  dTEXT "Týdenní splátka", FIX$(suma/pocet&, 2, 20)
  dCHECKBOX ano%, "Další výpočet"
  IF DIALOG=0 : STOP : ENDIF
  IF ano% : GOTO smycka : ENDIF
ENDP


Nejčtenější

Tak bude vypadat letošní nejlevnější iPhone, zepředu připomíná desítku

Render chystaného LCD iPhonu s 6,1palcovým panelem ve společnosti menšího...

Uvedení nových iPhonů se blíží, jejich oficiální odhalení proběhne už za dva měsíce. Víme, že budou tři a alespoň z...

Blesková krádež. Zloději za 30 sekund vybílili obchod Applu

Blesková krádež v kalifornském Apple Storu

Skupina mužů za méně než minutu vykradla před očima zákazníků i personálu obchod Apple Store v kalifornském Fresnu....



Xiaomi pokračuje v dumpingových akcích. Redmi S2 bude za 300 korun

Nová prodejna mobilů v Olomouci přilákala stovky lidí

Agresivní marketing čínské značky v Česku pokračuje. Xiaomi otevírá třetí obchod a tradičně první den nabízí produkty s...

Novinka za 975 korun nahradí smartphone a nepotřebuje dotykový displej

JioPhone 2

Obyčejné mobily nejsou mrtvé. Právě naopak. Jestliže prodeje smartphonů stagnují, nebo na některých trzích dokonce...

Nový supersmartphone vysune kameru a nahrává uživatele bez jeho vědomí

Vivo NEX

V rámci právě skončeného mistrovství světa ve fotbalu byla hrací plocha obklopena panely s reklamami na nový čínský...

Další z rubriky

Aplikace ukazovala otravující čísla. Data kradl antivir přímo z mobilů

Škodlivý kód Cooligan napadá zařízení s Androidem 4 a 5

Zajímavý model vymyslelo studio DU. Jedna jejich android aplikace ukazovala, kdo volá, včetně obtěžujících čísel...

Na dovolené se můžete seznámit i nespálit

Ilustrační snímek

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k...

Sem chodí smartphony umřít. Aplikaci lze použít jen s vybitou baterií

Die With Me

Aplikace s názvem Umři se mnou má velmi neobvyklé omezení. Nemůžete ji zapnout, pokud máte telefon nabitý víc než na...

Najdete na iDNES.cz