OWBasic Menü (Deutsches Forum)
Hallo,
tut mir leid, daß ich erst jetzt zum Antworten komme ![]()
» Ich würde gerne ein einfaches Menü für mein Programm haben, leider hab aber
» überhaupt keine Ahnung wie man das machen kann, nur eine Vorstellung aber nur
» sehr schwach. Könnte mir jemand erklären wie man das hinkriegt?
schau mal unter http://www.audacia-software.de/de/pv/obprogs/osl/index.htm - da findest du die OWBasic Standard Library, die unter anderem einige Befehle für das Aufbauen von Menüstrukturen beinhaltet. Unten auf der Seite gibt es auch einige Beispielprogramme für die Verwendung der OSL; in deinem Fall wäre "guidemo" sicher interessant.
Wie man die OSL korrekt einbindet, siehst du ganz oben in "guidemo". Den Part, der für die Mehrsprachigkeit sorgt, brauchst du dir nicht genauer anzusehen, das ist eher eine Spielerei und für den Einstieg nicht relevant. Ich will den interessanten Teil mal etwas kommentieren:[...]
! Setzung des Programm-Icons: entweder als Verweis auf eine interne
! Graphik (mit picon[0]=0, picon[1]=igraph nr.) oder als eine Icon-Konstante,
! wie PocketPaint oder IconEditor sie exportieren können
const picon=(0,261,2,3)
! Anwendungsname und Text der About-Box, die beim Tippen auf die Kopfzeile
! erscheint
const pname$=("OSL/guidemo"," v1.01¶by Moritz Beutel¶¶xDC 2007 by AUDACIA¶www.audacia-software.de")
[...]
! Definition der Listeneinträge, Menu-Beschriftungen etc.
const [...]
mclr1$=("Colour","Red","Green","Blue"),
mfile1$=("File","New","Open","Save","Exit"),
mlang1$=("Language","German","English")
! Referenzen auf die Listeneinträge, Menu-Beschriftungen, ...
! Diese Indirektion erleichtert die mehrsprachige Benutzerführung,
! ist aber sonst nicht notwendig.
const &sr$=(&sr1,&sr0,&sr1),
&mclr$=(&mclr1,&mclr0,&mclr1),
&mfile$=(&mfile1,&mfile0,&mfile1),
&mlang$=(&mlang1,&mlang0,&mlang1)
[...]
! Zeichnen der GUI-Elemente
0
! initialisiert das GUI
gui_init true
! zeichnet die Kopfzeile
gui_head
! zeichnet den "x"-Button rechts oben
gui_xbtn 142,1, 1
! zeichnet allerhand Steuerelemente
gui_btn "Button1",10,30,74,40, 2
gui_chk "CheckBox1",c1!,10,50,74, 4
gui_dmenu mlang,mlangi,2,84,30,149,0, 3
gui_dmenu mclr,mclri,3,79,50,149,0, 5
gui_inactive=0
gui_rbtn "Option1",rg1,10,70,74,0, 6
gui_rbtn "Option2",rg1,79,70,149,1, 6
gui_iibox ival,-10,10,10,80,74, 7
gui_isbox sval$,"Text:",79,80,149, 8
gui_inactive=c1
x2=74
gui_list mfile,5,10,94,x2,1, 9
gui_inactive=rg1=1
gui_menu mfile,4,79,94,109,0, 10
gui_inactive=false
! überträgt den Inhalt des Puffers auf den Bildschirm
show
! Nachrichten-Warteschleife
do
! der Name ist Programm ![]()
waittouch
! Touch-Abfrage der Kopfzeile (für die About-Box)
gui_qhead
! Touch-Abfrage der registrierten Steuerelemente
! Rückgabewert ist eine Objektnummer (oder 0, falls
! kein Steuerelement ausgewählt wurde).
o=gui_touch()
[...]
! Behandlung der Auswahl der einzelnen Steuerelemente
case select o
[...]
endcase
std_scrshade
msgbox s
! Abschluß der Warteschleife
loop until std_repaint
! Wenn die Funktion std_repaint "true" zurückgibt, muß neu gezeichnet
! werden => wir springen also zurück zur Zeichenroutine
goto 0
Wenn du mehr Informationen brauchst, findest du auf der OSL-Seite auch einen Link zur Dokumentation, in der jeder Befehl einzeln im Detail erklärt wird.
So, ich hoffe, das hilft dir. Viel Erfolg damit; wenn weitere Fragen auftauchen, zögere nicht und stelle sie ![]()
gesamter Thread:

Mix-Ansicht




