home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------------ */
- /* SAAMENU.PRG */
- /* Pulldown-Menüs für Clipper-Anwendungen */
- /* Compiler : Clipper 5.0 */
- /* Module : STRING.PRG (im Lieferumfang von Clipper) */
- /* Schalter : /n /m /b */
- /* (c) 1991 Frank Pacher & TOOLBOX */
- /* ------------------------------------------------------ */
- FUNCTION SaaMenu(iMenuNum, aMenuArray)
- /* Nummer - Nr.des Menüs (default=1 bei NIL) */
- /* MenuArray - Array mit den Menüpunkten */
- // -> wird später 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_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
- /* --- weitere Deklarationen ---------------------------- */
- // defaults setzen :
- IF iMenuNum = NIL // Menu Nummer
- iMenuNum := 1
- ENDIF
- IF aMenuArray = NIL // Menu Name
- aMenuArray := aMenu
- 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
-
- l_aHorMenu := aMenuArray[iMenuNum, 13]
- 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) F.Pacher & TOOLBOX '
- ENDIF
- @ 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
-
- /* ----- Horizontale Menüsteuerung ---------------------- */
- l_CodeBlock := {|x| x[2] = l_sTaste}
- DO WHILE (.NOT.l_bExit1).AND.(.NOT.(l_iLaufA = l_iLaufE))
- // solange nicht <ET> / Hotkey
- DO WHILE .NOT.l_bExit2 // solange keine zulaessige Taste
- l_sTaste := INKEY(0)
- 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)
- // Kleinbuchstaben -> Großbuchstaben
- 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
-
- /* ----- Menüzeile neu schreiben ------------------------ */
- RestScreen(aMenuArray[iMenuNum, 14], 0, ;
- aMenuArray[iMenuNum, 14], 79, l_sBild2)
-
- /* ----- Leuchtbalken schreiben ------------------------- */
- 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 zum 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.
- l_iLauf3 := l_iLauf3+1
- // 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 // Schleife verlassen
- CASE ((l_iLauf3+1) = l_iLaufE)
- l_iLauf3 := l_iLaufE // Zeiger an Anfang
- exit // Schleife verlassen
- 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 // Zeiger an den Schluss
- CASE (l_aHorMenu[l_iLauf3-1, 3]) = .F.
- // ist vorhergehender MP zulässig ?
- l_iLauf3 := l_iLauf3-1 // gesperrter MP
- DO WHILE (l_aHorMenu[l_iLauf3, 3]) = .F.
- // wiederhole solange MP gesperrt
- l_iLauf3 := l_iLauf3-1 // Zeiger 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 // MP ausgewählt
- l_bExit1 := .T.
- l_iTaste := 1
- p_aRueck := {}
- AAdd(p_aRueck, l_iLauf3)
- /* --- Test, ob Untermenü vorhanden ... --------- */
- IF l_aHorMenu[l_iLauf3, 4] <> NIL
- 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])
- IF l_aHorMenu[l_iLauf3, 4] = NIL
- l_bExit3 := .T.
- ELSE
- l_bExit3 := .F.
- ENDIF
- // Pulldown aufrufen
- DO WHILE .NOT.l_bExit3
- 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 Untermenüaufruf -------------- */
- 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_sOldColor := p_aUntMenSpeicher[p_iLauf5, 11]
- l_sTempString := ;
- trim(p_aUntMenSpeicher[p_iLauf5, 5, l_iTaste])
- 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] + l_iTaste, ;
- p_aUntMenSpeicher[p_iLauf5, 2] + 1 ;
- SAY l_sTempString
- SetColor(l_sOldColor)
- ENDIF
- 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 // l_bExit3 := (p_iLauf5 = 1)
- 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.
- // l_bExit3 := (p_ .... )
- ENDIF
- ENDIF
- ENDIF
- ENDDO
- // Ende der Bearbeitung
- ENDIF
- IF l_bExit1 = .T.
- exit
- ENDIF
- ENDIF
- l_bExit2 := .F.
- ENDDO
- 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
- /* ------------------------------------------------------
- ListAsArray( <cList>, <cDelimiter> ) --> aList
- Konvertiert einen String mit Trennzeichen in ein Array.
- gehört zum Lieferumfang und
- muß an dieser Stelle eigebunden werden...
- ---------------------------------------------------------
- Occurs( <cSearch>, <cTarget> ) --> nCount
- Stellt die Anzahl des Zeichens <cSearch> in <cTarget> fest
- gehört zum Lieferumfang und
- muß an dieser Stelle eingebunden werden...
- --------------------------------------------------------- */
-
- /* ------------------------------------------------------ */
- FUNCTION WHotKey(x, punkt)
- /* x - Anzeigezeile für Hot-Key */
- /* punkt - Nummer des Menupunktes */
- IF p_aKoordy[punkt, 2] <> NIL
- @ x, p_aKoordy[punkt, 1] SAY p_aKoordy[punkt, 2]
- ENDIF
- RETURN NIL
- /* ------------------------------------------------------ */
- FUNCTION SetCenterText(ls_menuname, li_zeile, ;
- ls_farbe1, ls_begrenz, ls_farbe2)
- /* ls_menuname = STRING auszugebender Text */
- /* 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) */
- 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
- /* ------------------------------------------------------ */
- FUNCTION SetMessage(p_iZeile, p_iLaenge, ;
- l_sMessage, l_sFarbe, l_sFarbeF1)
- /* p_iZeile - Zeile der Nachricht */
- /* p_iLaenge - Max. Länge der Nachricht */
- /* l_sMessage - Nachricht-Text */
- /* l_sFarbe - Farbe d. Nachicht */
- /* l_sFarbeF1 - Farbe für F1-Darstellung */
- 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 '<F1>'
- @ p_iZeile, col() SAY 'Hilfe '
- SetColor(l_sFarbe)
- @ p_iZeile, col() SAY '│'
- RETURN NIL
- /* ------------------------------------------------------
- BoxShadow( <nOben>, <nLinks>, <nUnten>, <nRechts> )
- Zeichnet eine Schattenbox
-
- gehört zum Lieferumfang und
- muß an dieser Stelle eingebunden werden. */
- /* ------------------------------------------------------ */
- FUNCTION PDownMessage
- /* Ist eine UDF() für den aktuellen Menüpunkt vorhanden, */
- /* werden die Rückgabe-Parameter von ACHOICE über */
- /* PDOWNMESSAGE als PRIVATE-Variable an die UDF() */
- /* weitergegeben. */
- /* aModus -> aktueller ACHOICE-Modus */
- /* APosZeiger -> aktuelle Position d. Menüzeigers */
- /* APosRel -> Relative -"- -"- */
- /* Rueck -> Rueckgabewert wie bei ACHOICE() */
- /* ( 0 / 1 / 2 / 3) */
- parameters aModus, APosZeiger, APosRel
- LOCAL l_sBild4
- 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(25) + ' '
- 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(24) + CHR(25) + ' '
- 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
- IF (uFunc <> NIL)
- 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(24) + CHR(25) + ' '
-
- 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
- IF (uFunc <> NIL)
- 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])
- 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
- SetColor(p_aUntMenSpeicher[p_iLauf5, 11])
- RETURN Rueck
- /* ------------------------------------------------------ */
- /* Ende von SAAMENU.PRG */
-
-