ich habe mal wieder eine tolle Frage parat.
Code: Alles auswählen
LOCAL aPromptArray := {;
{"Menue1","menue1()","Menue1"},;
{"Menue2","menue2()","Menue2"},;
{"Menue3","menue3()","Menue3"},;
{"Menue4","menue4()","Menue4"},;
{"Menue5","menue5()","Menue5"},;
{"Ende" ,"AppQuit()" ,"Programmende"};
}
ASort(aPromptArray,,LEN(aPromptArray)-1,{|aX,aY| aX[1] < aY[1]}) // sortieren, damit die alphabetische Reihenfolge bleibt, aber ohne Programmende, deshalb (-1)
DO WHILE .T.
nY := 4
nX := MAXCOL()/2-4
nAuswahl := LEN(aPromptArray)
FOR nI := 1 TO nAuswahl
IF nI < nAuswahl // damit das letzte Prompt (Ende) kein Zeichen davor bekommt
IF nI > 9
cZahl := CHR(nI+55) + ")" // hier werden große Buchstaben generiert
ELSE
cZahl := CHR(nI+48) + ")" // Zahlen von 1-9
ENDIF
ELSE
cZahl := ""
ENDIF
@ nY,nX PROMPT cZahl + aPromptArray[nI,1] MESSAGE aPromptArray[nI,3]
nY += 2
NEXT
MENU TO nAuswahl
DO CASE
CASE nAuswahl = 1
&(aPromptArray[1,2])
CASE nAuswahl = 2
&(aPromptArray[2,2])
CASE nAuswahl = 3
&(aPromptArray[3,2])
CASE nAuswahl = 4
&(aPromptArray[4,2])
CASE nAuswahl = 5
&(aPromptArray[5,2])
ENDCASE
ENDDO .T.