Tlačítka v dialogu
dBUTTONS text_1$, klavesa_1%, text_2$, klavesa_2%, ...
Mezi příkazy dINIT a DIALOG jsou postupně definovány jednotlivé řádky dialogu, tak jak na displeji následují pod sebou. Příkaz dBUTTONS definuje tlačítka, která jsou zobrazena pod dialogem nebo vpravo od něj. Může být uveden kdekoliv v definici dialogu. Za tímto příkazem následují vždy dvojice parametrů - první, textový určuje popisek tlačítka a druhý, číselný slouží k označení klávesové zkratky.
Klávesové zkratky příkazu dBUTTONS mohou být uvedeny přímo jako ASCII hodnota znaku uvozená znakem procento (výraz %A má hodnotu 65). Pak je možné tlačítko aktivovat klávesou Ctrl+A. Přičteme-li k ASCII hodnotě písmene konstantu KDButtonPlainKey%, tak bude tlačítko aktivováno přímo klávesou s písmenem A. Použijeme-li konstantu KDButtonNoLabel%, tak tlačítko nebude mít žádnou klávesovou zkratku a nebude možné jeho stisknutí simulovat pomocí klávesnice.
Pro ostatní tlačítka na klávesnici můžeme použít konstanty KDButtonDel%, KDButtonTab%, KDButtonEnter%, KDButtonEsc% a KDButtonSpace%.
V případě, kdy stiskneme Esc, vrací funkce DIALOG hodnotu 0. Pokud dialog ukončíme stiskem nějakého tlačítka, tak je vrácena hodnota odpovídající ASCII kódu klávesové zkratky asociované s tlačítkem (bez Ctrl). Příklad použití jednoduchého dialogu, který obsahuje jenom tlačítka:
INCLUDE "Const.oph" PROC dialog: LOCAL d1% dINIT "Co má program dělat" dBUTTONS "Akci A", %A, "Věc V", %V+KDButtonPlainKey%, "Skončit", KDButtonDel% d1%=DIALOG IF d1%=%a OR d1%=%A PRINT "Akce A"; ELSEIF d1%=%v OR d1%=%V PRINT "Věc V"; ELSEIF d1%=KDButtonDel% PRINT "Stisknuto Del - konec"; ELSE PRINT "Stisknuto Esc"; ENDIF PRINT ", vrácená hodnota je ", d1% GET ENDP
Statický text
dTEXT vlevo$, vpravo$ dTEXT vlevo$, vpravo$, atributy%
Na řádcích dialogu může být uveden text. K tomuto účelu slouží klíčové slovo dTEXT, za kterým následují dva řetězce: první bude zobrazen na řádku vlevo, zarovnán s ostatními popiskami řádků a druhý bude zarovnán vpravo s ostatními editovanými parametry. Je-li první z těchto řetězců prázdný, bude druhý z nich zobrazen přes celý řádek.
dTEXT může mít ještě třetí, numerický parametr upřesňující chování řádku s textem. Přidáme-li jako třetí parametr konstantu KDTextLineBelow%, tak bude řádek podtržen. Pokud je první parametr dTEXT prázdný řetězec, můžeme měnit zarovnání druhého parametru na řádku (můžeme použít konstanty ze souboru CONST.OPH KDTextLeft%, KDTextRight% a KDTextCentre%).
Pokud uvedeme jako první i druhý parametr dTEXT prázdný řetězec a třetím parametrem bude konstanta KDTextSeparator%, tak bude místo textu řádku nakreslena oddělující čára.
INCLUDE "Const.oph" PROC dialog3: LOCAL a$(10), b : a$="text..." : b=10.256 dINIT "Informace" dTEXT "Proměnná a$", a$ dTEXT "Proměnná b", FIX$(b, 2, 10) dTEXT "","",KDTextSeparator% dTEXT "Dnešní datum", DATIM$ dBUTTONS "Zpět", KDButtonEsc% DIALOG ENDP
Poslední konstanta, kterou je možné v příkazu dTEXT použít, je KDTextAllowSelection%. Řádek, na kterém je tato definice uvedena, je možné zvýraznit; po stisknutí Enter vrátí příkaz DIALOG číslo právě zvýrazněného řádku. To umožňuje například napsat následující program pro výběr z nabídky:
INCLUDE "Const.oph" PROC dialog4: LOCAL d% dINIT "Hlavní nabídka" dTEXT "Udělat A", "...první akce", KDTextAllowSelection% dTEXT "Dvě", "...druhá akce", KDTextAllowSelection% dTEXT "Konec", "...skončit", KDTextAllowSelection% d%=DIALOG PRINT "Výběr "; d% : GET ENDP