home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Taifun Collection
/
Taifun_Collection_Vol_1.iso
/
richter
/
8417
/
8417.mhs
/
RICHTER.DTP
/
CLP142
/
!CLP142.EXE
/
CLPTEST.PRX
< prev
next >
Wrap
Text File
|
1993-07-01
|
45KB
|
987 lines
*******************************************************************************
*
* Program: CLPTEST.PRG
*
*: System: ClpTest 1.42
*: Author: E. Schuster
*: Copyright (c) 1993, E. Schuster
*: Last modified: 07/03/93 12:56
*
* Procs & Fncts: PD_SETUP
* : POP_SETUP
* : MY_FUNC()
* : POP101()
*: : POP10103()
* : POP105()
* : POP203()
* : POP205()
* : USERHELP
*
* Calls: WIN_INIT (procedure in CLPWINDW.PRG)
* : GET_DRIVE() (function in CLPFUNC2.PRG)
* : WIN_CREATE (procedure in CLPWINDW.PRG)
* : MIDDLE() (function in CLPFUNC1.PRG)
* : WIN_MAIN (procedure in CLPWINDW.PRG)
* : WIN_CLOSE (procedure in CLPWINDW.PRG)
*
*: Documented 07/03/93 at 12:58 SNAP! version 4.02
*******************************************************************************
msys = 'Datei, Programme, Optionen, Hilfe'
DO win_init WITH msys, 4, 2, 1, 3, 10, 10
*******************************************************************************
* *
* Win_Init: Initialisieren des Hauptmenüs, folgende Parameter müssen mit- *
* gegeben werden: *
* *
* Menüzeile Beispiel hier: 'Datei, Programme, Optionen, Hilfe' *
* Anzahl Einträge Beispiel hier: 4 (1. Datei, ... 4. Hilfe) *
* Reihe Beispiel hier: 2 (Menüzeile in der 2. Bildschirmzeile) *
* Spalte Beispiel hier: 1 (Menüzeile fängt in Spalte 1 an) *
* Leerzeichen Beispiel hier: 3 (3 Leerzeichen zwischen den Einträgen) *
* PullDown Einträge Beispiel hier: 10 (maximale Anzahl PullDown-Einträge) *
* PopUpMenü Eintr. Beispiel hier: 10 (maximale Anzahl PopUpMenü-Einträge) *
* *
*******************************************************************************
statfile = 'CLPTEST.STA' && Datei mit den Statusmeldungen für PullDown-Menü
pdshadow = .T. && Auch Pull-Down-Menüs mit Schatten hinterlegen
DEBUG = .T. && Debug ein! Wenn ausgeschaltet, Shareware-Hinweise
box_hlp = 0 && Kein Rahmen bei Hilfeschirmen, Default = 1 (einfach)
box_msg = 3 && gemischter Rahmen bei Meldungen, Default = 2 (doppelt)
*******************************************************************************
* *
* Folgende Rahmen stehen zur Verfügung: *
* *
* 0 : kein Rahmen *
* 1 : einfacher Rahmen └───┘ *
* 2 : doppelter Rahmen ╚═══╝ *
* 3 : gemischter Rahmen ╙───╜ *
* 4 : gemischter Rahmen ╘═══╛ *
* *
* Der Rahmen anderer PopUp-Fenster (Default = 2) kann wie folgt geändert *
* werden: 'box_pop = 0 ... 4' *
* *
* Folgende Variablen werden in Win_Init gesetzt und können hier beliebig *
* geändert werden: *
* *
* Variablenname Defaultwert Bedeutung *
* ────────────────────────────────────────────────────────────────────── *
* win_color 'W/B' Farbe des Bildschirms *
* titl_color 'W+/B' Farbe der Überschrift *
* sys_color 'N/W' Farbe der Menüzeile *
* ssys_color 'W+/W' Farbe des ersten Buchstabens *
* hsys_color 'N/BG' Farbe des Balkens *
* pull_color 'N/W,W+/B,,,B/W' Farbe der PullDownMenüs *
* high_color 'N/W,N/BG,,,N/BG' Farbe der PopUp Screens *
* pop_color 'N/BG,W+/B,,,B/BG' Farbe der PopUp Menüs *
* pbut_color 'W+/B' Farbe der Push-Buttons *
* msg_color 'N/R,W+/B' Farbe der PopUp Fehlermeldungen *
* help_color 'GR+/RB' Farbe der Hilfeschirme *
* shad_color 'N/N' Farbe des Schattens *
* quit_color 'W/N' Farbe nach Verlassen der Anwendung *
* bye_color 'W+/B' Farbe der Abschiedszeile *
* *
* statfile '' Datei mit den Hinweismeldungen *
* *
* box_hlp 1 Rahmen der Hilfeschirme *
* box_msg 2 Rahmen der Fehlermeldungen *
* box_pop 2 Rahmen anderer PopUp-Fenster *
* *
* fkeys ' F1=Hilfe...' Funktionstastenzeile (Zeile 23) *
* *
* quit_msg ' Programm verlassen? J/N' Meldung bei Programmende *
* canc_msg ' Abbruch bestätigen: J/N' Meldung bei Abbruch *
* *
* msgbeep .T. Piepston bei Meldungen ja/nein *
* shadows .T. Schatten unter PopUp's ja/nein *
* pdshadow .F. Schatten unter PullDown's ja/nein *
* ctrl_ret .F. Push-Button mit Ctrl+Enter ja/nein *
* getloop .F. Nach letztem GET zum 1. ja/nein *
* DEBUG .F. Debug (Tracking) ja/nein *
* *
*******************************************************************************
*******************************************************************************
* Setzen eigener Variablen *
*******************************************************************************
mjn1 = '√' && In dieser Beispiel-Anwendung wird damit gesteuert, ob
&& eine Dateneingabe bestätigt werden muß oder nicht.
mjn2 = '√' && Dieses Kennzeichen steuert den Piepston bei Meldungen
mjn3 = '√' && Dieses Kennzeichen steuert den Schatten unter PopUp's
mjn4 = '√' && Dieses Kennzeichen steuert den Schatten unter PullDown's
mjn5 = '√' && Dieses Kennzeichen definiert die Push-Button-Steuerung
mdir = Curdir()
mdir = IF(EMPTY(mdir),'',Alltrim(mdir)+'\')
mdrive = get_drive(mdir)
*******************************************************************************
* Start des Hauptprogramms *
*******************************************************************************
anw_id = 'CLP'
anw_ver = '1.42'
anw_name = 'Demo der Clipper-Funktionen'
anw_cr = '(C) Copyright Erich Schuster 1993'
DO win_create WITH anw_id, anw_ver, anw_name
*******************************************************************************
* *
* Win_Create: Damit wird der Bildschirm aufgebaut. Folgende Parameter müssen *
* mitgegeben werden: *
* *
* Anwendungs ID Beispiel hier: 'CLP', kann auch blank sein *
* Version Beispiel hier: '1.42' *
* Anwendungsname Beispiel hier: 'Demo der Clipper-Funktionen' *
* *
* Nachdem der Bildschirm jetzt aufgebaut ist, können nun auch eigene Aus- *
* gaben auf dem Bildschirm erfolgen. *
* *
*******************************************************************************
@ 4, 0 SAY middle('Das ist eine Demonstration der Clipper-Funktionen',80)
@ 5, 0 SAY middle('- CLPWINDW mit CLPCOLOR -',80)
@ 6, 0 SAY middle('- CLPFILES mit CLPFUNC1 und CLPFUNC2 -',80)
@ 7, 0 SAY middle('- CLPNUMTO -',80)
DO win_main WITH 'my_func'
*******************************************************************************
* *
* Win_Main: Diese Prozedur steuert nun den aufgebauten Bildschirm. *
* Jede Aktion löst dabei einen Aufruf der mitgegebenen Funktion *
* aus, welche individuell programmiert werden muß. *
* *
* Als Parameter mitgegeben werden muß der Name der zu verwendenden Anwender- *
* funktion. Beispiel hier: 'my_func' *
* *
* Die Prozedur Win_Main ruft dann bei der Auswahl eines PullDown Eintrags *
* die angegebene Anwenderfunktion (hier 'my_func') auf und übergibt dabei *
* als Parameter die ID des gewählten Menüpunktes. *
* *
* Die ID setzt sich dabei wie folgt zusammen: *
* *
* Nummer des PullDown Menüs (10, 20, ... 90) und die 2-stellige Nummer *
* des gewählten PullDown Menüeintrags (01, 02, ... 10) und gegebenenfalls *
* die 2-stellige Nummer des Untermenü-Eintrags (01, 02, ... 10). *
* *
* 10 20 30 ..... 90 *
* ┌───────────────────────────────────────────────────────────────── *
* │ Datei Programme Optionen ..... *
* └──────────────┬─────────────┬──────────────────────────────────── *
* 01 │ 1. Eintrag │ *
* 02 │ 2. Eintrag ├──────────────────┐ *
* 03 │ 3. Eintrag │ Untermenüeintrag │ 01 *
* 04 │─────────────│ 2. Eintrag │ 02 *
* 05 │ 5. Eintrag ├──────────────────┘ *
* 06 │ 6. Eintrag │ *
* └─────────────┘ *
* *
* Beispiele: a) 1. Eintrag bei Optionen : ID = 2001 *
* b) 2. Eintrag des Untermenüs: ID = 200302 *
* c) 6. Eintrag bei Optionen : ID = 2006 *
* *
* Der prinzipielle Aufbau der Anwenderfunktion ist wie folgt: *
* *
* ┌────────────────────────────────────────────────────────────────── *
* │ FUNCTION my_func *
* │ PARAMETER menusel && ID des gewählten PullDownMenü-Eintrags *
* │ PRIVATE mreturn && 0 = Abbrechen 1 = Zurück 2 = Weiter *
* │ mreturn = 1 *
* │ DO CASE *
* │ CASE menusel = xxxx && PopUp Screen *
* │ pop_screen(menuid, x1, y1, x2, y2, box_pop, 'funktionsname') *
* │ CASE menusel = xxxx && PopUp Menü *
* │ mch = 1 *
* │ DO WHILE .T. *
* │ mch = pop_menu(menuid, x1, y1, box_pop, mch) *
* │ DO CASE *
* │ CASE mch = 0 *
* │ EXIT *
* │ CASE mch = 1 *
* │ * 1. PopUp Menüauswahl *
* │ CASE mch = 2 *
* │ * 2. PopUp Menüauswahl *
* │ * u.s.w. *
* │ ENDCASE *
* │ ENDDO T *
* │ CASE menusel = xxxx && Ende der Anwendung *
* │ IF pop_msg(pop_color,box_msg,quit_msg,frage) && Bestätigung *
* │ mreturn = 0 *
* │ ENDIF *
* │ OTHERWISE *
* │ mreturn = 2 && Weiter *
* │ ENDCASE *
* │ RETURN mreturn *
* └────────────────────────────────────────────────────────────────── *
* *
* Für jeden definierten PullDown Menüeintrag muß ein CASE-Zweig existieren, *
* wo definiert ist, was da getan werden soll. *
* *
*******************************************************************************
DO win_close WITH 'CLPTEST '+anw_ver+' - '+anw_name+' '+anw_cr
*******************************************************************************
* *
* Win_Close: Beendet die Anwendung und zeigt die Abschiedszeile an, welche *
* als Parameter mitgegeben wird. *
* *
*******************************************************************************
*******************************************************************************
* *
* Bis hierher geht das Hauptprogramm. *
* Nun folgen die benötigten Prozeduren und Funktionen zur Steuerung der *
* Anwendung. *
* *
*******************************************************************************
*******************************************************************************
*
* Procedure: PD_SETUP
*
* Called by: PD_MENU() (function in CLPWINDW.PRG)
* : PD_MENU2() (function in CLPWINDW.PRG)
*
*
* Diese Prozedur definiert die PullDown Menüs, wobei für jedes Menü ein
* CASE-Zweig existieren muß, in welchem die einzelnen Menüeinträge be-
* schrieben sind.
*
* Dabei wird der Inhalt jeder Menüzeile in die entsprechende Variable
* 'pull_down[xx]' zugewiesen.
* Menüeinträge, welche (noch) nicht ausgewählt werden können, können
* durch die Variable 'pd_valid[xx] = .F.' inaktiviert werden.
*
* Wenn gewünscht kann auf Zeile 23 zu jedem Menüeintrag ein Hinweis er-
* scheinen. Diese Hinweise müssen dann in einer beliebigen Datei stehen,
* der Dateiname muß der Variablen STATFILE zugewiesen werden.
* Die Zuordnung der einzelnen Hinweise zu den Menüeinträgen erfolgt dann
* über die entsprechende Variable 'pd_hilfe[xx]'.
* Beispiel: 'pd_hilfe[01] = 1' weist dem Menüpunkt 1 den Hinweistext
* der ersten Zeile in der Datei zu.
*
* Wenn ein Menüeintrag ein Untermenü aufrufen soll, dann muß der ent-
* sprechende Menüeintrag ganz rechts das Zeichen '' haben.
* Das dazugehörige Untermenü muß auch hier definiert werden, wobei sich
* die MenüID aus der Nummer des PullDown-Menüs und dem Menüeintrag
* zusammensetzt.
*
* Siehe Beispiel 'weitere Optionen' im PullDown-Menü 3 'Optionen' !
* MenüID des Untermenüs = '202' (PullDown Nr. 2 + Eintrag 02)
*
*******************************************************************************
PROCEDURE pd_setup
PARAMETER menuid
DO CASE
&&------------------------------------------------------------------------&&
&& PULL-DOWN-MENU 1 'Datei'
&&------------------------------------------------------------------------&&
CASE menuid = 1
pull_down[01] = ' Pop-Up Screen 101 ... F5 '
pull_down[02] = ' Pop-Up Menu 102 ... F6 '
pull_down[03] = '───────────────────────────'
pd_valid[03] = .F.
pull_down[04] = ' Pop-Up Screen 104 ... '
pull_down[05] = ' Pop-Up Screen 105 ... '
pull_down[06] = '───────────────────────────'
pd_valid[06] = .F.
pull_down[07] = ' Programm beenden F3 '
pd_hilfe[01] = 1
pd_hilfe[02] = 2
pd_hilfe[04] = 3
pd_hilfe[05] = 4
pd_hilfe[07] = 5
&&------------------------------------------------------------------------&&
&& PULL-DOWN-MENU 2 'Programme'
&&------------------------------------------------------------------------&&
CASE menuid = 2
pull_down[01] = ' Verzeichnis... Strg+V '
pull_down[02] = '─────────────────────────'
pd_valid[02] = .F.
pull_down[03] = ' Zahlen umsetzen... '
pull_down[04] = '─────────────────────────'
pd_valid[04] = .F.
pull_down[05] = ' Datumsroutinen... '
pull_down[06] = '─────────────────────────'
pd_valid[06] = .F.
pull_down[07] = ' Dateien anschauen '
pd_hilfe[01] = 6
pd_hilfe[03] = 7
pd_hilfe[05] = 8
pd_hilfe[07] = 9
&&------------------------------------------------------------------------&&
&& PULL-DOWN-MENU 3 'Optionen'
&&------------------------------------------------------------------------&&
CASE menuid = 3
pull_down[01] = ' Farben ändern... Strg+F '
pull_down[02] = ' weitere Optionen '
pull_down[03] = '──────────────────────────'
pd_valid[03] = .F.
pull_down[04] = ' Optionen sichern '
pd_hilfe[01] = 10
pd_hilfe[02] = 11
pd_hilfe[04] = 12
&&------------------------------------------------------------------------&&
&& PULL-DOWN-MENU 302
&&------------------------------------------------------------------------&&
CASE menuid = 302
pull_down[01] = mjn1+' Automatischer Cursorsprung '
pull_down[02] = mjn2+' Warnton bei den Meldungen '
pull_down[03] = mjn3+' Schatten bei PopUp-Fenstern '
pull_down[04] = mjn4+' Schatten bei PullDown-Menüs '
pull_down[05] = mjn5+' Push-Button mit Eingabetaste'
pd_hilfe[01] = 13
pd_hilfe[02] = 14
pd_hilfe[03] = 15
pd_hilfe[04] = 16
pd_hilfe[05] = 17
&&------------------------------------------------------------------------&&
&& PULL-DOWN-MENU 4 'Hilfe'
&&------------------------------------------------------------------------&&
CASE menuid = 4
pull_down[01] = ' Allgemeine Hilfe... '
pull_down[02] = ' Hilfe für Tasten... '
pull_down[03] = '──────────────────────'
pd_valid[03] = .F.
pull_down[04] = ' Über "'+anw_id+' '+anw_ver+'"... '
pull_down[05] = '──────────────────────'
pd_valid[05] = .F.
pull_down[06] = ' Shareware-Hinweis... '
pd_hilfe[01] = 18
pd_hilfe[02] = 19
pd_hilfe[04] = 20
pd_hilfe[06] = 21
ENDCASE
RETURN
*******************************************************************************
*
* Procedure: POP_SETUP
*
* Called by: POP_SCREEN() (function in CLPWINDW.PRG)
* : POP_MENU() (function in CLPWINDW.PRG)
*! : POP101() (function in CLPTEST.PRG)
*
*
* Diese Prozedur definiert die PopUp-Screens und die PopUp-Menüs.
* Dabei existiert wieder für jeden Screen und Menü ein CASE-Zweig.
*
* Die MenüID setzt sich aus der Nummer des PullDown-Menüs und dem
* zum PopUp-Screen/-Menü gehörenden Menüeintrag zusammen.
*
* PopUp-Screens:
* --------------
* pop_title : Titel des entsprechenden PopUp-Screens
* pop_bot1/2 : Die dazugehörigen Push-Buttons
* pbut_activ : Die Nummer des beim Aufruf aktiven Push-Buttons
*
* PopUp-Menüs:
* ------------
* pop_opt[x] : Menüeinträge (Menüzeilen)
* pop_valid[x] : inaktive Einträge = .F.
* pop_bot1/2 : Die dazugehörigen Push-Buttons
* pbut_activ : Die Nummer des beim Aufruf aktiven Push-Buttons
*
*******************************************************************************
PROCEDURE pop_setup
PARAMETERS menuid
DO CASE
&&------------------------------------------------------------------------&&
&& POP_UP_SCREEN 101
&&------------------------------------------------------------------------&&
CASE menuid = 101
pop_title = 'Pop-Up Screen 101'
pop_bot1 = ''
pop_bot2 = ' <Sichern> <Abbrechen> <Pop-Up> '
pbut_activ = 1
&&------------------------------------------------------------------------&&
&& POP_UP_SCREEN 10103
&&------------------------------------------------------------------------&&
CASE menuid = 10103
pop_title = 'Pop-Up Screen 10103'
pop_bot1 = ''
pop_bot2 = ' <OK> <Abbrechen> '
pbut_activ = 1
&&------------------------------------------------------------------------&&
&& POP_UP_SCREEN 102
&&------------------------------------------------------------------------&&
CASE menuid = 102
pop_opt[1] = ' 1. Das ist ein Beispiel '
pop_opt[2] = ' 2. für ein PopUp Menü! '
pop_opt[3] = '─────────────────────────'
pop_valid[3] = .F.
pop_opt[4] = ' 4. Datei Drucken '
pop_opt[5] = '─────────────────────────'
pop_valid[5] = .F.
pop_bot1 = ''
pop_bot2 = ' <OK> <Abbrechen> '
pbut_activ = 1
&&------------------------------------------------------------------------&&
&& POP_UP_SCREEN 105
&&------------------------------------------------------------------------&&
CASE menuid = 105
pop_title = 'Pop-Up Screen 105 (über den ganzen Bildschirm)'
pop_bot1 = ''
pop_bot2 = ' <OK> '
pbut_activ = 1
&&------------------------------------------------------------------------&&
&& POP_UP_SCREEN 203
&&------------------------------------------------------------------------&&
CASE menuid = 203
pop_title = 'Zahlen umsetzen'
pop_bot1 = ''
pop_bot2 = ' <Deutsche Form> <Amerikanisch> <In Worten> <Abbrechen> '
pbut_activ = 1
&&------------------------------------------------------------------------&&
&& POP_UP_SCREEN 205
&&------------------------------------------------------------------------&&
CASE menuid = 205
pop_title = 'Datumsroutinen'
pop_bot1 = ''
pop_bot2 = ' <OK> '
pbut_activ = 1
ENDCASE
RETURN
*******************************************************************************
*
* Function: MY_FUNC()
*
* Calls: POP_SCREEN() (function in CLPWINDW.PRG)
* : STR_PAD() (function in CLPFUNC1.PRG)
* : POP_MENU() (function in CLPWINDW.PRG)
* : SHOW_MSG() (function in CLPFUNC1.PRG)
* : POP_MSG() (function in CLPWINDW.PRG)
* : FILELIST() (function in CLPFILES.PRG)
* : MIDDLE() (function in CLPFUNC1.PRG)
* : NUM2WORD() (function in CLPNUMTO.PRG)
* : DATUM() (function in CLPFUNC1.PRG)
* : SEL_ONE() (function in CLPFUNC1.PRG)
* : FILEBROWSE() (function in CLPFILES.PRG)
* : WIN_COLOR (procedure in CLPCOLOR.PRG)
* : WIN_HELP (procedure in CLPWINDW.PRG)
*
*
* Das ist die Anwenderfunktion, welche die Aktionen zu sämtlichen
* PullDown Menüeinträgen enthält.
*
* Hier können eigene Logik, eigene Funktionen und Prozeduren eingebaut
* werden. Es können aber auch folgende Prozeduren aus CLPWINDW sowie
* die Funktion WIN_COLOR aus CLPCOLOR zur Farbenänderung verwendet werden.
* Außerdem, wenn mitgelinkt, sämtliche Funktionen aus CLPFUNC1, CLPFUNC2 und
* CLPNUMTO.
*
* 1.) Funktion 'Pop_Screen'
*
* Die Funktion 'POP_SCREEN' erstellt einen PopUp-Screen, der vorher in
* 'POP_SETUP' definiert worden sein muß.
* Es wird der Name einer Funktion mitgegeben, in welcher der auszuführende
* Code zu dem PopUp-Screen steht.
*
* Aufruf:
* Pop_Screen( menuid, x1, y1, x2, y2, rahmen, 'funktionsname' )
*
* menuid : die definierte ID des betreffenden Screens in 'POP_SETUP'
* x1 : die Koordinaten des Screens oben ( 0 - 19 )
* y1 : rechts ( 0 - 69 )
* x2 : unten ( x1+6 - 24 )
* y2 : links ( y1+6 - 79 )
* rahmen : der Rahmen um den Screen (0 ... 4)
* funktionsname : der Name der auszuführenden Funktion
*
* 2.) Funktion 'Pop_Menu'
*
* Die Funktion 'POP_MENU' erstellt ein PopUp-Menü, welches vorher in
* 'POP_SETUP' definiert worden sein muß.
* Die Funktion bringt einen Returncode zurück, welcher angibt, welche
* Menüzeile ausgewählt wurde.
*
* Aufruf:
* variable = Pop_Menu( menuid, x1, y1, rahmen )
*
* variable : der Returncode, welcher den gewählten Menüpunkt angibt
* menuid : die definierte ID des betreffenden Menüs in 'POP_SETUP'
* x1 : die Koordinaten des Menüs oben ( 0 - 19 )
* y1 : rechts ( 0 - 69 )
* rahmen : der Rahmen um das Menü (0 ... 4)
*
* Die Größe des Menüs und damit die untere linke Ecke ergibt sich aus
* der Anzahl und Länge der in 'POP_SETUP' definierten Menüeinträge.
*
* 3.) Funktion 'Pop_Msg'
*
* Die Funktion 'POP_MSG' kreiert eine PopUp-Fehlermeldung.
* Bei der Version b) bringt die Funktion True (.T.) bei 'Ja' und
* False (.F.) bei 'Nein' zurück.
*
* Aufruf:
* a) Pop_Msg ( farbe, rahmen, text )
* PopUp-Meldung mit OK-Button
*
* b) IF Pop_Msg ( text, farbe, rahmen, frage ) ..... ENDIF
* PopUp-Meldung mit <Ja> und <Nein> Buttons
*
* text : der Text der Fehlermeldung
* farbe : die zu verwendende Farbe (msg_color, pop_color, ...)
* rahmen : der Rahmen um die Meldung (0 ... 4)
*
* 4.) Prozedur 'Win_Help'
*
* Die Prozedur 'WIN_HELP' erlaubt die Handhabung von feldbezogenen
* Hilfeschirmen. Das heißt, bei F1 erscheint - sofern vorhanden -
* immer ein Hilfeschirm zu dem Feld, in welchem sich gerade der Cursor
* befindet.
* Das funktioniert in der Regel schon automatisch, weil bei Betätigen
* der F1-Taste 'WIN_HELP' mit Funktionsname und Feldname aufgerufen wird.
*
* In besonderen Fällen (wie hier, wo die Hilfe nicht über F1 sondern
* als Menüpunkt aufgerufen werden soll) kann aber die Funktion 'WIN_HELP'
* selbst aufgerufen werden.
*
* Weitere Informationen zu 'WIN_HELP' entnehmen Sie bitte der Dokumentation!
*
* 5.) Funktion 'Win_Color' (aus CLPCOLOR.OBJ)
*
* Die Funktion 'WIN_COLOR' erlaubt die Änderung der in der Anwendung
* verwendeten Farben. Dabei werden einfach die in 'WIN_INIT' definierten
* Variablen für die Farben (xxxx_color) überschrieben.
*
* WICHTIG: Damit die Funktion laufen kann, müssen auch sämtliche Funktionen
* von 'CLPWINDW.OBJ' zur Verfügung stehen (also gelinkt sein) !
*
* Aufruf:
* DO Win_Color WITH anw_id, anw_rel, anw_name
*
* anw_id, anw_rel, anw_name : Anwendungs ID, Version und Anwendungsname
* Hier sollten die gleichen Werte wie bei 'WIN_CREATE' mitgegeben werden.
*
* Weitere Beschreibungen zu sämtlichen Funktionen entnehmen Sie bitte der
* Kurzdokumentation 'CLP.DOC'
*
*******************************************************************************
FUNCTION my_func
PARAMETER menusel && ID des gewählten PullDownMenü-Eintrags
PRIVATE mreturn && 0 = Abbrechen 1 = Zurück 2 = Weiter
PRIVATE mch, mstat, Savescr, mret
mreturn = 1
DO CASE
CASE menusel = 1001 .OR. menusel = -4 && Auswahl 1001 oder F5
getloop = .T. && Legt fest, daß in diesem PopUp-Schirm der Cursor nach
* dem letzten GET wieder zum ersten geht.
* Das ist nur relevant bei Ctrl_Ret = .T., weil dann die
* Eingabetaste zum nächsten GET springt, beim letzten GET
* allerdings der markierte Push-Button aktiviert würde,
* wenn GetLoop = .F. wäre.
pop_screen(101, 5, 12, 18, 50, box_pop, 'POP101')
getloop = .F. && Bei allen anderen Schirmen aktiviert die Eingabetaste
* den Push-Button, auch wenn Ctrl_Ret = .T. ist.
@ 12, 3 SAY 'PopUp-'
@ 13, 3 SAY 'Screen'
CASE menusel = 1002 .OR. menusel = -5 && Auswahl 1002 oder F6
mch = 1
@ 9, 45 SAY str_pad('PopUp Menü',30)
@ 10, 45 SAY SPACE(28)
DO WHILE .T.
menu_id = 102 && Identifizierung für die Hilfedatenbank
mch = pop_menu(102, 8, 15, box_pop, mch)
DO CASE
CASE mch = 0
@ 10, 45 SAY str_pad('Fertig!',30)
EXIT
CASE mch = 1
@ 10, 45 SAY str_pad('Das war der 1. Menüpunkt...',30)
CASE mch = 2
@ 10, 45 SAY str_pad('... und das der 2. !',30)
CASE mch = 4
* Datei Drucken
IF .NOT. Isprinter()
show_msg(29, msg_color)
@ 10, 45 SAY str_pad('Druckversuch mißglückt!',30)
ELSE
@ 10, 45 SAY str_pad('Jetzt wird gedruckt...',30)
ENDIF
ENDCASE
ENDDO T
CASE menusel = 1004
mstat = 'PopUp-Messages und vieles andere mehr! Weiter...'
Savescr = STATUS(mstat, pop_color, box_pop, 10)
INKEY(0)
RESTORE SCREEN FROM Savescr
@ 9, 18 SAY 'PopUp Messages,'
@ 10, 18 SAY 'Bestätigungen, '
@ 11, 18 SAY 'und anderes!!! '
CASE menusel = 1005
pop_screen(105, 0, 0, 24, 79, box_pop, 'POP105')
CASE menusel = 1007 && Ende der Anwendung
IF pop_msg(quit_msg, pop_color, box_msg, frage)
mreturn = 0
ENDIF
CASE menusel = 2001 .OR. menusel = 22
filelist(mdrive, mdir, '*', 1, box_pop, 4, 22)
@ 20, 0 SAY middle('Dateienhandling mit Clipper: Filelist()',80)
CASE menusel = 2003
pop_screen(203, 6, 4, 18, 74, box_pop, 'POP203')
@ 16, 0 SAY middle('Zahlen umsetzen: '+num2word(10),80)
CASE menusel = 2005
pop_screen(205, 6, 11, 19, 65, box_pop, 'POP205')
@ 18, 0 SAY middle('Datumsroutine: '+datum(6, CTOD('01.01.1992')),80)
mreturn = 2
CASE menusel = 2007
SAVE SCREEN TO Savescr
mch = sel_one(1, 14, 13, win_color+','+ssys_color, 2, ;
'Autoexec.Bat', 'Config.Sys', 'Dummy', 'Auswahl 4', '5', '6', '7', '8')
RESTORE SCREEN FROM Savescr
DO CASE
CASE mch = 0
@ 14, 0 SAY middle('Auswahl abgebrochen!',80)
CASE mch = 1
filebrowse('C:\AUTOEXEC.BAT', 1)
@ 14, 0 SAY middle("Filebrowse('C:\AUTOEXEC.BAT')",80)
CASE mch = 2
filebrowse('C:\CONFIG.SYS')
@ 14, 0 SAY middle("Filebrowse('C:\CONFIG.SYS')",80)
CASE mch = 3
mret = filebrowse('dummy', 4)
IF mret > 0
pop_msg('Datei nicht vorhanden oder zu groß!')
ENDIF
@ 14, 0 SAY SPACE(80)
OTHERWISE
@ 14, 0 SAY middle('Auswahl Nr.'+Alltrim(STR(mch))+' ausgewählt!',80)
ENDCASE
mreturn = 2
CASE menusel = 3001 .OR. menusel = 6 && Auswahl 3001 oder Strg+F
DO win_color WITH anw_id, anw_ver, anw_name && Option 'Farben ändern'
mreturn = 2
CASE menusel = 300201 && Untermenüeintrag 01
mjn1 = IF(EMPTY(mjn1),'√', ' ')
IF EMPTY(mjn1)
SET CONFIRM ON
ELSE
SET CONFIRM OFF
ENDIF
mreturn = 2
CASE menusel = 300202 && Untermenüeintrag 02
mjn2 = IF(EMPTY(mjn2),'√', ' ')
msgbeep = .NOT. EMPTY(mjn2)
mreturn = 2
CASE menusel = 300203 && Untermenüeintrag 03
mjn3 = IF(EMPTY(mjn3),'√', ' ')
shadows = .NOT. EMPTY(mjn3)
mreturn = 2
CASE menusel = 300204 && Untermenüeintrag 04
mjn4 = IF(EMPTY(mjn4),'√', ' ')
pdshadow = .NOT. EMPTY(mjn4)
mreturn = 2
CASE menusel = 300205 && Untermenüeintrag 05
mjn5 = IF(EMPTY(mjn5),'√', ' ')
ctrl_ret = EMPTY(mjn5)
mreturn = 2
CASE menusel = 3004
mstat = 'Sicherung ist hier nicht möglich! Weiter...'
Savescr = STATUS(mstat, msg_color, box_msg)
INKEY(0)
RESTORE SCREEN FROM Savescr
CASE menusel = 4001 && Allgemeine Hilfe
DO win_help WITH 'userhelp', 'CLPTEST'
mreturn = 2
CASE menusel = 4002 && Hilfe zu Tasten
DO win_help WITH 'userhelp', 'TASTEN'
mreturn = 2
CASE menusel = 4004 && Über CLP 1.42
DO win_help WITH 'userhelp', 'ABOUT'
mreturn = 2
CASE menusel = 4006 && Shareware-Hinweis
DO win_help WITH 'userhelp', 'SHARE'
mreturn = 2
OTHERWISE
mreturn = 2
ENDCASE
RETURN mreturn
*******************************************************************************
*
* Function: POP101()
*
* Calls: VAL_STR() (function in CLPFUNC1.PRG)
* : POP_MSG() (function in CLPWINDW.PRG)
* : SHOW_MSG() (function in CLPFUNC1.PRG)
*! : POP_SCREEN() (function in CLPWINDW.PRG)
*! : POP_SETUP (procedure in CLPTEST.PRG)
*
*
* Diese Funktion ist ebenfalls eine Anwenderfunktion. Sie wird von der
* Funktion 'POP_SCREEN' aufgerufen und beinhaltet die Logik zu dem
* betreffenden Screen.
*
* Es ist zu beachten, daß diese Funktion von 'POP_SCREEN' mehrmals! auf-
* gerufen wird. Und zwar zunächst einmal zum Aufbau des Bildschirms
* mit einem Parameter 'READ'. Dann nochmal für jedes Betätigen der Eingabe-
* taste, wobei der Parameter 'PUSH' und der Code des Push-Buttons mitgegeben
* werden.
* Das heißt also, je nachdem, welcher Push-Button gerade der aktive ist
* (gekennzeichnet durch den farbigen Balken) wird ein Code bei Betätigen
* der Eingabetaste ( = Push-Button ) an diese Funktion übergeben.
*
*******************************************************************************
FUNCTION pop101
PARAMETER maction, pbut
PRIVATE mreturn && 1 = Zurück 2 = Weiter
mreturn = 2
IF maction = 'READ'
IF TYPE("mfeld1") = 'U' && Feld 'mfeld1' noch nicht bekannt
PUBLIC mfeld1, mfeld2, mfeld3
mfeld1 = SPACE(20)
mfeld2 = SPACE(8)
mfeld3 = SPACE(8)
ENDIF
@ 9, 14 SAY 'Eingabefeld1:'
@ 9, 28 GET mfeld1
@ 11, 14 SAY 'Feld2: Feld3:'
@ 11, 21 GET mfeld2
@ 11, 40 GET mfeld3
@ 13, 14 SAY 'Das ist ein Beispiel für einen'
@ 14, 14 SAY 'PopUp Screen mit Eingabefeldern!'
READ
ELSEIF maction = 'PUSH'
DO CASE
CASE pbut = 1 && 1. Push-Button (Sichern)
mret = val_str(mfeld1, 'ANUM')
DO CASE
CASE mret = 0 && Eingabe OK
pop_msg('Eingabe verarbeitet!', pop_color, box_pop)
mreturn = 1
CASE mret = 1 && Eingabefeld leer
show_msg(1, msg_color)
CASE mret = 2 && Eingabe falsch (nicht alphanumerisch)
show_msg(6, msg_color)
ENDCASE
CASE pbut = 2 && 2. Push-Button (Abbrechen)
IF CONFIRM(canc_msg, msg_color, box_msg, 12)
mreturn = 1
ENDIF
CASE pbut = 3 && 3. Push-Button (Pop-Up)
getloop = .F.
pop_screen(10103, 8, 17, 15, 45, box_pop, 'POP10103')
getloop = .T.
DO pop_setup WITH 101
pbut_activ = 3
ENDCASE
ENDIF
RETURN mreturn
*******************************************************************************
*
* Function: POP10103()
*
*******************************************************************************
FUNCTION pop10103
PARAMETER maction, pbut
PRIVATE mreturn && 1 = Zurück 2 = Weiter
PRIVATE dummy
mreturn = 2
IF maction = 'READ'
dummy = ' '
@ 11, 21 SAY "Das ist ein zweiter"
@ 12, 21 SAY "Pop-Up-Schirm" GET dummy
READ
ELSEIF maction = 'PUSH'
DO CASE
CASE pbut = 1 && 1. Push-Button (Sichern)
mreturn = 1
CASE pbut = 2 && 2. Push-Button (Abbrechen)
IF CONFIRM(canc_msg, msg_color, box_msg, 12)
mreturn = 1
ENDIF
ENDCASE
ENDIF
RETURN mreturn
*******************************************************************************
*
* Function: POP105()
*
*******************************************************************************
FUNCTION pop105
PARAMETER maction, pbut
PRIVATE mreturn && 1 = Zurück 2 = Weiter
mreturn = 2
IF maction = 'READ'
@ 5, 18 SAY "Das ist ein großer leerer Bildschirm!"
@ 10, 18 SAY "Da gibt es sehr viel Platz für Eingaben"
@ 15, 18 SAY "und das ist doch gut so, oder nicht?"
INKEY(0)
ELSEIF maction = 'PUSH'
mreturn = 1
ENDIF
RETURN mreturn
*******************************************************************************
*
* Function: POP203()
*
* Calls: SHOW_MSG() (function in CLPFUNC1.PRG)
* : VAL_STR() (function in CLPFUNC1.PRG)
* : NUM2STR() (function in CLPNUMTO.PRG)
* : NUM2WORD() (function in CLPNUMTO.PRG)
*
*******************************************************************************
FUNCTION pop203
PARAMETER maction, pbut
PRIVATE mreturn && 1 = Zurück 2 = Weiter
mreturn = 2
IF maction = 'READ'
IF TYPE("mzahl1") = 'U' && Feld 'mzahl1' noch nicht bekannt
PUBLIC mzahl1
mzahl1 = 0.00
ENDIF
@ 10, 8 SAY 'Zahl eingeben:'
@ 10, 24 GET mzahl1
@ 10, 42 SAY 'String:'
@ 12, 8 SAY 'Worte:'
READ
ELSEIF maction = 'PUSH'
mok = .F.
IF pbut = 1 .OR. pbut = 2 .OR. pbut = 3
IF EMPTY(mzahl1) && Eingabefeld leer
show_msg(1, msg_color)
ELSE
mret = val_str(Alltrim(STR(mzahl1)), 'STR', 'NUM.')
DO CASE
CASE mret = 0 && Eingabe OK
mok = .T.
@ 10, 50 SAY SPACE(18)
@ 12, 16 SAY SPACE(58)
@ 13, 16 SAY SPACE(58)
@ 14, 16 SAY SPACE(58)
CASE mret = 2 && Eingabe falsch (nicht numerisch)
show_msg(2, msg_color)
ENDCASE
ENDIF
ENDIF
DO CASE
CASE pbut = 1 .AND. mok && 1. Push-Button (Deutsche Form)
@ 10, 50 SAY num2str(mzahl1, 2, 0)
CASE pbut = 2 .AND. mok && 2. Push-Button (Amerikanisch)
@ 10, 50 SAY num2str(mzahl1, 2, 1)
CASE pbut = 3 .AND. mok && 3. Push-Button (In Worten)
mworte = num2word(mzahl1, ' ')
IF LEN(mworte) > 56
mcut1 = Rat(' ',mworte)
mworte1 = LEFT(mworte,mcut1-1)
IF LEN(mworte1) > 54
mcut2 = Rat(' ',mworte1)
mworte1 = LEFT(mworte1,mcut2-1)+' -'
mworte2 = SUBSTR(LEFT(mworte,mcut1-1),mcut2+1)+' -'
mworte3 = SUBSTR(mworte,mcut1+1)
ELSE
mworte1 = mworte1+' -'
mworte2 = SUBSTR(mworte,mcut1+1)
mworte3 = ' '
ENDIF
ELSE
mworte1 = mworte
mworte2 = ' '
mworte3 = ' '
ENDIF
@ 12, 16 SAY mworte1
@ 13, 16 SAY mworte2
@ 14, 16 SAY mworte3
CASE pbut = 4 && 4. Push-Button (Abbrechen)
IF CONFIRM(canc_msg, msg_color, box_msg, 12)
mreturn = 1
ENDIF
ENDCASE
ENDIF
RETURN mreturn
*******************************************************************************
*
* Function: POP205()
*
* Calls: MIDDLE() (function in CLPFUNC1.PRG)
* : DATUM() (function in CLPFUNC1.PRG)
*
*******************************************************************************
FUNCTION pop205
PARAMETER maction, pbut
PRIVATE mreturn && 1 = Zurück 2 = Weiter
mreturn = 2
IF maction = 'READ'
@ 9, 13 SAY 'Datumsformat 0 : '+middle(datum(0),34)
@ 10, 13 SAY 'Datumsformat 1 : '+middle(datum(1),34)
@ 11, 13 SAY 'Datumsformat 2 : '+middle(datum(2),34)
@ 12, 13 SAY 'Datumsformat 3 : '+middle(datum(3),34)
@ 13, 13 SAY 'Datumsformat 4 : '+middle(datum(4),34)
@ 14, 13 SAY 'Datumsformat 5 : '+middle(datum(5),34)
@ 15, 13 SAY 'Datumsformat 6 : '+middle(datum(6),34)
INKEY(0)
ELSEIF maction = 'PUSH'
mreturn = 1
ENDIF
RETURN mreturn
*******************************************************************************
*
* Procedure: USERHELP
*
* Called by: WIN_HELP (procedure in CLPWINDW.PRG)
*
*******************************************************************************
PROCEDURE USERHELP
PARAMETER helpid
DO CASE
CASE helpid = 'CLPTEST'
helptitel = 'Allgemeine Hilfe'
helpline2 = anw_id+' Version '+anw_ver+' ...'
helpline3 = "... demonstriert den Gebrauch und die Möglichkeiten"
helpline4 = " mit den Clipper-Funktionen (CLPxxxxx) "
helpline6 = "Es gelten die allgemeinen Regeln des SAA-Standards:"
helpline7 = " F1=Hilfe, F3=Zurück, F10=Menü, ... "
CASE helpid = 'TASTEN'
helptitel = 'Hilfe für Tasten'
helpline1 = "F1=Hilfe, F3=Programm beenden, F10=Menü "
helpline3 = "Esc=Abbrechen Eingabetaste=Ausführen "
helpline5 = "'' und '' = Balken nach unten/oben bewegen "
helpline7 = "Tabulator = nächsten Push-Button aktivieren "
CASE helpid = 'ABOUT'
helptitel = anw_name
helpline2 = anw_id+' Version '+anw_ver+' ...'
helpline3 = "... wurde mit 'Clipper', Version Sommer '87 ent- "
helpline4 = " wickelt und mit 'PLINK86' gelinkt. "
helpline6 = "'Clipper' ist ein Warenzeichen der Nantucket Corp. "
helpline7 = "'PLINK86' ist ein Warenzeichen der Phoenix Tech Ltd"
CASE helpid = 'SHARE'
helptitel = anw_name
helpline1 = "Die Ihnen hier vorliegende Version von "+anw_id+" ist die"
helpline2 = "Shareware-Version des Programms."
helpline3 = "Wenn Sie sich beim Autor registrieren lassen, dann"
helpline4 = "bekommen Sie zunächst einmal die neueste Version"
helpline5 = "des Programms. Außerdem fallen selbstverständlich"
helpline6 = "sämtliche (störenden) Hinweise auf Shareware weg."
helpline8 = anw_cr
ENDCASE
RETURN
*: EOF: CLPTEST.PRG