Marc's Place

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
De waarde in e$_chr.ky moet je vergelijken met de constanten in e$lib:e$keys.h.

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:
  • waarop de cursor zich bevindt (bij blok-cursors)
  • rechts van de cursor (bij I-beam cursors)
 
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:
  • waarop de cursor zich bevindt (bij blok-cursors)
  • rechts van de cursor (bij I-beam cursors)
 
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.
© 1997- Marc Vos (and others)   -   Privacy Statement   -    Contact Me

On this website, Google Analytics is used to track visitor statistics. These are anonymised data about the number of visitors, which pages they visit on this site, from which regions they visit, which web browsers they use, etc.. You will also see non-personalised ads via Google AdSense. Cookies from Paddle or Paypal are placed when you click on a 'Buy now!' or 'Donate!' button, and possible cookies from Disqus when you use that system to comment on one or more blogposts.
Privacy Statement