German Verständnisproblem

peternmb

Well-Known Member
Licensed User
Longtime User
Vielleicht kann mir jemand anhand eines kleines Beispieles einige eigentlich recht simple Dinge erklären:

Ich erstelle ein Layout ("Auswahl") mit einem Panel. Darauf liegt ein TextView ("Name1") und ein Button ("OK") -> soweit ist alles ok

Im Quellcode habe ich dann:

B4X:
Sub AuswahlDialog
  Activity.LoadLayout("Auswahl")
  Dim Name1 As EditText
  Text.Name1 = "ich"    // funktioniert nicht
End Sub

Sub OK_Click
  Text.Name1 = "ich"    // funktioniert nicht
End Sub

wie kann ich in das TextView vorbelegen (nicht im Designer)?
wie kann ich das TextView nach dem Drücken des Buttons ändern?
 

klaus

Expert
Licensed User
Longtime User
B4X:
Name1.Text = "ich"
Zuerst der Projektname dann ein Punkt und dann die Eigenschaft.

B4X:
Sub AuswahlDialog
  Activity.LoadLayout("Auswahl")
  Dim Name1 As EditText
  Text.Name1 = "ich"    // funktioniert nicht
End Sub
Wo befindet sich die AuswahlDialog Routine ?

Wenn Du ein Layout nach einem anderen lädst wird dieses über dem verhergehenden überlagert.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich habe mein Project als ZIP angehängt, in dem ich jede Menge kleine Probleme habe. Das Öffnen der App und die Anzeige des Menüs funktioniert noch so wie es soll, dann der 1.Menüpunkt "neue Liste". Damit geht ein Layout für die Datenerfassung auf. Hier fangen dann meine Probleme an: ich möchte das Datumfeld mit dem aktuellen deutschen Datum vorbelegen. Für die Eingabefelder Serie und Tisch möchte ich evtl. einen Bereich festlegen (z.B. 1-99). Dann geht es mit dem Button OK weiter. Dieses Layout wird geschlossen. Das funktioniert zwar, ich weiss aber nicht ob die Vorgehensweise so OK ist. Ein anderes Layout wird geöffnet. Dabei sollen die eingegeben Daten für Datum Name usw. auf dem Hintergrundformular ersetzt werden.

Das Hintergrundformular mit den Daten zu scrollen schaffe ich auch nicht, obwohl ich das alles das gleiche Panel als Parent hat.
 

klaus

Expert
Licensed User
Longtime User
Ich hab mir dein Programm angesehen.
Tja, da sind etliche 'komische' Sachen drin.

Beiliegend findest Du eine abgeänderte Version die einige Probleme löst.

Die Views die sich mit der ScrollView bewegen sollen müssen sich im internen Panel der ScrollView befinden und nicht auf der Activity.

Für Auswahl und Erfassung musst Du Panels im Main Layout erstellen und die Layouts in die Panels laden.
Die Dim Anweisungen für Views müssen in Global sein und nicht in den Routinen.
Views die sich in einer Layoutdatei befinden dürfen nicht Initialized werden.
Den Rest der Unterschiede rauszufinden überlasse Ich Dir.

Es ist nicht die beste Lösung mit mehreren Panels zu arbeiten aber mit mehreren Activities, aber es funktioniert auch mit Panels.

Für die Variablen SpielerX unw. könnte man auch ein Array benutzen.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo Klaus,

herzlichen Dank für deine Hilfe. Das bringt mich enorm weiter und es wurden auch einige grundsätzliche Dinge geklärt.

Das mit dem Array für die Namen ist klar, aber da es nur maximal 4 Werte sind habe ich mir das geschenkt.
Ich habe schon selber gemerkt, dass einige Bezeichnungen doppelt vergeben waren. Die "komischen Sachen" kommen entweder durch mein rumprobieren, oder weil ich mir in 25 Jahren hobbyprogrammieren als Autodidakt einiges nicht unbedingt richtiges angeeignet habe :sign0013:
Womit ich immer noch Probleme habe, ist das Ansprechen der Panels.
Ich habe im main-Layout einen Toggle-Button hinzugefügt, der ein bestimmtes Panel aus-oder einblenden soll.
Ich erhalte allerdings beim Kompilieren eine Fehlermeldung. Ich habe es nochmal angehängt.

Ich habe trotzdem noch jede Menge Fragen:
- Wie kann ich die Reihenfolge festlegen in der die EditText-Controls angesprochen werden?
- Wie kann ich das Datum in einen EditText auf Gültigkeit prüfen?
- Kann ich Text nur als Label ausgeben oder gibt es noch eine andere Möglichkeit?
- Wie kann ich am Einfachsten ein Array zeilenweise ausgeben?
- Kann ich ein Array direkt speichern?
 

klaus

Expert
Licensed User
Longtime User
pl1Erfassung ist falsch das Panel heisst pnlErfassung !
Du hättest sehen sollen dass pl1Erfassung, im IDE, rot angezeigt wurde, das heisst dass diese View nicht gedimt wurde oder dass der Name falsch ist.

- Wie kann ich die Reihenfolge festlegen in der die EditText-Controls angesprochen werden?
Es ist die Reihenfolge in der Du die EditText Views eingibst. Es gibt keine Möglichkeit dies im Programm zu ändern.

- Wie kann ich das Datum in einen EditText auf Gültigkeit prüfen?
Ein Beispiel ist in der Activity_Create Routine drin.
B4X:
Dim txt As String
Dim tt As Long
txt = "01,04,2012"
Try
   tt = DateTime.DateParse(txt)
Catch
   Msgbox("Falsches Datum", "Fehler")
End Try
- Kann ich Text nur als Label ausgeben oder gibt es noch eine andere Möglichkeit?
Man Text auch mit Canvas.DrawText(Text As String, x As Float, y As Float, Typeface1 As Typeface, TextSize As Float, Color As Int, Align1 As Align Enum) auf eine Bitmap zeichnen.

- Wie kann ich am Einfachsten ein Array zeilenweise ausgeben?
Verstehe leider nicht was Du mit zeilenweise ausgeben meinst. Ausgeben wohin und wie.

- Kann ich ein Array direkt speichern?
In einer Programmzeile nein. Mit einer For / Next Schleife ja. Anstatt einem Array könnte man auch eine List verwenden und die kann man mit einer Programmzeile speichern.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo Klaus, vielen Dank für deine Hilfe.

pl1Erfassung ist falsch das Panel heisst pnlErfassung !
Du hättest sehen sollen dass pl1Erfassung, im IDE, rot angezeigt wurde, das heisst dass diese View nicht gedimt wurde oder dass der Name falsch ist.
Ja sicher habe ich das gesehen, und konnte es mir nicht erklären - auf die Idee mit dem Tippfehler bin ich allerdings nicht gekommen :signOops:
Die bisherigen Grundkenntnisse geben gibt mir jetzt erstmal die Möglichkeit weitere Dinge auszutesten, um so das beste Vorgehen für die Umsetzung meines Programmes zu finden.
 

klaus

Expert
Licensed User
Longtime User
Eine andere Möglichkeit zum Suchen ist folgendes.
In der Dim Zeile auf pnlErfassung klicken um es zu selektionieren, das Wort wird blau angezeigt.
Dann siehst Du rechts kleine hellblaue Linien, das entspricht den Zeilen wo das selektionierte Wort auch aufkommt.
Die Zeil mit dem 'falsch' Wort wird in diesem Fall nicht angezeig.
So habe Ich den Schreibfehler gefunden.

Beste Grüsse.
 
Top