Beispiele | | | | Micha12334 | Hallo Leute, ich versuchte mal eine einfache App zur Gewichtskontrolle, zur Diskussion und zur Anschauung zu editieren. Schreib, was ist schlecht, zerreißt es, was könnte man besser machen. Ich weiß, was als erstes kommt: Klammern enfernen,....ok kommt noch. Habe alles auf meinen Tab Lenovo 2 und Samsung S6 getestet. Geht so einigermaßen... (Lenovo = A:5.01, S6= A:5.1.1)
//
// InfinityProfan Program
// Gewichtskontrolle v0.0.1
// created 2016-01-24
var grid =gui.grid(gui.hwnd,[2,5])
var text1 = "Gewichts- \n kontrolle \n in (kg) am: "
var altg = float(altg)
var neug = 0.00
var diff
var neug = float(neug)
var zeit1 = time(7)
var zeit2
var E
//var btnE = gui.button,[grid,2,5],"AUS",ende
altg = file.read("gewicht.txt")
zeit2= file.read("datum.txt")
gui.background(grid,rgb(50,50,50))
gui.background([grid,1,2],rgb(90,90,90))
gui.background([grid,2,2],rgb(90,90,90))
gui.background([grid,1,3],rgb(130,130,130))
gui.background([grid,2,3],rgb(130,130,130))
gui.background([grid,1,4],rgb(150,150,150))
gui.background([grid,2,4],rgb(150,150,150))
gui.background([grid,1,5],rgb(130,130,130))
gui.background([grid,2,5],rgb(100,0,0))
gui.text[grid,1,1] text1
gui.text[grid,2,1] zeit1
gui.text[grid,1,2] "Gewicht am \n"+zeit2
gui.text[grid,2,2] altg
gui.text[grid,1,3] " Neueingabe:"
gui.text[grid,2,3] "HIER drücken" @proc1
gui.text[grid,1,4] "Differenz:"
gui.text[grid,2,5] "E N D E " @proc2
proc proc1
gui.background([grid,2,3],rgb(255,255,255))
msg.box null,null,"OKAY","",@neu
endproc
proc neu btn txt
if str(btn) == 1
if txt <> 0
neug = txt
diff = altg - neug
diff = round(diff,[3])
gui.text[grid,2,4] diff
file.write("gewicht.txt",neug)
file.write("datum.txt",zeit1)
gui.text[grid,1,5] "Neugewicht \n= "+neug +" kg"
msg.box, " Gewicht ist gespeichert ",null,["OKAY"],null,go
endif
endif
endproc
proc go btn txt
if str(btn) == 1
proc2
endif
endproc
proc proc2
msg.box " AUF WIEDERSEHEN ",null,["OKAY"],null,E
sleep 5000
end
endproc
|
| | | | |
| | HofK | Das
msg.box " AUF WIEDERSEHEN ",null,["OKAY"],null,E sleep 5000 end
bringt es nicht wegen
Referenz sleep: "Achtung: ganz ähnlich wie bei Windows hat dann das Programm auch keine Zeit für Anzeigen. Beispielsweise werden auch Print-Ausgaben erst ausgegeben wenn der Hauptthread idle ist und somit auch print "Hallo Welt" mit anschließendem sleep 5000 die Print-Ausgabe erst nach 5 Sekunden zeigt.
Wer eine Proc zeitversetzt ausführen möchte sollte besser die Funktion time(proc,ms) verwenden. "
-----
Die Text Controls werden bei dir übereinandergelegt siehe auch [...]
var hTxt=gui.text[grid,2,4] "" // (korr. auf 2,4 nachträglich)
proc neu btn txt ... gui.text hTxt diff ...
... schaue noch weiter ...
Nachtrag: selbes bei ...Neugewicht ... |
| | | | |
| | HofK | Siehe Korr. (rot) und Nachtrag im Vorbeitrag
Merkwürdig:
Der Eingabedialog Box mit OKAY erscheint zweimal, der Dialog "Gewicht ist gespeichert" nicht.
Zum Test habe ich dort aus OKAY mal WEITER gemacht. |
| | | | |
| | | Was ich sehe:
da altg noch nicht existiert in float(altg) ist es dort null,
float(null) ergibt 0, kann man also gleich var altg=0 schreiben. |
| | | | |
| | Micha12334 | - Das Problem mit der Eingabebox tritt bei mir auch auf. Ich schob es auf mein Android... Ich verstehe das mit den Übereinanderlegen der Textcontrols nicht. diff liegt auf 2,4 und neug bei 1,5. Was ist hier falsch? Das sleep werde ich nach deinem Vorschlag ändern. Ich danke dir für die schnelle Antwort. Solche Korrekturen sind eine große Hilfe für mich. Micha12333 |
| | | | |
| | | @Micha:
Bei
msg.box " AUF WIEDERSEHEN ",null,["OKAY"],null,E
verstehe ich E nicht weil e in Deinem Beispiel auf keine procaddr zeigt.
@Karl: Soll ich sleep vlt. besser nach dev.thread.sleep verschieben raus aus dem root?
msgbox sleep end
führt ja nur dazu, dass 5 sekunden lang keine msgbox angezeigt werden kann und danach gleich beendet wird. |
| | | | |
| | Micha12334 | Ja Karl, zeige mir bitte, wie das geht. Ich teste dies mit einem timer....
Das "E" hatte ich vergessen rauszuhauen. Manchmal passiert so was am späten Abend..... |
| | | | |
| | | HofK (23.02.2016)
Merkwürdig:
Der Eingabedialog Box mit OKAY erscheint zweimal, der Dialog "Gewicht ist gespeichert" nicht.
Muss es, der proc1 fehlt die Auswertung der Parameter ctrl state -
nur bei State==1 sollte sie auslösen.
state=0: draufgetatzt state=1: weggetatzt (auf state 1 prüfen für Klick!) state=2: weggetatzt außerhalb "Button" (User hat sich anders entschieden) |
| | | | |
| | HofK | Das gui.text mit den Stati 0, 1, 2 war wohl noch nicht dokumentiert? Klingt aber logisch.
@Micha: gui.text [grid,s,z] "irgendwas" erzeugt auf der Gridzelle jeweils ein neues Textcontrol. Der Befehl liefert auch ein Handle des Controls zurück. Das kann/sollte man sich bei Bedarf (ist hier gegeben) in einer Variablen z.B. hTxt merken. Der Text selbst ist erstmal leer ("").
var hTxt=gui.text [grid,2,4] ""
Möchte man nun Text auf das bestehende Textcontrol bringen, dann mus bei gui.text nicht das Handle einer Gridzelle, sondern das Handle eines bestehenden Textcontrols angegeben werden. Also hier z.B. hTxt.
gui.text hTxt "irgendwas anderes"
In deinem Beispiel konnte man sehen, wie die eingegebenen Zahlen wirklich übereinander "gezeichnet" werden, da du im Verlauf mehrere Textcontrols auf der identischen Zelle erzeugst wenn man neue Eingaben macht. Auch cool für Spezialeffekte.
Deinen "Fehler" habe ich auch selbst erst gemacht. [...] Mein Einwand war dann, einen extra Befehl gui.settext zu haben, der nur auf Textcontrols ohne Fehlermeldung durchgeht.
Aber wie immer - es hat Vor- und Nachteile. David muss abwägen. |
| | | | |
| | Micha12334 | Recht vielen Dank an Euch, das hilft mir weiter und ich hab dazugelernt! Darum veröffentliche ich auch meine kleinen Test. 'Learn by doing' ist das Motto für mich. Micha12334 |
| | | | |
| | Micha12334 | Hallo Leute, habe das Programmchen "Gewichtskontrolle" überarbeitet. Ich glaube, so könnte man es veröffentlichen:
// InfinityProfan Program
// neu-g v0.0.1
// created 2016-02-29
grid =gui.grid(gui.hwnd,[2,5])
text1 = "Gewichts- \n kontrolle \n in (kg) am: "
zeit
altg = 0
neug = 0.00
zeit1 = time(7)
altg = file.read("masse.txt")
zeit2= file.read("heute.txt")
gui.background(grid,rgb(0,0,100))
gui.background([grid,1,2],rgb(90,90,90))
gui.background([grid,2,2],rgb(90,90,90))
gui.background([grid,1,3],rgb(130,130,130))
gui.background([grid,2,3],rgb(130,130,130))
gui.background([grid,1,4],rgb(150,150,150))
gui.background([grid,2,4],rgb(150,150,150))
gui.background([grid,1,5],rgb(130,130,130))
gui.background([grid,2,5],rgb(0,0,100))
gui.text [grid,1,1] text1
gui.text [grid,2,1] zeit1
gui.text [grid,1,2] "Gewicht am \n"+zeit2
gui.text [grid,2,2] altg
gui.text [grid,1,3] " Neueingabe:"
gui.text [grid,2,3] "HIER drücken" @proc1
gui.text [grid,1,4] "Differenz:"
gui.text [grid,2,5] "E N D E " @proc2
proc proc1 ctrl state
global grid
if state==1
gui.background([grid,2,3],rgb(255,255,255))
msg.box null,null,"OKAY","",@neu
endif
endproc
proc neu btn txt
global grid,neug,altg,zeit1
if btn==1
if txt!=""
neug = txt
diff = altg - neug
diff = round(diff,[3])
gui.text[grid,2,4] diff
if diff < 0
gui.background([grid,1,4],rgb(150,50,50))
gui.background([grid,2,4],rgb(150,50,50))
endif
if diff > 0
gui.background([grid,1,4],rgb(50,150,50))
gui.background([grid,2,4],rgb(50,150,50))
endif
file.write("masse.txt",neug)
file.write("heute.txt",zeit1)
gui.text[grid,1,5] "Neugewicht \n= "+neug +" kg"
msg.box " Gewicht ist gespeichert ",null,["OKAY"],null,@go
endif
endif
endproc
proc go btn
case btn==1 : proc2
endproc
proc proc2
end msg.box " AUF WIEDERSEHEN ",null,["bye"]
endproc
Testet es selbst einmal und schaut nach bugs und Optik-..... |
| | | | |
| | | Bin schon am drüberstürzen -
quasi mit Zahnbürste und Duschkopf in der Hand. ^^
Hier ein Vertipper sicher: diff = round(diff,[3]) statt round(diff,3)
Tip: mit Funktion long einen String zu long zwingen z.B. für: mywert=long(file.read("file")) bzw. mywert=long file.read "file"
Mist, muss längst los... bis heute Abend! |
| | | | |
|
AntwortenThemenoptionen | 14.746 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |