Deutsch
Beispiele

Gewichtskontrolle

 

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


99 kB
Hochgeladen:23.02.2016
Ladeanzahl164
Herunterladen
103 kB
Hochgeladen:23.02.2016
Ladeanzahl118
Herunterladen
114 kB
Hochgeladen:23.02.2016
Ladeanzahl122
Herunterladen
118 kB
Hochgeladen:23.02.2016
Ladeanzahl124
Herunterladen
 
23.02.2016  
 




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 ...
 
23.02.2016  
 




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.
 
23.02.2016  
 



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.
 
23.02.2016  
 




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
 
23.02.2016  
 



@Micha:

Bei

msg.box " AUF WIEDERSEHEN ",null,["OKAY"],null,E

verstehe ich E nicht weil e in Deinem Beispiel auf keine procaddr zeigt.
msg.box "Titel","Text","OK","VorgabeText",@myProc

proc myproc(btn,txt)

    print "Es wurde Button "+str(btn)+" gewählt und der eingegebene Text lautet: "+txt

endproc


@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.
 
23.02.2016  
 




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.....
 
24.02.2016  
 



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)
 
24.02.2016  
 




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.
 
24.02.2016  
 




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
 
24.02.2016  
 




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-.....
 
MS
01.03.2016  
 



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!
 
02.03.2016  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

14.747 Betrachtungen

Unbenanntvor 0 min.
DB HoKi28.02.2020
p.specht07.12.2018
Micha1233408.07.2017
bloniTec30.08.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Micha12334 (7x)
HofK (5x)
iF (4x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie