German Andere (eigene) Tastatur: Wie bekomme ich die Tastenklicks in das Textfeld?

klaus

Expert
Licensed User
Longtime User
Hallo JOTHA,
Ich glaube ein Paar Erklärungen, wie Ich mir das vorstelle sind angebracht.
Ich unterscheide 3 Phasen:
- Eingabe ( hier sind es eigentlich schon 3 Funktionen: Buchstaben erfassen, verarbeiten und anzeigen)
- Rechnung
- Ausgabe (Anzeige)

Eingabe:
Hier müssen wir die Buchstaben der Tastatur erfangen und anzeigen.
Zur Anzeige möchtest Du das Deutsches Format dazu sind die TextBox.Text und Label.Text Felder da.
Zum Rechnen brauchst Du das Englische Format dazu verwende Ich Variablen.
Wenn Du genauer in die Tastaturroutine rein schaust, sind immer 2 Codelinien, zumBeispiel für das Gewicht:
B4X:
Gewicht1.Text=Gewicht1.Text&StrAt(Sender,12) 
Gewicht1Wert=Gewicht1Wert&StrAt(Sender,12)
Gewicht1.Text ist der Inhalt des Textfelds der TextBox, Deutsches Format, und das ist für mich nur ein Textfeld nur zur Anzeige
Gewicht1Wert ist der Rechenwert, Englisches Format ist für mich eine Variable
Das Gleiche gilt für die anderen Werte.
Im Prinzip benütze Ich nie Textfelder als Variablen. Und rechne nur mit Variablen, nach meiner obigen persönlichen Definition.

Rechnung:
Hier brauchst Du Variablen im Englischen Format !
Die Rechnung ist
B4X:
Ergebnis = Gewicht1Wert * AnkaufWert * Karat1Wert /1000
und das 'Ergebniss' ist eine Variable, die für spätere Rechnungen oder sont noch was zur Verfügen steht.

Anzeige:
Hier müssen wir die Variablen in Textfeldern anzeigen, und da Dein Anzeigeformat nicht das gleiche ist wie das Rechen- oder Variableformat mussen wir die Variablen ins Anzeigeformat umwandeln.
Da bei der Eingabe aber zugleich beide Formate erzeugt werden, brauchen wir nur eine Umwandlungsroutine Englisch>Deutsch zur Anzeige.
Das heisst dass die LabelErgebnis1A.Text Linie unnütz ist und
LabelErgebnis1B.Text nur zur Anzeige im Deutschen Format dient.

Ich hoffe dass diese Erklärung nicht zu pedantisch aber klar ist.

Noch eine Frage, in deiner Letzten Version hast Du 2 Goldankauf Module die auf den ersten Blick identisch sind ausser dem Index 1 und 2. Dann schreibst Du dass es wahrscheinlich 7 werden sollen. Heisst das dass Du 7 Goldaufkaufe verwalten willst und dazu mit 7 quasi identischen Modulen arbeiten willst? Wenn ja gibt es eine viel einfachere und übersichtliche Möglichkeit.
Mit Arrayvariablen zu arbeiten.
Zum Beispiel:
Gewicht(1), Gewicht(2), Gewicht(3) . . .
Karat(1), Karat(2), Karat(3) . . .
Ankauf(1), Ankauf(2), Ankauf(3) . . .
Kosten(1), Kosten(2), Kosten(3) . . . (Ergebniss)
Dazu braucht man nur ein Modul und einen Index um die verschiedenen Arrayelemente zu unterscheiden.

Die Zusammenfassung wäre dann auch viel einfacher.

Könntest Du einmal näher erklären was das Programm am Ende machen soll damit Ich besser Verstehe und eventuelle Vorschläge besser gezielt sein könnten.

Die Einfügung für die 'Kommaidiotensicherheit' siet richtig aus.
Habe kurz mit der letzen Vesion 'gespielt' und fand die Anordnung der 3 Eingabefeldern etws verwirrend. Weil von oben angefangen habe und nach der Karateingabe, im 2ten Feld, gleich die Rechnung durchgeführt wurde bevor der Ankaufwert eingegeben wurde. Wäre es nicht logischer die 2 letzten Felder zu vertauschen?

Jetzt noch die letzte blöde Frage: warum willst Du unbedingt das Deutsche Format bebehalten ?
Meine eigene Erfahrung ist dass mir das immer Probleme gab, in anderen Basics.
Für Alles was mit Comuter zu tun hat, habe Ich mich seit Jahren auf das angelsächsische umgestellt und habe es nie bereut. Aber wie schon mal gesagt es ist alles Geschmacksache.

Grüsse.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Klaus,
Ich hoffe dass diese Erklärung nicht zu pedantisch aber klar ist.
Das hast Du sehr gut erklärt und ich habe es verstanden. Im Prinzip war es mir schon klar, aber wie heißt es so schön: "Wiederholung bringt Verstärkung!"
Und weil Du es so "pedantisch", besser gesagt: AUSFÜHRLICH erklärt hast ist das natürlich SUPER (auch für andere, die das später auch mal interessieren könnte)!

Heisst das dass Du 7 Goldaufkaufe verwalten willst und dazu mit 7 quasi identischen Modulen arbeiten willst? Wenn ja gibt es eine viel einfachere und übersichtliche Möglichkeit.
Mit Arrayvariablen zu arbeiten.
Da hast Du natürlich recht, aber es soll in der Praxis möglich sein, über das untere Menü nochmals "vorwärts und rückwärts" zu blättern, um die einzelnen Posten in großen Ziffern (jeden Posten auf einer eigenen Seite) zu überprüfen und zu zeigen. Kann man das mit der "Array-Lösung" auch machen?

Jetzt in Version 6.50 ist das ja sehr schnell und bequem mit den Modulen zu erledigen.
Könntest Du einmal näher erklären was das Programm am Ende machen soll damit Ich besser Verstehe und eventuelle Vorschläge besser gezielt sein könnten.
In der Praxis sieht das so aus: Ein Kunde kommt in den Laden und will Altgold, Zahngold, Schmuck, Silber, etc. verkaufen. Oft hat dieser mehrere Stücke in verschiedenen Legierungen und Zusammensetzungen.

Das Programm muß sehr einfach sein und immer möglichst wenige und übersichtliche Informationen bereithalten. Dazu kommt der Wunsch vom Juwelier, bei Bedarf den Ankaufspreis ausblenden zu können. Das alles kann das Programm bis jetzt schon.

Auf 7 Ankäufe habe ich mich beschränkt, weil man dann die Übersicht evtl. auch im Querformat noch darstellen kann. Es sind ja keine 7 einzelnen Ankäufe, sondern ein gesamter Ankauf von verschiedenen Legierungen, z.B. ein Häufchen Münzen in 333 Karat, eine Kette in 750 Karat, ein Silberring in 925 Sterling (mit einem anderen Ankaufspreis pro Gramm), u.s.w.

Die Zusammenfassung (Rechnung) ist eigentlich nur noch am Schluß für den Juwelier, damit dieser die Gesamtsumme nicht noch extra irgendwo berechnen muß (er soll sich ja auf seinen Kunden konzentrieren können). Im Zweifelsfall soll er aber jederzeit die einzelnen Posten nochmals mit "vor- und zurückblättern" aufrufen und dem Kunden zeigen können.

Ideal wäre natürlich, wenn man jetzt noch mit einem Bluetooth-Drucker die "Ankaufsquittung" ausdrucken könnte. Aber das Thema "Drucken" ist ja schon in anderen threads (geht nicht) ausführlich behandelt worden ...

Jetzt noch die letzte blöde Frage: warum willst Du unbedingt das Deutsche Format bebehalten ? Meine eigene Erfahrung ist dass mir das immer Probleme gab, in anderen Basics.
Wie heißt das Sprichwort? "Es gibt keine blöden Fragen - nur blöde Antworten!" ... aber Spaß beiseite ...

Ich habe mit dem angelsächsichen überhaupt keine Probleme, aber es geht ja um einen Verkaufsvorgang mit unterschiedlichen Kunden (darunter sind auch "echte Schwaben").

Dem Juwelier könnte man ja noch beibringen, daß die Zahl "1,234.56 €" eigentlich 1.234,56 € ist, aber warum sollte der Juwelier das immer auch noch seinen Kunden erklären müssen?
 
Last edited:

klaus

Expert
Licensed User
Longtime User
Hallo JOTHA,

Danke für die Erklärungen. Das Sprichwort kenne Ich auch !
Es ist aber doch schön wenn man auf eine 'blöde' Frage eine sinnvolle Antwort bekommt.

Das Umblättern wäre mit den Arrayvariablen noch einfacher als mit den Modulen. In Deinem Menü mit der Weiter Taste erhöht man den Index um 1 und füllt die verschiedenen Felder mit den Werten für diesen Index.
Mit der Zurück Taste das Gleiche mit minus 1. Die Tasten könnten Pfeile beinhalten und ein Feld mit der Indexnummer dazwischen. Ob Eingabe oder Ansicht ist gleich.

Falls Dein Juwelier in Zukunft nicht mehr 7 Aufkäufe haben möchte sondern 10, müsstest Du 3 neue Module einbinden.
Mit den Arrayvariablen bräuchtest Du im Programm nur die Anzahl ändern. Beispiel für 7 Aufkäufe:
B4X:
AnzahlAufkäufe = 7
Dim Karat(AnzahlAufkäufe)
Dim Gewicht(AnzahlAufkäufe)
Dim Aufkauf(AnzahlAufkäufe)
Dim Kosten(AnzahlAufkäufe)

und für 10 bräuchtest Du bloss die erste Linie ändern.
B4X:
AnzhlAufkäufe = 10

Das wäre Alles, der ganze Rest wäre automatisch ! ?

Ist das Deutsche Format 12.345,55
Ich habe in Erinnerung 12'345,55 ?

Zum weiter fahren sollten wir eigentlich einen Neuen Thread öffnen, denn die letzten Posts haben mit dem Titel eigentlich nchts mehr zu tun.

Grüsse.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
... sollte ein neuer Thread eröffnet werden ...

Hallo Klaus,

das hört sich ja sehr gut an:
Das Umblättern wäre mit den Arrayvariablen noch einfacher als mit den Modulen.
... ist nur das "gewußt wie" (oder "Know-How")!

Das wäre Alles, der ganze Rest wäre automatisch ! ?
Das wäre SUUUUUUPER ! :sign0060:

Ist das Deutsche Format 12.345,55
Ich habe in Erinnerung 12'345,55 ?
Das deutsche Format ist 12.345,55

Zum weiter fahren sollten wir eigentlich einen Neuen Thread öffnen, denn die letzten Posts haben mit dem Titel eigentlich nchts mehr zu tun.
Du hast recht.
Wie könnte der neue Thread aussagekräftig heißen?
Oder denkst Du, das Ganze ist schon so weit, daß man es bei "Share your Creations" reinstellen kann?
 
Last edited:

JOTHA

Well-Known Member
Licensed User
Longtime User
... und noch ´ne Frage:

Ich habe jetzt in der bestehenden Version deine Hilfe umgesetzt und rechne jetzt mit den Variablen "Ergebnis1" + "Ergebnis2".

Leider kommt dann als Resultat "0,00 €" raus.

Ich habe das auch schon festgestellt, wenn ich in einem Modul Zahlen über die "echte" und nicht über die "eigene" Tastatur eingebe, dann kommt ebenfalls als Resultat "0,00 €" raus. Erst wenn ich die falsch eingegebenen Zahlen wieder mit der "eigenen" Tastatur überschreibe, kommt nach der Berechnung ein korrektes Ergebnis heraus.

Meine konkrete Frage also:
Kann es sein, das kein korrektes Ergebnis kommt, weil die Werte aus "Ergebnis1" + "Ergebnis2" nicht durch die "eigene" Tastatur kommen?

Anbei habe ich das aktuelle Beispiel zum Ausprobieren angehängt.
 

klaus

Expert
Licensed User
Longtime User
Hallo JOTHA,

Habe ein bisschen rumgespielt. Hier ist eine erster Entwurf mit einem Modul und Arrayvariablen. Um die Kosmetik habe Ich mich nicht so sehr gekümmert, überlasse Ich Dir. Habe bestimmt auch nicht alle Méglichkeiten ausprobiert.

So wie der Entwurf jetzt aussieht, würde Ich gar nicht mit Modulen arbeiten, und die 3 oder 4 Formen ins Main Modul übertragen.

Das Schreiben wird kürzer ohne eine Übersichtseinbusse.

Ich schlage Dir vor den neuen Thread im Deutschen Forum zu eröffnen mit dem Titel des Programmes. Für das 'Share your Creations' finde Ich es noch etwas zu früh. Oder eventuell in 'Open Source Projects'.
Dann müssten wir aber eher in Englisch weiter machen.

Brauchst Du die virtuelle Tatatur für etwas Anders ? Wenn nein würde Ich sie ausschalten. Diekt kannst Du nciht mit beiden arbeiten.
Falls Du wirklich beide brauchst, könnte man vieleicht mit der Door Library etwas machen, habe aber noch nicht im Detail nachgeschaut.

Grüsse und viel Spas.
 
Last edited:

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Klaus,

vielen Dank!
Ich werde mir das gleich mal anschauen!

Ich schlage Dir vor den neuen Thread im Deutschen Forum zu eröffnen mit dem Titel des Programmes. Für das 'Share your Creations' finde Ich es noch etwas zu früh.
Gute Idee - und bei "Share your Creations" sollte es schon etwas ausgereifter ("BETA-Phase") sein.
Brauchst Du die virtuelle Tatatur für etwas Anders ?
Bei der vituellen Tastatur habe ich eben nur die Zahlen und dadurch wird das Ganze fingerfreundlich.

Für den Fall, daß man das Programm (später) im Querformat verwenden möchte, sollte alternativ die eingebaute Tastatur zu verwenden sein. Zum Beispiel gibt es viele Pocket-PC´s, die im Querformat eine Schiebetastatur haben. Und da ist dann die Benutzung der Schiebetastatur bequemer. ;)
 
Top