German editierbares Textfeld

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

ich habe ein kleines Programm für den Hausgebrauch erstellt, das Registrier-Nummern für ein Programm von mir erstellt/verwaltet.
Die Dateien werden jeweils als kleine Text-Datei auf meinem Server gespeichert. Das Erstellen, Holen und Anzeigen funktioniert problemlos.
Ich möchte nur noch den Dateiinhalt editieren können - daran hängt es.

Ich habe versucht einen ähnlichen Programmteil von Klaus anzupassen. Vorher war es ein Label jetzt ist es ein Edit-Control.

PS.: damit das Programm funktioniert müssen eigene Serverdaten eingegeben werden.
 

Attachments

  • RegTEST.zip
    13.1 KB · Views: 256

klaus

Expert
Licensed User
Longtime User
Ich möchte nur noch den Dateiinhalt editieren können - daran hängt es.
Woran hängt es, kannst Du näher erklären was nicht funktioniert.

Ich weiss nicht wie Ich es ohne Server testen könnte.

Ich habe mal ins Programm reingeschaut was mich wundert ist dass Du File.WriteList zum schreiben benutzt und File.GetText zum lesen.
Warum nicht liest Du keine List ?
B4X:
Dim lst As List
lst = File.GetText(File.DirDefaultExternal, AktivFile)    ' load the list file into the string
Oder einfacher anstatt eine List zu erstellen und zu speichern könntest du auch einfach Text speichern.
Das kannst Du mit TextWriter und TextReader machen da kannst Du Zeile pro Zeile speichern und zurück lesen.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Ich benutze File.WriteList zum Schreiben, weil mir das für die wenigen Zeilen, die die Datei enthält am einfachsten schien.

Ich benutze File.GetText zum Lesen, weil ich das aus einem anderen Programmteil bei dem du mir geholfen hast (LogDatei) kopiert habe.

Es funktioniert soweit alles, nur das scrollen im Edit klappt nicht.
Ich möchte die vom Server geholte txt-Datei in dem Edit bearbeiten können, auch wenn die länger als das Control ist - also gescrollt werden muss.

Das Speichern der Datei werde ich dann mit dem TextWriter machen.
 

klaus

Expert
Licensed User
Longtime User
Ich nehme an dass Du die Sub BtnN_Click Routine meinst.
Hier hast Du zwei Panels, ein globales PnlBlack und ein locales PnlDaba.
PnlDaba wird auf PnlBlack geladen und PnlBlack wird auf Activity geladen, warum zwei Panels ?
Wenn die Panels grösser als der Bildschirm sind musst Du sie durch eine ScrollView ersetzten.
In diesem Fall brauchst Du gar keine Panels mehr da Du ja Alles im Code zufügst und die ScrollView ein internes Panel hat.

Was Ich nicht gesehen habe ist, wie verwaltest Du diese Panels ?

Ein anderer Punkt: In Sub BtnN_Click fügst Du bei jedem Klick zwei neu Panels hinzu (die oben beschriebenen). Das heisst dass nach 10 Klicks 20 Panels da wären ohne dass Du etwas davon merken würdest weil Du immer die obersten sehen würdest.
Für solche Anzeigen solltest Du mit mehreren Activites arbeiten. Das scheint am Anfang kompliziert ist am Ende aber einfacher. Hatte auch mit Panels angefangen bin dann aber auf Activities umgestiegen was auch die 'normale' Arbeitsweise von Android ist.

- Dieses Projekt SQLiteDB ist ein Beispiel mit der 'alten' Methode mit Panels. Die mit Visible angezeigt oder versteckt werden.
- Das Projekt SQLExample, das im User's Guide inbegriffen ist, ist ein Beispiel mit Activities.
In beiden Projekten findest Du ScrollViews mit EditText Views zum Editieren.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Ich nehme an dass Du die Sub BtnN_Click Routine meinst.
Nein, damit ist alles OK (bis auf deine Hinweise).
Das eine Panel dunkelt den Bildschirm ab, im anderen erfolgen die Eingaben.
Mein Problem liegt beim Anzeigen bzw. Bearbeiten des Dateiinhaltes, nachdem ich diese per FTP geholt habe (im Sub FTPa_DownloadCompleted).

Ein anderer Punkt: In Sub BtnN_Click fügst Du bei jedem Klick zwei neu Panels hinzu (die oben beschriebenen). Das heisst dass nach 10 Klicks 20 Panels da wären ohne dass Du etwas davon merken würdest weil Du immer die obersten sehen würdest.
Für solche Anzeigen solltest Du mit mehreren Activites arbeiten. Das scheint am Anfang kompliziert ist am Ende aber einfacher. Hatte auch mit Panels angefangen bin dann aber auf Activities umgestiegen was auch die 'normale' Arbeitsweise von Android ist.
Vielen Dank für den Hinweis, da werde ich mich doch mal an die Activities wagen...
 

klaus

Expert
Licensed User
Longtime User
Hab jetzt noch ein bisschen tiefer reingeschaut.
Mein Problem liegt beim Anzeigen bzw. Bearbeiten des Dateiinhaltes
Das kommt darauf an wie Du die Daten speicherst.

Wenn Du jeden Inhalt von edt1 bis edt5 in eine Zeile schreibst kannst du sie so wieder zurück lesen und direkt in edt1 bis edt5 wieder einfügen.
Deswegen mein Vorschlag mit TextWriter und TextReader zu arbeiten.
Wenn Du noch anderen Text hinzu fügen willst zum Beispiel bei "erstellt am: " & edt2.Text musst Du diesen Text beim lesen wieder weg machen bevor du edt2 füllst. Ist wahrscheinlich nicht mehr nötig wenn Du die edt Felder direkt füllst.
So kannst Du in FTPa_DownloadCompleted die edt Felder direkt füllen anstatt den kompletten Dateiinhalt in einem extra EditText anzuzeigen.

Wenn Du mit Activities arbeiten willst musst Du den Inhalt von edt1 bis edt5 in processglobalen Variablen zwischenspeichern falls diese Werte in mehr als einer Activity benütigt werden.

In BtnL1_Click hast Du diesen Code:
B4X:
For i=1 To edt5.Text
    SpaltVar.Add("***frei***")
Next
Das kann nur funktionieren wenn edt5.Text eine Zahl ist !
Da musst Du aber die Engabe auf eine Zahl prüfen.

Beste Grüsse.
 
Top