E$LIB - Functietoetsen gebruiken en programmeren
Herkenning
De routines in E$LIB ondersteunen het gebruik van functietoetsen onder Microsoft Windows en met VT*-terminal(emulatie)s in 7- of 8-bits modus.
Hiermee komt een wereld van nieuwe mogelijkheden naar je toe. Het wordt nu tijd om 'event-loop' achtig te gaan programmeren, want dat maakt de overgang naar het programmeren van 'Microsoft Windows'-look-and-feel veel makkelijker.
In de toekomst zal naast E$LIB een bibliotheek ontstaan die zelf geen inname meer doet maar dit overlaat aan de Toolkit. Hoe dat vorm gaat krijgen is in onderzoek.
Onderstaande afkortingen worden in alle handleidingen gebruikt:
- CUP = Cursor UP toets
- CDN = Cursos DOWN toets
- CLE = Cursor LEFT toets
- CRI = Cursor RIGHT toets
- PUP = Page UP toets
- PDN = Page DOWN toets
- CTRL/xx = Toets xx met tegelijkertijd de CONTROL toets ingedrukt.
In- of uitschakelen
Het gebruik van de functie-toetsen kan in- en uitgeschakeld worden door de common variabele e$usr_fkys op 0 (uit) of 1 (aan) te zetten.
Verschillen
Er zijn verschillen per soort gebruik. Intern wordt elke toetsaanslag, ook die van een VT-terminal of emulator, geconverteerd naar een MS-Windows/MS-DOS toetscode.
Werk je met een èchte VT-terminal, zet dan in de COMMUNICATIONS SET-UP het derde veld in de derde rij op 'UNLIMITED TRANSMIT'. Anders werkt E$LIB niet.
Hieronder volgt een lijst met toetsen die sowieso niet worden ondersteund:
- Application-keypad keys
- F10 (= Synergy/DBL)
Hieronder volgt een lijst met functietoetsen die met een VT-terminal(emulator) niet beschikbaar zijn gewoonweg vanwege de VT-interface:
- F1 (= Hold Screen) [vervanger: PF1]
- F2 (= Print Screen) [vervanger: PF2]
- F3 (= Setup) [vervanger: PF3]
- F4 [vervanger: PF4]
- F5 (= break)
- F6 (= CTRL/Y)
- F21 t/m F36
- SHIFT + Besturingstoetsen (FIND, SELECT, REMOVE, PREV_SCREEN, etc.)
- CTRL + Besturingstoetsen (FIND, SELECT, REMOVE, PREV_SCREEN, etc.)
Hieronder volgt een lijst met functietoetsen die onder Microsoft Windows niet beschikbaar zijn:
- F22 (= SHIFT/F10 = Synergy/DBL)
- F28 t/m F30
- F34 (= CTRL/F10 = Synergy/DBL)
Hieronder volgt een lijst met toetsen die onder Microsoft Windows beschikbaar zijn en die gelijk aan elkaar zijn:
- CTRL/Home = SHIFT/F4
- CTRL/End = SHIFT/F2
- CTRL/PgDn = SHIFT/F3
- CTRL/F4 = F7
- CTRL/F5 = F8
- CTRL/F6 = F9
- RETURN = KEYPAD/ENTER
Programmeren
Er zijn twee manieren om om te gaan met functietoetsen binnen je programma omdat er twee soorten common variabelen aanwezig zijn:
Een array van 36 elementen (D1) die elk een F-toets vertegenwoordigen. Hiermee kan snel en efficient getest worden op ingave van een toets:
xcall e$text (03026, klantcode, 1)
if F03.or.F12 exitloop
if F04 call ZoekKlant
Een variabele e$_chr die is opgedeeld in twee kleinere eenheden, te weten ck (controlling key) en ky (key). De controlling key is 1 als SHIFT is gebruikt en 2 als CTRL is gebruikt. Deze registratie vindt ook plaats voor toetsen die al een ASCII waarde hebben zoals de hoofdletters (eigenlijk SHIFT-<kleine letter>) en de CTRL/A (001) t/m de CTRL/Z (026) toetsen. Met e$_chr kan een using-select worden opgebouwd:
xcall e$text (03026, klantcode, 1)
using e$_chr.ky select
(K_PF3, K_F12), exitloop
(K_PF4), call ZoekKlant
endusing
Geprogrammeerde functietoetsen
e$yesno
ESC = Zelfde als het intoetsen van een N of een NUL F03 = Zelfde als het intoetsen van een N of een NUL F12 = Zelfde als het intoetsen van een N of een NUL
e$smenu
F03 = Zelfde als ingeven van alleen <RET> F12 = Zelfde als ingeven van alleen <RET>
e$print
ESC = Stoppen F03 = Stoppen F12 = Stoppen
e$fatal
F03 = Zelfde als het ingeven van <DEL> F12 = Zelfde als het ingeven van <DEL>
e$popen
F03 = Zelfde als ingeven van alleen <RET> F12 = Zelfde als ingeven van alleen <RET>
Mogelijke toets-combinaties bij alle ingave-routines
CTRL/R | = | Scherm verversen |
CTRL/T | = | Subroutine trace-back in een venster |
CTRL/V | = | Copyright en release info-scherm |
CTRL/W | = | Scherm verversen |
Standaard toetsen bij tekst inname-routines (ook die met masker)
backspace | Verwijderd teken links van de cursor. |
<TAB> <CUP> <CDN> |
Accepteert hele veldinhoud. Er wordt teruggesprongen naar het aanroepende programma. |
<RET> <ENTER> |
Accepteert hele veldinhoud links van de cursor. Indien het een routine met een standaardwaarde is, wordt de hele standaardwaarde overgenomen indien de cursor helemaal links staat. Er wordt teruggesprongen naar het aanroepende programma. |
<ESC> | Zet de initiële waarde weer terug. Er wordt teruggesprongen naar het aanroepende programma. |
<HOME> | Naar het begin van de tekst. |
<END> | Naar het einde van de tekst. |
<CLE> <CRI> |
Eén positie naar links of rechts. |
CTRL/B CTRL/<CLE> |
Eén woord of masker-element naar links. |
CTRL/F CTRL/<CRI> |
Eén woord of masker-element naar rechts. |
CTRL/N CTRL/<INS> |
Zet de initiële waarde weer terug. |
<INS> | Schakel invoegen / overtypen in of uit. |
<DEL> | Verwijder teken:
|
CTRL/<DEL> | Wis de inhoud en presenteer een leeg veld. |
Bij alle overige functietoetsen wordt de hele inhoud van het veld geaccepteerd en wordt teruggesprongen naar het aanroepende programma. De betreffende functietoets is op te vragen zoals eerder beschreven. |
Standaard toetsen bij numerieke inname-routines (ook die met masker)
backspace | Verwijderd teken links van de cursor. |
<TAB> <CUP> <CDN> |
Accepteert hele veldinhoud. Er wordt teruggesprongen naar het aanroepende programma. |
<RET> <ENTER> |
Accepteert hele veldinhoud. Er wordt teruggesprongen naar het aanroepende programma. |
<ESC> | Zet de initiële waarde weer terug. Er wordt teruggesprongen naar het aanroepende programma. |
CTRL/N CTRL/<INS> |
Zet de initiële waarde weer terug. |
<DEL> | Verwijder teken:
|
CTRL/<DEL> | Wis de inhoud en presenteer een leeg veld. |
+ | Maakt de numerieke waarde positief. Werkt alleen bij zuivere numerieke waarden en niet bij gemaskerde waarden zoals een datum. |
- | Schakelt tussen positief en negatief. Werkt alleen bij zuivere numerieke waarden en niet bij gemaskerde waarden zoals een datum. |
decimale . decimale , |
Deze worden geaccepteerd, er wordt echter niets mee gedaan. Werkt alleen bij zuivere numerieke waarden en niet bij gemaskerde waarden zoals een datum. |
Bij alle overige functietoetsen wordt de hele inhoud van het veld geaccepteerd en wordt teruggesprongen naar het aanroepende programma. De betreffende functietoets is op te vragen zoals eerder beschreven. |