Zusätzliche Funktionen einbinden
Eine AFP-Datei wird automatisch zu einem PRG umgewandelt und ausgeführt.
Es gibt zusätzlich die Möglichkeit an vier verschiedenen Stellen zusätzlichen Code unterzubringen.
- mit SET PROCEDURE TO datei ADDI, SET LIBRARY TO datei ADDI oder SET CLASSLIB TO datei ADDI
- mit APPLICATION.PRG
- mit APPLICATION.CODE
- mit afpseite.AFP.CODE
SET PROCEDURE TO
Wie bei jedem FoxPro Programm können sie mit set proc to, set libr to oder set classlib to zusätzlichen wiederverwendbaren Code verwenden
APPLICATION.PRG
liegt bei einer AFP-Seite eine APPLICATION.PRG wird diese 1 zu 1 direkt am Anfang des Codes jeder AFP-Seite eingefügt.
Hier sollte nur Code hinterlegt werden, der keine functions oder procedures enthält. Ein eventuelles RETURN beendet auch das PRG und es wird keine Ausgabe erzeugt, deshalb sollte hier nur Code hinterlegt werden, der auch tatsächlich am Anfang eingefügt werden kann.
APPLICATION.CODE
wird eine APPLICATION.CODE gefunden, wird diese Datei 1 zu 1 nach dem endgültigen RETURN ___AFP im Code von jeder AFP-Seite eingefügt.
Hier kann man mit procedure oder function externe Funktionen angeben, welche aus dem Code heraus aufgerufen werden können.
afpseite.AFP.CODE
wird eine Seite gefunden, welche den gleichen Namen + ".CODE" trägt wie die gerade angesprochene AFP-Seite, wird diese Datei am Ende des erzeugten PRG´s eingefügt. So wie die APPLICATION.CODE kann auch hier eine procedure eingetragen werden, die speziell für die gerade ausgerufene AFP-Seite gilt.
Beispiel
Nehmen wir ein einfaches Beispiel, indem auf zwei Arten das aktuelle Datum und die Uhrzeit ausgeben werden:
TEST.AFP
<html>
<head>
<title>Testpage</title>
</head>
<body>
<%?datetime()%>
<hr>
<<datetime()>>
</body>
</html>
Inhalt der APPLICATION.PRG
*-- Application.prg
*-- wird vor jeder AFP-Seite ausgeführt, die im gleichen Verzeichnis liegt
Inhalt der APPLICATION.CODE
*-- application.code
procedure applicationcode
return "applicationcode"
Inhalt der TEST.AFP.CODE
*-- das ist test.afp.code
procedure testcode
return "testcode"
das erzeugte PRG
___afp=''
#DEFINE CANCEL *
#DEFINE QUIT *
#DEFINE RESUME *
#DEFINE RETRY *
*----------------------------------------------------
*-- Import der application.prg
*----------------------------------------------------
*-- Application.prg
*-- wird vor jeder AFP-Seite ausgeführt, die im gleichen Verzeichnis liegt
*----------------------------------------------------
*-- Ende Import der application.prg
*----------------------------------------------------
text to ___afp TEXTMERGE noshow addi
<html>
<head>
<title>Testpage</title>
</head>
<body>
endtext
___afp=___afp+fox.convtostr(datetime())
text to ___afp TEXTMERGE noshow addi
<hr>
<<datetime()>>
</body>
</html>
endtext
return ___afp
* Suche nach C:\inetpub\wwwroot\application.code
*----------------------------------------------------
*-- Import der application.code
*----------------------------------------------------
*-- application.code
procedure applicationcode
return "applicationcode"
*----------------------------------------------------
*-- Ende Import der application.code
*----------------------------------------------------
* Suche nach C:\inetpub\wwwroot\test.afp.code
*----------------------------------------------------
*-- Import der <datei>.afp.code
*----------------------------------------------------
*-- das ist test.afp.code
procedure testcode
return "testcode"
*----------------------------------------------------
*-- Ende Import der <datei>.afp.code
*----------------------------------------------------