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ší

Nový „levný“ iPhone má být hit. Prodat se ho má 100 milionů

Trojice iPhonů pro rok 2018

Apple chystá na letošní rok tři nové iPhony. Jedním z nich má být levnější model, který nebude mít OLED displej. A...

Vodafone extrémně vylepšuje rodinné tarify. Zadarmo přidává 8 GB a VDSL

Vodafone (ilustrační fotografie)

Není obvyklé, aby operátor výrazně vylepšil tarif a nesáhl na cenu. V případě inovovaných rodinných tarifů Red+ tomu...



Teď přijde řada na naše peníze. V Číně totiž končí zlaté časy

Xiaomi Mi 6

Čínský trh s chytrými telefony je největší na světě, ale loni se podle všeho dostal do potíží. Po letech růstu přišel...

Krásné mechanické chytré hodinky jsou i v menší variantě. Ale ta cena

Značka TAG Heuer představila zmenšenou variantu svých chytrých modulárních...

Švýcarská hodinářská značka TAG Heuer představila zmenšenou variantu chytrých hodinek Connected. Zatímco jejich první...

Lidé si stěžovali na špatný signál. Rušil ho těžař bitcoinů

(Ilustrační snímek)

Newyorští zákazníci amerického operátora T-Mobile si stěžovali na znatelný šum během telefonních hovorů. Ukázalo se, že...

Další z rubriky

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

Za 23 korun vám aplikace fotku z iPhonu ukáže až za tři dny

Netradiční fotoaplikace Gudak vás donutí nad fotkami zase přemýšlet

Vnímání fotografie se za posledních pár let výrazně změnilo. Díky záznamovým médiím již totiž nemusíme přemýšlet nad...

Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené...

Najdete na iDNES.cz