home *** CD-ROM | disk | FTP | other *** search
- /*******************************************
- * Name: SAAMENU
- * Art: FUNCTION
- * Autor: FRANK PACHER
- * Datum: 15.Mai 1991
- * Dateien: %
- * Programme: UDF-Sammlung "STRING.PRG" von NANTUCKET wird benötigt
- * Compiling: /n /m /b
- * Aufruf: SAAMENU(Nummer,MenuArray)
- * Nummer - Nummer des Menues (default=1 bei NIL)
- * MenuArray - Array mit den Menueinträgen
- * Glob.Var.: %
- * Besonderheiten:
- * RELEASE 2.o mit verbesserter UDF()-behandlung !
- *
- * (c) by F.PACHER
- ******************************************************************************/
- function SaaMenu(iMenuNum,aMenuArray)
-
- // -> wird spaeter als PRIVATE definiert !! private p_aKoordy := {}[2]
- local l_sBild1
- local l_sBild2
- local l_aBild3 := {}
- local l_sBild4
- local l_aHorMenu := {}
- local l_sString := {}
- local l_sOldColor
- local l_iLauf1 := 1
- local l_iLauf2 := 1
- local l_iLauf3
- local l_iLauf4
- local l_iLaufA
- local l_iLaufE
- local l_iTempE :=.F.
- local l_iTaste := 0
- local l_bExit1 :=.F.
- local l_bExit2 :=.F.
- local l_bExit3 :=.T.
- local l_sTaste
- local l_CodeBlock
- local l_sTempString
- private p_aUntMenSpeicher :={}
- private p_aUnterMenu :={}
- private p_aRueck :={}
- private p_aColorA :={}
- private p_aColor := Array(5)
- private p_iLauf5
- private udfabbruch := .F.
- /************* weitere Declarationen und Defaults setzen ***************/
- // defaults setzen :
- if iMenuNum = NIL // Menu Nummer
- iMenuNum := 1
- endif
- if aMenuArray[iMenuNum,1] = NIL // Menu Name
- aMenuArray[iMenuNum,1] :='Hauptmenu'
- endif
- if aMenuArray[iMenuNum,11] = NIL // Farbe Unterbalken
- if(IsColor(),aMenuArray[iMenuNum,11]:='g+/n',aMenuArray[iMenuNum,11]:='w/n')
- endif
- if aMenuArray[iMenuNum,10] = NIL // Farbe Menu
- if(IsColor(),aMenuArray[iMenuNum,10]:='n/w+,w+/b,r,r+/w+,w+/w',aMenuArray[iMenuNum,10]:='g+/n,n/w,b+,b+/n,w/n')
- endif
- if aMenuArray[iMenuNum,14] = NIL // Menu Zeile
- aMenuArray[iMenuNum,14] := 0
- endif
- if aMenuArray[iMenuNum,12] = NIL // ESC-Erlaubt
- aMenuArray[iMenuNum,12] := .F.
- endif
- if aMenuArray[iMenuNum,9] = NIL // Unterbalken
- aMenuArray[iMenuNum,9] := .T.
- endif
- if aMenuArray[iMenuNum,15] = NIL // ständiges Hot-Key anzeigen
- aMenuArray[iMenuNum,15] := 'F1 Hilfe '
- endif
- if aMenuArray[iMenuNum,8] = NIL // Farbe d. Message
- if(IsColor(),aMenuArray[iMenuNum,8]:='gr+/b',aMenuArray[iMenuNum,8]:='w/n')
- endif
- if aMenuArray[iMenuNum,7] = NIL // Länge der Message
- aMenuArray[iMenuNum,7]:= 65
- endif
- if aMenuArray[iMenuNum,6] = NIL // zeile d. Message
- aMenuArray[iMenuNum,6]:= 24
- endif
- if aMenuArray[iMenuNum,5] = NIL // Farbe Menuname
- if(IsColor(),aMenuArray[iMenuNum,5]:='gr+/b',aMenuArray[iMenuNum,5]:='w/n')
- endif
- if aMenuArray[iMenuNum,4] = NIL // Farbe Begrenzer
- if(IsColor(),aMenuArray[iMenuNum,4]:='gr+/b',aMenuArray[iMenuNum,4]:='w/n')
- endif
-
- l_aHorMenu := aMenuArray[iMenuNum,13]
- p_sHotZeig := aMenuArray[iMenuNum,15]
- p_aColor := ListAsArray(aMenuArray[iMenuNum,10],',')
- private p_aKoordy := Array(len(l_aHorMenu),3)
- private p_iZeile := aMenuArray[iMenuNum,6]
- private p_iLaenge := aMenuArray[iMenuNum,7]
- private p_sFarbeMess := aMenuArray[iMenuNum,8]
- /******************Beginn der Funktion********************************/
- /******************MenuBildAufbau*************************************/
- SetCursor(0)
- l_sBild1 := SaveScreen(0,0,24,79)
- SetColor(p_aColor[1])
- @ aMenuArray[iMenuNum,14],0 clear to aMenuArray[iMenuNum,14],79
- @ aMenuArray[iMenuNum,14],0
- if aMenuArray[iMenuNum,9]
- SetColor(aMenuArray[iMenuNum,11])
- @ aMenuArray[iMenuNum,14]+1,0 clear to aMenuArray[iMenuNum,14]+1,79
- @ aMenuArray[iMenuNum,14]+1,0 to aMenuArray[iMenuNum,14]+1,79 double
- @ aMenuArray[iMenuNum,14]+1,2 say ' '+chr(27)+chr(29)+chr(26)+' '
- @ aMenuArray[iMenuNum,14]+1,57 say ' (c) Pacher ═'
- endif
- SetColor(p_aColor[1])
- @ aMenuArray[iMenuNum,14],0
- for l_ilauf1:=1 to len(l_aHorMenu)
- if .NOT. l_aHorMenu[l_iLauf1,3]
- SetColor(p_aColor[5])
- l_sString:=ListAsArray(l_aHorMenu[l_ilauf1,1],'~')
- SetColor(p_aColor[5])
- p_aKoordy[l_iLauf1,3]:=col()+2
- @ aMenuArray[iMenuNum,14],col()+2 say l_sString[1]+l_sString[2]+l_sString[3]
- p_aKoordy[l_iLauf1,1]:= 0
- p_aKoordy[l_iLauf1,2]:= 0
- else
- l_sString:=ListAsArray(l_aHorMenu[l_ilauf1,1],'~')
- do Case
- Case l_sString[1]==''
- SetColor(p_aColor[4])
- p_aKoordy[l_iLauf1,3]:=col()+2
- @ aMenuArray[iMenuNum,14],col()+2 say l_sString[2]
- p_aKoordy[l_iLauf1,1] := col()-1
- p_aKoordy[l_iLauf1,2] := Asc(Upper(l_sString[2]))
- SetColor(p_aColor[1])
- @ aMenuArray[iMenuNum,14],col() say l_sString[3]
- Case l_sString[3]==''
- SetColor(p_aColor[1])
- p_aKoordy[l_iLauf1,3]:=col()+2
- @ aMenuArray[iMenuNum,14],col()+2 say l_sString[1]
- SetColor(p_aColor[4])
- @ aMenuArray[iMenuNum,14],col() say l_sString[2]
- p_aKoordy[l_iLauf1,1] := col()-1
- p_aKoordy[l_iLauf1,2] := Asc(Upper(l_sString[2]))
- Otherwise
- SetColor(p_aColor[1])
- p_aKoordy[l_iLauf1,3]:=col()+2
- @ aMenuArray[iMenuNum,14],col()+2 say l_sString[1]
- SetColor(p_aColor[4])
- @ aMenuArray[iMenuNum,14],col() say l_sString[2]
- p_aKoordy[l_iLauf1,1] := col()-1
- p_aKoordy[l_iLauf1,2] := Asc(Upper(l_sString[2]))
- SetColor(p_aColor[1])
- @ aMenuArray[iMenuNum,14],col() say l_sString[3]
- endcase
- endif
- next
- l_sBild2 := SaveScreen(aMenuArray[iMenuNum,14],0,aMenuArray[iMenuNum,14],79)
- l_sBild4 := Savescreen(0,0,24,79)
- SetColor(p_aColor[2])
- l_iLauf1:=1
- do While l_iLauf1 <= len(p_aKoordy)
- if p_aKoordy[l_iLauf1,2] <> 0
- l_iLaufA := l_iLauf1
- EXIT
- endif
- l_iLauf1 := l_iLauf1+1
- enddo
- l_iLauf1 := 1
- DO WHILE (l_iLauf1 <= len(p_aKoordy))
- IF (p_aKoordy[l_ilauf1,2] <> 0)
- l_iLaufE := l_iLauf1
- ENDIF
- l_iLauf1 := l_iLauf1+1
- ENDDO
- l_iLauf1 := 1
- if l_iLaufA = NIL
- return
- endif
- l_sString:=ListAsArray(l_aHorMenu[l_iLaufA,1],'~')
- @ aMenuArray[iMenuNum,14],p_aKoordy[l_iLaufA,3] say l_sString[1]+l_sString[2]+l_sString[3]
- SetCenterText(aMenuArray[iMenuNum,1],aMenuArray[iMenuNum,2],aMenuArray[iMenuNum,5],aMenuArray[iMenuNum,3],aMenuArray[iMenuNum,4])
- SetMessage(aMenuArray[iMenuNum,6],aMenuArray[iMenuNum,7],l_aHorMenu[l_iLaufA,2],aMenuArray[iMenuNum,8],p_aColor[2])
- l_iLauf3:=l_iLaufA
- /********************* HorizontaleMenuSteuerung *************************/
- // NEU HINZUGEKOMMEN !!!
- if (l_iLaufA = l_iLaufE).and.(aMenuArray[iMenuNum,12]=.T.)
- l_iLaufE := l_iLaufE+1
- l_iTempE := .T.
- endif
- //************************
- l_CodeBlock := {|x| x[2] = l_sTaste}
- do While (l_bExit1=.F.).and.(.NOT.(l_iLaufA = l_iLaufE)) // solange nicht
- // <ET> / Hotkey
- // NEU HINZUGEKOMMEN !!!
- if l_iTempE
- l_iLaufE := l_iLaufE-1
- endif
- //************************
- do While .NOT.l_bExit2 // solange keine zulaessige Taste
- l_sTaste := Inkey(0)
- /*************************************************************
- ****** wird eine Helpdatei mit gelinkt, so müssen die
- ****** nächsten Zeilen aktiviert werden !! (für F1-Taste im
- ****** Hauptmenu ) */
- /* if l_sTaste=28
- help()
- endif*/
- //************************************************************
- if (l_sTaste = 27).and.(aMenuArray[iMenuNum,12]=.T.)
- AAdd(p_aRueck,0)
- l_bExit1 := .T.
- l_iLaufA := l_iLaufE
- exit // Ende SAAMenu übergabe von 0 für <ESC>-Taste
- endif
- if (l_sTaste >= 97).AND.(l_sTaste <= 122)
- // Konvert. Kleinbuchst. -> Grossbuchst.
- l_sTaste := l_sTaste-32
- endif
- do Case
-
- Case (l_sTaste = 19).or.(l_sTaste = 4).or.(l_sTaste = 1)
- l_bExit2 :=.T.
-
- Case (l_sTaste = 13).or.(l_sTaste = 6)
- l_bExit2 :=.T.
-
- Case AScan(p_aKoordy,l_CodeBlock) <> 0
- l_bExit2 :=.T.
-
- Otherwise
- l_bExit2 :=.F.
- endcase
- enddo
- /********************MenuZeileNeuSchreiben*********************************************/
- RestScreen(aMenuArray[iMenuNum,14],0,aMenuArray[iMenuNum,14],79,l_sBild2)
- /*********************LeuchtBalkenSchreiben********************************************/
- SetColor(p_aColor[2])
- do Case
- Case (l_sTaste=4) // Rechtspfeil
- do Case
- Case (l_iLauf3 = l_iLaufE) // ist aktueller MP der letzte MP
- l_iLauf3 := l_iLaufA // gehe zu Anfang
-
- Case (l_aHorMenu[l_iLauf3+1,3])=.F. // ist der naechste MP gesperrt
- l_iLauf3 := l_iLauf3+1 // zeiger auf gesperrten MP
- do While (l_aHorMenu[l_iLauf3,3])=.F. // wiederhole so lange
- // gesperrt
- l_iLauf3 := l_iLauf3+1 // Zeiger erhöhen
- // letzer freier MP
- do case
- case ((l_iLauf3+1) = l_iLaufE).and.((l_aHorMenu[l_iLauf3+1,3])=.F.)
- l_iLauf3 := l_iLaufA // zeiger an anfang
- exit // und raus aus schleife
- case ((l_iLauf3+1) = l_iLaufE)
- l_iLauf3 := l_iLaufE // zeiger an anfang
- exit // und raus aus schleife
- endcase
- enddo
- Otherwise // alles andere
- l_iLauf3 := l_iLauf3+1 // Zeiger erhöhen
- endCase
- Case (l_sTaste=19) // Linkspfeil
- do Case
- Case (l_iLauf3 = l_iLaufA) //ist aktueller MP der erste MP
- l_iLauf3 := l_iLaufE // setze zeiger an den schluss setzen
-
- Case (l_aHorMenu[l_iLauf3-1,3])=.F. //ist vorhergehender MP zulässig
- l_iLauf3 := l_iLauf3-1 //zeiger auf gesperrten MP
- do While (l_aHorMenu[l_iLauf3,3])=.F. //wiederhole solange
- // MP gesperrt
- l_iLauf3 := l_iLauf3-1 //zeiger um 1 erniedrigen
- enddo
- Otherwise //alles andere
- l_iLauf3 := l_iLauf3-1 //zeiger erniedrigen
- endCase
- Case AScan(p_aKoordy,l_CodeBlock) <> 0 // auf Hot-key testen
- l_iLauf3 := AScan(p_aKoordy,l_CodeBlock)
- l_staste := 13
- endcase
- l_sString:=ListAsArray(l_aHorMenu[l_iLauf3,1],'~')
- SetColor(p_aColor[2])
- @ aMenuArray[iMenuNum,14],p_aKoordy[l_iLauf3,3] say l_sString[1]+l_sString[2]+l_sString[3]
- SetCenterText(aMenuArray[iMenuNum,1],aMenuArray[iMenuNum,2],aMenuArray[iMenuNum,5],aMenuArray[iMenuNum,3],aMenuArray[iMenuNum,4])
- SetMessage(aMenuArray[iMenuNum,6],aMenuArray[iMenuNum,7],l_aHorMenu[l_iLauf3,2],aMenuArray[iMenuNum,8],p_aColor[2])
- if l_sTaste=13
- /*********************** Wurde Ausgewählt und nun bearbeitet*****/
- l_bExit1 := .T.
- l_iTaste := 1
- p_aRueck := {}
- AAdd(p_aRueck,l_iLauf3)
- /***************************UnterMenuAufrufe**********************/
- /**************************Test ob UnterMenu vorhanden**************/
- if l_aHorMenu[l_iLauf3,4] <> NIL
- /**********************Vorbereiten**********************************/
- p_iLauf5 := 1
- p_aUnterMenu := l_aHorMenu[l_iLauf3,4]
- AAdd(p_aUntMenSpeicher,NIL)
- p_aUntMenSpeicher[p_iLauf5] := p_aUnterMenu
- p_aColorA := ListAsArray(p_aUnterMenu[11],',')
- SetColor(p_aUnterMenu[11])
- /*******************PULL-DOWN aktivieren **************************/
- if l_aHorMenu[l_iLauf3,4] = NIL
- l_bExit3 :=.T.
- else
- l_bExit3 :=.F.
- endif
- //******** Pulldown aufrufen
- do while .NOT.l_bExit3 //Solange l_bExit3<>.T.
- //********BS speichern
- if len(l_aBild3) < p_iLauf5
- AAdd(l_aBild3,savescreen(0,0,24,79))
- else
- l_aBild3[p_iLauf5] := savescreen(0,0,24,79)
- endif
- /************************erster UnterMenuAufruf***********************
- *************************Bild vorbereiten****************************/
- p_aColorA := ListAsArray(p_aUntMenSpeicher[p_iLauf5,11],',')
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- if (aMenuArray[iMenuNum,9]).and.(p_iLauf5 = 1) // wenn Unterbalken
- @ p_aUntMenSpeicher[p_iLauf5,1]-1,p_aUntMenSpeicher[p_iLauf5,2] clear to p_aUntMenSpeicher[p_iLauf5,1]+1,p_aUntMenSpeicher[p_iLauf5,2]+3
- endif
- BoxShadow(p_aUntMenSpeicher[p_iLauf5,1],p_aUntMenSpeicher[p_iLauf5,2],p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,4]+1)
- @ p_aUntMenSpeicher[p_iLauf5,1],p_aUntMenSpeicher[p_iLauf5,2] clear to p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,4]+1
- @ p_aUntMenSpeicher[p_iLauf5,1],p_aUntMenSpeicher[p_iLauf5,2] to p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,4]+1 double
- if (aMenuArray[iMenuNum,9]).and.(p_iLauf5=1) // wenn Unterbalken
- @ p_aUntMenSpeicher[p_iLauf5,1]-1,p_aUntMenSpeicher[p_iLauf5,2] say chr(187)+' '+chr(201)
- @ p_aUntMenSpeicher[p_iLauf5,1],p_aUntMenSpeicher[p_iLauf5,2] say chr(186)+' '+chr(200)
- endif
- if (p_iLauf5=1).and.(.NOT.(aMenuArray[iMenuNum,9]))
- @ p_aUntMenSpeicher[p_iLauf5,1]-1,p_aUntMenSpeicher[p_iLauf5,2] clear to p_aUntMenSpeicher[p_iLauf5,1]-1,p_aUntMenSpeicher[p_iLauf5,2]+3
- @ p_aUntMenSpeicher[p_iLauf5,1]-1,p_aUntMenSpeicher[p_iLauf5,2] say chr(186)+' '+chr(186)
- @ p_aUntMenSpeicher[p_iLauf5,1],p_aUntMenSpeicher[p_iLauf5,2] say chr(186)+' '+chr(200)
- endif
- if p_iLauf5 > 1
- @ p_aUntMenSpeicher[p_iLauf5,1],p_aUntMenSpeicher[p_iLauf5,2] say chr(17)
- endif
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- SetMessage(p_iZeile,p_iLaenge,p_aUntMenSpeicher[p_iLauf5,6,p_aUntMenSpeicher[p_iLauf5,9]],p_sFarbeMess,p_aColor[2])
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- l_iTaste := Achoice(p_aUntMenSpeicher[p_iLauf5,1]+1,p_aUntMenSpeicher[p_iLauf5,2]+1,p_aUntMenSpeicher[p_iLauf5,3],p_aUntMenSpeicher[p_iLauf5,4],p_aUntMenSpeicher[p_iLauf5,5],p_aUntMenSpeicher[p_iLauf5,7],'PDownMessage',p_aUntMenSpeicher[p_iLauf5,9],p_aUntMenSpeicher[p_iLauf5,10])
- if l_iTaste = 0
- l_bExit1 := .F.
- if p_iLauf5 > 1
- ASize(p_aRueck,p_iLauf5)
- else
- p_aRueck :={}
- endif
- ASize(l_aBild3,p_iLauf5)
- ASize(p_aUntMenSpeicher,p_iLauf5)
- if p_iLauf5=1
- l_bExit3 := .T.
- endif
- if p_iLauf5 <= 1
- p_iLauf5 := 1
- else
- p_iLauf5 := p_iLauf5-1
- endif
- RestScreen(0,0,24,79,l_aBild3[p_iLauf5])
- else
- l_bExit1 :=.T.
- if len(p_aRueck) <= p_iLauf5
- AAdd(p_aRueck,l_iTaste)
- else
- p_aRueck[p_iLauf5+1] := l_iTaste
- endif
- if p_aUntMenSpeicher[p_iLauf5,12] = NIL
- l_bExit3 :=.T.
- else
- p_iLauf5 := p_iLauf5+1
- if len(p_aUntMenSpeicher) = p_iLauf5-1
- AAdd(p_aUntMenSpeicher,NIL)
- p_aUntMenSpeicher[p_iLauf5] := p_aUntMenSpeicher[p_iLauf5-1,12,l_iTaste]
- else
- p_aUntMenSpeicher[p_iLauf5] := p_aUntMenSpeicher[p_iLauf5-1,12,l_iTaste]
- endif
- l_bExit3 :=.F.
- if p_aUntMenSpeicher[p_iLauf5,1] = NIL
- l_bExit3 :=.T.
- endif
- endif
- endif
- enddo
- //********Gewählt oder Abgebrochen
- /********************** ENDE Pull-Down ************/
- //*********************** ende der bearbeitung
- endif
- if l_bExit1 = .T.
- exit
- endif
- endif
- // NEU HINZUGEKOMMEN !!!
- if l_iTempE
- l_iLaufE := l_iLaufE+1
- endif
- //**********************
- l_bExit2 :=.F.
- enddo
- if udfabbruch
- p_aRueck[len(p_aRueck)]:=p_aRueck[len(p_aRueck)]-1
- endif
- SetCursor(1)
- if grundangaben[1,12]
- restscreen(0,0,24,79,l_sBild1)
- else
- restscreen(0,0,24,79,l_sBild4)
- endif
- RETURN p_aRueck
- /*********************** Ende of Function ************************/
- /*****************************************************************/
- *
- * ListAsArray( <cList>, <cDelimiter> ) --> aList
- * Konvertiert einen String mit Trennzeichen in ein Array
- *
- * Beispiels UDFs zur Verarbeitung von Strings
- *
- * Copyright (c) 1990 Nantucket Corp. All rights reserved.
- *
- * Deutsche Anpassung:
- * Copyright (c) 1990 Nantucket GmbH
- *
- */
- FUNCTION ListAsArray( cList, cDelimiter )
- LOCAL nPos
- LOCAL aList := {} // Definiert leeres Array
-
- IF cDelimiter = NIL
- cDelimiter := ","
- ENDIF
- //
- DO WHILE (nPos := AT(cDelimiter, cList)) != 0
- AADD(aList, SUBSTR(cList, 1, nPos - 1)) // Fügt ein neues Element hinzu
- cList := SUBSTR(cList, nPos + 1)
- ENDDO
- AADD(aList, cList) // Letztes Element hinzufügen
- //
- RETURN aList // Array zurückgeben
-
-
- /*********************** Ende of Function ************************/
-
- /*****************************************************************
- * Occurs( <cSearch>, <cTarget> ) --> nCount
- * Stellt die Anzahl des Zeichens <cSearch> in <cTarget> fest
- *
- * Beispiels UDFs zur Verarbeitung von Strings
- *
- * Copyright (c) 1990 Nantucket Corp. All rights reserved.
- *
- * Deutsche Anpassung:
- * Copyright (c) 1990 Nantucket GmbH
- *
- ******************************************************************/
- FUNCTION Occurs( cSearch, cTarget )
- LOCAL nPos, nCount := 0
- DO WHILE !EMPTY( cTarget )
- IF (nPos := AT( cSearch, cTarget )) != 0
- nCount++
- cTarget := SUBSTR( cTarget, nPos + 1 )
- ELSE
- // End of string
- cTarget := ""
- ENDIF
- ENDDO
- RETURN nCount
- /*********************** Ende of Function ************************/
- /*****************************************************************
- * Name: WELCHE HOT-KEYS
- * Art: FUNCTION
- * Autor: FRANK PACHER
- * Datum: 10.APRIL 1991
- * Dateien: %
- * Programme: SAAMENU()
- * Compiling: %
- * Aufruf: WHotKey(zeile,menupunkt)
- * zeile - Anzeigezeile für Hot-Key
- * menupunkt - Nummer des Menupunktes
- * Glob.Var.:
- * Besonderheiten: nur für SAAMENU()
- * (c) by F.PACHER
- ******************************************************************/
- function WHotKey(x,punkt)
- if p_aKoordy[punkt,2] <> NIL
- @ x,p_aKoordy[punkt,1] say p_aKoordy[punkt,2]
- endif
- return NIL
- /*********************** Ende of Function ************************/
- /*****************************************************************
- * Name: TEXT_CENTRIEREN
- * Art: FUNCTION
- * Autor: PACHER
- * Datum: 19/03/91
- * Dateien: %
- * Programme: %
- * Compiling: /N /M
- * Aufruf: SetCenterText(ls_menuname,li_zeile,ls_farbe1,ls_begrenz,
- * ls_farbe2) -> NIL
- * Glob.Var.:
- * Besonderheiten: ls_menuname = STRING
- * Text der ausgegeben werden soll
- * li_zeile = INTEGER
- * Ausgabezeile
- * ls_farbe1 = STRING
- * Farbe des Namens (vor/nint) (default='w+/r')
- * ls_begrenz = STRING[2]
- * Begrenzungszeichen des Namens (default='')
- * ls_farbe2 = STRING
- * Farbe der Begrenzer (vor/hint)
- * (default=color_norm)
- * (c) by F.PACHER
- *******************************************************************************/
-
- function SetCenterText(ls_menuname,li_zeile,ls_farbe1,ls_begrenz,ls_farbe2)
-
- private pi_stranfang
- private pi_strende
- private pi_strlaenge := len(ls_menuname)
- private ps_tmpcolor := SetColor()
- if ls_begrenz <> NIL
- private ps_tmpbe1 :=SubStr(ls_begrenz,1,1)
- private ps_tmpbe2 :=SubStr(ls_begrenz,2,1)
- endif
-
- if ls_farbe1 = NIL
- ls_farbe1 :='w+/r'
- endif
- if ls_farbe2 = NIL
- ls_farbe2 := color_norm
- endif
- pi_stranfang := INT((80/2)-(pi_strlaenge/2))
- pi_strende := pi_stranfang+pi_strlaenge
- if ls_begrenz <> NIL
- SetColor(ls_farbe2)
- @ li_zeile,pi_stranfang-1 say ps_tmpbe1
- @ li_zeile,pi_strende say ps_tmpbe2
- endif
- SetColor(ls_farbe1)
- @ li_zeile,pi_stranfang say ls_menuname
- SetColor(ps_tmpcolor)
- return NIL
- /*********************** Ende of Function ************************/
- /*******************************************
- * Name: NACHICHT SETZEN
- * Art: FUNCTION
- * Autor: FRANK PACHER
- * Datum: 12.APRIL 1991
- * Dateien: %
- * Programme: SAAMENU() / freiverwendbar
- * Compiling: /n /m /b
- * Aufruf: SetMessage(p_iZeile,p_iLaenge,l_sMessage,l_sFarbe,l_sFarbeF1)
- * p_iZeile - zeile der Nachicht
- * p_iLaenge - Max Länge der Nachicht
- * l_sMessage - Nachicht-Text
- * l_sFarbe - farbe d. Nachicht
- * l_sFarbeF1 - farbe für F1-Darstellung
- * Glob.Var.:
- * Besonderheiten:
- * (c) by F.PACHER
- ******************************************************************/
- function SetMessage(p_iZeile,p_iLaenge,l_sMessage,l_sFarbe,l_sFarbeF1)
-
- local l_iSpalte1
- local l_iSpalte2
- l_iSpalte1 := 40-Round((len(l_sMessage)/2),0)
- l_iSpalte2 := 40-Round((p_iLaenge/2),0)
- SetColor(l_sFarbe)
- @ p_iZeile,l_iSpalte2 say replicate(' ',p_iLaenge)
- @ p_iZeile,l_iSpalte1 say l_sMessage
- @ p_iZeile,0 say '│'
- SetColor(l_sFarbeF1)
- @ p_iZeile,1 say p_sHotZeig
- SetColor(l_sFarbe)
- @ p_iZeile,col() say '│'
- return NIL
- /*********************** Ende of Function ************************/
- /*****************************************************************
- * BoxShadow( <nOben>, <nLinks>, <nUnten>, <nRechts> ) --> NIL
- * Zeichnet eine Schattenbox
- *
- *
- * Copyright (c) 1990 Nantucket Corp. All rights reserved.
- *
- * Deutsche Anpassung:
- * Copyright (c) 1990 Nantucket GmbH
- *
- ******************************************************************/
- ******************************************************************/
-
- FUNCTION BoxShadow( nTop, nLeft, nBottom, nRight )
- LOCAL nShadTop, nShadLeft, nShadBottom, nShadRight
-
- nShadTop := nShadBottom := MIN(nBottom + 1, MAXROW())
- nShadLeft := nLeft + 1
- nShadRight := MIN(nRight + 1, MAXCOL())
-
- RESTSCREEN( nShadTop, nShadLeft, nShadBottom, nShadRight,;
- TRANSFORM( SAVESCREEN(nShadTop, nShadLeft, nShadBottom, nShadRight),;
- REPLICATE("X", nShadRight - nShadLeft + 1 ) ) )
-
- nShadTop := nTop + 1
- nShadLeft := nShadRight := MIN(nRight + 1, MAXCOL())
- nShadBottom := nBottom
-
- RESTSCREEN( nShadTop, nShadLeft, nShadBottom, nShadRight,;
- TRANSFORM( SAVESCREEN(nShadTop, nShadLeft , nShadBottom, nShadRight),;
- REPLICATE("X", nShadBottom - nShadTop + 1 ) ) )
-
- RETURN NIL
- /*********************** Ende of Function ************************/
- /*******************************************
- * Name: PULL DOWN MESSAGE Release 1.5
- * Art: FUNCTION
- * Autor: FRANK PACHER
- * Datum: 4.MAI 1991
- * Dateien: %
- * Programme: SAAMENU()
- * Compiling: %
- * Aufruf: PDownMessage(Para1,Para2,Para3)
- * Glob.Var.:
- * Besonderheiten: Ist eine UDF() für den Aktuellen Menu Punkt vorhanden,
- * werden die Rückgabe-parameter von ACHOICE über PDOWNMESSAGE
- * an die UDF() weitergegeben. (als PRIVATE-Variable)
- * AModus -> aktueller ACHOICE-Modus
- * APosZeiger -> aktuelle Position d. MenuZeigers
- * APosRel -> Relative -"- -"-
- * Rueck -> Rueckgabewert wie bei ACHOICE()-UDFStatus
- * ( 0 / 1 / 2 / 3)
- * ACHTUNG : Die Positionierung mittels Buchstabe ist
- * hier noch NICHT möglich !!
- * Release 2.0 abwarten !
- * EXTRA ZUM EINBINDEN
- * FÜR ACHOICE() ---> Parameter 1 / 2 / 3
- * (c) by F.PACHER
- ******************************************************************/
- function PDownMessage
- parameters AModus, APosZeiger, APosRel
- local l_sBild4
- local udfrueck := NIL
- local ufunc := p_aUntMenSpeicher[p_iLauf5,8]
- private Rueck := 2
-
- do case
- case AModus = 1
- Rueck := 2
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(25)+' '
- case AModus = 2
- Rueck := 2
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+' '
- case (AModus = 0)
- SetMessage(p_iZeile,p_iLaenge,p_aUntMenSpeicher[p_iLauf5,6,APosZeiger],p_sFarbeMess,p_aColor[2])
- do case
- case LastKey() = 13
- Rueck := 1
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(2)+chr(2)+' '
- l_sOldColor := p_aUntMenSpeicher[p_iLauf5,11]
- l_sTempString :=trim(p_aUntMenSpeicher[p_iLauf5,5,APosZeiger])
- l_sTempString :=substr(l_sTempString,1,(p_aUntMenSpeicher[p_iLauf5,4]-p_aUntMenSpeicher[p_iLauf5,2]-1))
- SetColor(p_aColorA[2])
- @ p_aUntMenSpeicher[p_iLauf5,1]+1+APosRel,p_aUntMenSpeicher[p_iLauf5,2]+1 say l_sTempString
- @ p_aUntMenSpeicher[p_iLauf5,1]+1+APosRel,p_aUntMenSpeicher[p_iLauf5,2] say chr(26)
- SetColor(l_sOldColor)
- case (LastKey() = 27).or.(LastKey() = 19).or.(LastKey() = 4)
- Rueck := 0
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case (LastKey() = 5).or.(LastKey() = 24)
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case (LastKey() = 1).or.(LastKey() = 6)
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case (LastKey() = 18).or.(LastKey() = 3)
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- otherwise
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- endcase
- /******************************* UEbergebene UDF() aufrufen ****/
- if (ufunc <> NIL)
- udfrueck:=eval(ufunc)
- endif
- case (AModus = 3)
- SetMessage(p_iZeile,p_iLaenge,p_aUntMenSpeicher[p_iLauf5,6,APosZeiger],p_sFarbeMess,p_aColor[2])
- do case
- case LastKey() = 13
- Rueck := 1
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(1)+chr(1)+' '
- l_sOldColor := p_aUntMenSpeicher[p_iLauf5,11]
- l_sTempString :=trim(p_aUntMenSpeicher[p_iLauf5,5,APosZeiger])
- l_sTempString :=substr(l_sTempString,1,(p_aUntMenSpeicher[p_iLauf5,4]-p_aUntMenSpeicher[p_iLauf5,2]-1))
- SetColor(p_aColorA[2])
- @ p_aUntMenSpeicher[p_iLauf5,1]+1+APosRel,p_aUntMenSpeicher[p_iLauf5,2]+1 say l_sTempString
- @ p_aUntMenSpeicher[p_iLauf5,1]+1+APosRel,p_aUntMenSpeicher[p_iLauf5,2] say chr(26)
- SetColor(l_sOldColor)
- case (LastKey() = 27).or.(LastKey() = 19).or.(LastKey() = 4)
- Rueck := 0
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case (LastKey() = 5).or.(LastKey() = 24)
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case (LastKey() = 1).or.(LastKey() = 6)
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case (LastKey() = 18).or.(LastKey() = 3)
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- case ((LastKey() >= 65).and.(LastKey() <=90 )).or.((LastKey() >= 97).and.(LastKey() <=122 ))
- Rueck := 3
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- otherwise
- Rueck := 2
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- endcase
- /******************************* UEbergebene UDF() aufrufen ****/
- if (ufunc <> NIL)
- udfrueck:=eval(ufunc)
- endif
- case AModus = 4
- l_sBild4 := SaveScreen(0,0,24,79)
- SetColor('w+/r')
- BoxShadow(8,9,14,32)
- @ 7,8 clear to 14,32
- @ 7,8 to 14,32 double
- @ 7,15 say '╡ FEHLER ╞'
- @ 9,10 say ' Es ist kein'
- @ 10,10 say 'Menupunkt anwählbar !'
- SetColor('w+*/r')
- @ 12,10 say ' <TASTE>'
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- tone(2000)
- tone(1500)
- tone(1000)
- tone(950)
- tone(900)
- tone(850)
- tone(800)
- tone(750)
- tone(700)
- inkey(0)
- RestScreen(0,0,24,79,l_sBild4)
- Rueck := 0
- @ p_aUntMenSpeicher[p_iLauf5,3]+1,p_aUntMenSpeicher[p_iLauf5,2]+3 say ' '+chr(24)+chr(25)+' '
- endcase
- if udfrueck<>NIL
- Rueck:=Udfrueck
- if Rueck=1
- udfabbruch:=.T.
- endif
- endif
- SetColor(p_aUntMenSpeicher[p_iLauf5,11])
- RETURN Rueck
- /*********************** Ende of Function ************************/
-
- /************************ END of FILE ****************************/
-